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
80

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

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