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

AWS Lambda Powertoolsの紹介

Makky12
July 11, 2023

AWS Lambda Powertoolsの紹介

2023/07/08(土) に開催された「JAWS ミート2023」、および2023/07/11(火) に開催された「JAWS-UG 名古屋 オブザーバビリティ for AWS」における、私の発表「AWS Lambda Powertoolsの紹介」の発表資料です。

#jawsmt #jawsug_nagoya

Makky12

July 11, 2023
Tweet

More Decks by Makky12

Other Decks in Technology

Transcript

  1. © DeNA Co., Ltd. 1 AWS Lambda Powertoolsの紹 介 鈴木

    正樹(株式会社ディー・エヌ・エー)
  2. © DeNA Co., Ltd. 2 鈴木 正樹 ・Mobage のサーバーサイド運用・管理 ・クラウドアーキテクト

    (主にAWS) ・AWS 全般/IaC(AWS CDK, SFW)/TypeScript DeNA エンターテイメント開発事業本部 オープンプラットフォーム 事業部 ゲームプラットフォーム部 サーバーグループ https://github.com/smt7174 @makky12(SUZUKI Masaki@クラウドエンジニア) https://makky12.hatenablog.com © DeNA Co., Ltd. 自己紹介
  3. © DeNA Co., Ltd. 3 アジェンダ AWS Lambda Towertoolって何? Tracer

    について & Demo Metrics について & Demo まとめ & 宣伝 5 4 3 Logger について & Demo 1 2
  4. © DeNA Co., Ltd. 4 1 • 本スライド記載のPowertoolsの仕様は、2023年7月8日現在のものです ◦ 今後、変更になる可能性があります

    • 仕様については、必ずAWS 公式ドキュメントをご確認ください ◦ 内容は十分確認して記載をしておりますが、万が一AWS 公式ドキュメントと 記載が異なる場合、公式ドキュメントが真となります 発表に際して
  5. © DeNA Co., Ltd. 6 • Lambdaの実装・監視などのベストプラクティスをサポートするAWS公式ライブラリ ◦ Python/Java/.net/TypeScript で利用可能

    • 「全ての機能をLambda関数のコードだけで実装できる」点がとても便利 ◦ CloudFormation などで頑張って定義を書く必要がない • 各種設定は環境変数で指定可能(パラメータ引数でも可能) ◦ CloudFormation の場合、共通環境変数に設定すると便利 • ARNが公開されており、Lambda Layerとしての使用も可能 • GitHub:https://github.com/aws-powertools AWS Lambda Powertoolsとは? 1
  6. © DeNA Co., Ltd. 7 • コアユーティリティとして、下記を提供 ◦ Logger:構造化された JSON

    ログを生成するためのロガー機構を提供 ◦ Tracing:Lambdaハンドラーの各種情報、関数単位での実行時間などのトレース ◦ Metrics:Lambda関数内でカスタムメトリクスを作成可能 ◦ Event Handler(Python のみ):API GW/AppSync 等のイベントハンドラを提供 • 全ユーティリティの概要については、下記AWS公式資料の11ページを参照 ◦ https://pages.awscloud.com/rs/112-TZM- 766/images/20221124_24th_ISV_DiveDeepSeminar_Lambda_Powertools.pdf • Event Handler およびコア以外のユーティリティについては、時間の関係で省略します 主な機能(コアユーティリティ) 2
  7. © DeNA Co., Ltd. 8 • ユーティリティの充実度は、言語によって差があります ◦ 一番充実しているのはPython •

    TypeScript に関しては、実装方法の違いでも出来る機能に差があります ◦ ミドルウェア(middy) / クラスデコレータ / 直コーディングなど • これ以降の説明(各コアユーティリティの紹介 & デモ)はTypeScriptで行います ◦ 実装にはクラスデコレータを使用しています ◦ その他の言語 & 実装方法については、公式リファレンスを参照 注意点・お断り 3
  8. © DeNA Co., Ltd. 9 • AWS公式YouTubeチャンネルに、AWSの福井さんがPowertoolsの紹介&デモを実施され ている動画がありますので、ぜひ一度ご視聴ください • https://www.youtube.com/watch?v=KepcwLxDrFM

    • Event Handler およびコア以外のユーティリティの詳細は、上記動画をご参照ください • Event Handler についてはデモあり AWS Lambda Powertoolsとは? 4
  9. © DeNA Co., Ltd. 11 • 構造化されたJSONログを出力するロガー機構を提供 • context情報 (コールドスタート、関数名、メモリサイズなど)

    も出力可能 ◦ injectLambdaContext デコレータを使用 • 出力ログに独自キー&値を追加・削除することも可能 • 下記の処理も可能(いずれもデフォルトではOFF) ◦ リクエスト割合(%)でのデバッグログのサンプリング ◦ event引数の出力(セキュリティの関係) Logger について 1
  10. © DeNA Co., Ltd. 14 1 • X-Rayでのトレーシング機能を提供 • captureLambdaHandlerデコレーターを使用

    • 下記の情報を自動的にトレースデータに追加してくれる • Cold Startの発生有無(アノテーション) • Lambdaハンドラのレスポンス、またはエラー内容(メタデータ) • 独自のアノテーション(注釈)・メタデータの追加も可能 • 実行情報の確認・障害発生時の情報切り分けに便利 Tracer について 1
  11. © DeNA Co., Ltd. 15 1 • ハンドラ以外のLambda関数(=ローカル関数)のトレーシングが可能 • 関数単位で、下記のデータをトレースデータに追加してくれる

    • 関数の実行時間 • 関数の戻り値(メタデータ) • 障害・遅延発生時に「何がボトルネックになっているか」の切り分けに非常に便利 • 同期関数・非同期関数に関係なくトレース可能 • 非同期Lambda ハンドラーは対象外 captureMethodデコレーター について 2
  12. © DeNA Co., Ltd. 18 1 • Lambda関数のコードでカスタムメトリクスを非同期に作成可能(最大100個) • カスタムメトリクスはEMF

    形式 (※) で作成される • メトリクスの一般的な定義間違いのバリデーションが可能 • (例)Unit が Count のメトリクスに文字列値を指定している...など • putMetricData APIより比べ、下記のメリットがある • スロットリングされない(「秒間150回まで」の制限がない) • コスト面で安い ※ Amazon CloudWatch Embedded Matric Format (=埋め込みメトリクスフォーマット) Metrics について 1
  13. © DeNA Co., Ltd. 21 1 •Powertoolsを使用することで、Lambdaの開発・監視が便利になる ◦ 特にコアユーティリティは、Lambda関数の監視に非常に便利 ◦

    Cold Start発生・ボトルネックの切り分け・カスタムメトリクス作成など • Lambda関数だけで実装できるのがメリット ◦ CloudFormation に比べ、シンプルに実装できる • コア以外のユーティリティは、開発を便利にする機能が多い ◦ 特に Python で開発する際は、ぜひ有効に活用しましょう まとめ 1
  14. © DeNA Co., Ltd. 24 Mobage では、エンジニアを募集中です! Mobageでは、サーバーサイドエンジニアを積極募集中です。 Mobageやいろいろなサーバーサイド技術に興味がある方・携わりたい方、 お待ちしています!

    ※Perl って書いてますが、もちろんPerl 以外のエンジニアもOKです! (私も入社するまで Perl は全くやったことなかったです) https://herp.careers/v1/denacareer/TWYBVkIr4FA_