Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAWS DAYS 2022/Osaka/プログラムは作ったら終わり︖︖ その後が⼤事なんだよ︕︕/20221008_X-Ray_LambdaPowertools

daiki.mori
October 08, 2022
91

JAWS DAYS 2022/Osaka/プログラムは作ったら終わり︖︖ その後が⼤事なんだよ︕︕/20221008_X-Ray_LambdaPowertools

https://jawsugosaka.doorkeeper.jp/events/142046
LTer
1. Yamahara
2. Otani
3. Ikeda
4. Yamashita
5. Hayashida
6. Mori
7. Ito
8. Kazenotani
9. Omuro
10. hamaaaan

daiki.mori

October 08, 2022
Tweet

More Decks by daiki.mori

Transcript

  1. 2 ⾃⼰紹介 ★ Who am I ? 所属・⽒名 株式会社サーバーワークス /

    アプリケーションサービス部 / ディベロップメントサービス1課 / 課⻑ 森 ⼤樹 ([email protected]) キャリア 約20年、SIerでプログラマ/プロジェクトマネージャの実務経験後、 2017年1⽉にサーバーワークスへ⼊社 CICD環境の構築、運⽤などを⾏い、現在に⾄る 今は、Pythonでサーバーレス開発を実施 資格 PMP(Project Management Professional) 資格 趣味 スノーボード/お酒 好きなAWSサービス AWS Lambda/Amazon Connect
  2. 13 • プログラムはシステムのフローが書かれている • 問題がある箇所(例外処理)が書かれている • どんな例外が発⽣しているか明確にかかれている • 処理にどれだけの時間がかかっているか •

    etc… • リリースしてからうまく動いているかを⾒たい︕︕ なぜプログラムは作ったあとが⼤事なのか︖ Why Answer なぜプログラムは作ったあとが⼤事なのか︖
  3. 15 AWS Lambda Powertools & AWS X-Ray SDK AWS Lambda

    Powertools Java, Typescript, Python, .NETが利⽤可能 AWS Lambdaに特化したトレース、構造化ロギング、カスタムメトリクスを利⽤可能 Lambda Layerを使うもしくは、Pypiでインストールして使う あとは、インスタンスを作って使うだけ AWS X-Ray SDK Go, Java, Node.js, Python, .NET, Rubyが利⽤可能 各⾔語のインストールは、こちらから探してください
  4. 16 AWS Lambda Powertools & AWS X-Ray SDK AWS Lambda

    Powertools Java, Typescript, Python, .NETが利⽤可能 AWS Lambdaに特化したトレース、構造化ロギング、カスタムメトリクスを利⽤可能 Lambda Layerを使うもしくは、Pypiでインストールして使う あとは、インスタンスを作って使うだけ AWS X-Ray SDK Go, Java, Node.js, Python, .NET, Rubyが利⽤可能 各⾔語のインストールは、こちらから探してください
  5. 19 AWS Lambda Powertoolsでどんなことができるのか︖ 3つの機能があり、プログラムに埋め込むことで可視化できる👀 トレース (Tracer) どんなルートを通ってきたかを可視化できる 1 メトリクス

    (Metrics) 設定したメトリクスを取得して可視化 3 ロギング (Logging) JSONなどの構造化されたログを出⼒可能 2 詳しくは 次のページへ
  6. 20 AWS Lambda Powertoolsでどんなことができるのか︖ トレース/設定と実装 AWS SAMだと右のような感じで設定する Lambda Handlerではこんな感じ Resources:

    HelloWorldFunction: Type: AWS::Serverless::Function Properties: Runtime: python3.9 Tracing: Active Environment Variables: POWERTOOLS_SERVICE_NAME: trace-demo import json from aws_lambda_powertools import Tracer tracer = Tracer() @tracer.capture_lambda_handler def lambda_handler(event, context): return { “stattusCode”: 200, “body”: json.dumps({ ”message”: “hello world”, }) } 参考元 https://aws.amazon.com/jp/builders-flash/202204/lambda-powertools-python-2/?awsf.filter-name=*all
  7. 22 AWS Lambda Powertoolsでどんなことができるのか︖ ロギング/設定と実装 参考元 https://aws.amazon.com/jp/builders-flash/202205/lambda-powertools-python-3/?awsf.filter-name=*all Resources: HelloWorldFunction: Type:

    AWS::Serverless::Function Properties: ... Environment Variables: POWERTOOLS_SERVICE_NAME: trace-demo LOG_LEVEL: INFO from aws_lambda_powertools import Logger logger = Logger() @logger.inject_lambda_context def lambda_handler(event, context): logger.info(“start handler!”) ...
  8. 23 AWS Lambda Powertoolsでどんなことができるのか︖ ロギング/結果 (CloudWatch Logs) 参考元 https://aws.amazon.com/jp/builders-flash/202205/lambda-powertools-python-3/?awsf.filter-name=*all {

    "level": "INFO", "location": "lambda_handler:8", "message": "start handler!", "timestamp": "2022-03-25 07:25:54,563+0000", "service": "logger-demo", "cold_start": true, "function_name": "logger-demo-LoggerDemoFunction-xxxxxxxxxxx", "function_memory_size": "128", "function_arn": "arn:aws:lambda:us-west-2:xxxxxxxxxxxx:function:logger-demo-LoggerDemoFunc-xxxxxxxx", "function_request_id": "9c5a35c7-552d-46f1-a6a5-3a03a5153ff4", "xray_trace_id": "1-623d6e82-6dd0ea50736a04742a5ae904" }
  9. 24 AWS Lambda Powertoolsでどんなことができるのか︖ メトリクス/設定と実装 参考元 https://aws.amazon.com/jp/builders-flash/202207/lambda-powertools-python-4/?awsf.filter-name=*all Resources: HelloWorldFunction: Type:

    AWS::Serverless::Function Properties: ... Environment Variables: POWERTOOLS_SERVICE_NAME: metrics-demo POWERTOOLS_METRICS_NAMESPACE: MetricsDemoApp from aws_lambda_powertools import Metrics from aws_lambda_powertools.metrics import MetricUnit metrics = Metrics() @metrics.log_metrics def lambda_handler(event, context): metrics.add_metric(name=“SuccessfulCalling”, unit=MetricUnit.Count, value=1) ...
  10. 25 AWS Lambda Powertoolsでどんなことができるのか︖ メトリクス/結果 (CloudWatch Logs) { "_aws": {

    "Timestamp": 1654233601233, "CloudWatchMetrics": [ { "Namespace": "MetricsDemoApp", "Dimensions": [ [ "service" ] ], "Metrics": [ { "Name": "SuccessfulCalling", "Unit": "Count" } ] } ] }, "service": "metrics-demo", "SuccessfulCalling": [ 1 ] } 参考元 https://aws.amazon.com/jp/builders-flash/202207/lambda-powertools-python-4/?awsf.filter-name=*all