Slide 1

Slide 1 text

© DeNA Co., Ltd. 1 AWS Lambda Powertoolsの紹 介 鈴木 正樹(株式会社ディー・エヌ・エー)

Slide 2

Slide 2 text

© 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. 自己紹介

Slide 3

Slide 3 text

© DeNA Co., Ltd. 3 アジェンダ AWS Lambda Towertoolって何? Tracer について & Demo Metrics について & Demo まとめ & 宣伝 5 4 3 Logger について & Demo 1 2

Slide 4

Slide 4 text

© DeNA Co., Ltd. 4 1 ● 本スライド記載のPowertoolsの仕様は、2023年7月8日現在のものです ○ 今後、変更になる可能性があります ● 仕様については、必ずAWS 公式ドキュメントをご確認ください ○ 内容は十分確認して記載をしておりますが、万が一AWS 公式ドキュメントと 記載が異なる場合、公式ドキュメントが真となります 発表に際して

Slide 5

Slide 5 text

© DeNA Co., Ltd. 5 1. AWS Lambda Powertoolsって何?

Slide 6

Slide 6 text

© 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

Slide 7

Slide 7 text

© 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

Slide 8

Slide 8 text

© DeNA Co., Ltd. 8 ● ユーティリティの充実度は、言語によって差があります ○ 一番充実しているのはPython ● TypeScript に関しては、実装方法の違いでも出来る機能に差があります ○ ミドルウェア(middy) / クラスデコレータ / 直コーディングなど ● これ以降の説明(各コアユーティリティの紹介 & デモ)はTypeScriptで行います ○ 実装にはクラスデコレータを使用しています ○ その他の言語 & 実装方法については、公式リファレンスを参照 注意点・お断り 3

Slide 9

Slide 9 text

© DeNA Co., Ltd. 9 ● AWS公式YouTubeチャンネルに、AWSの福井さんがPowertoolsの紹介&デモを実施され ている動画がありますので、ぜひ一度ご視聴ください ● https://www.youtube.com/watch?v=KepcwLxDrFM ● Event Handler およびコア以外のユーティリティの詳細は、上記動画をご参照ください ● Event Handler についてはデモあり AWS Lambda Powertoolsとは? 4

Slide 10

Slide 10 text

© DeNA Co., Ltd. 10 2. Logger について

Slide 11

Slide 11 text

© DeNA Co., Ltd. 11 ● 構造化されたJSONログを出力するロガー機構を提供 ● context情報 (コールドスタート、関数名、メモリサイズなど) も出力可能 ○ injectLambdaContext デコレータを使用 ● 出力ログに独自キー&値を追加・削除することも可能 ● 下記の処理も可能(いずれもデフォルトではOFF) ○ リクエスト割合(%)でのデバッグログのサンプリング ○ event引数の出力(セキュリティの関係) Logger について 1

Slide 12

Slide 12 text

© DeNA Co., Ltd. 12 Demo Demo 2

Slide 13

Slide 13 text

© DeNA Co., Ltd. 13 3. Tracer について

Slide 14

Slide 14 text

© DeNA Co., Ltd. 14 1 ● X-Rayでのトレーシング機能を提供 ● captureLambdaHandlerデコレーターを使用 ● 下記の情報を自動的にトレースデータに追加してくれる ● Cold Startの発生有無(アノテーション) ● Lambdaハンドラのレスポンス、またはエラー内容(メタデータ) ● 独自のアノテーション(注釈)・メタデータの追加も可能 ● 実行情報の確認・障害発生時の情報切り分けに便利 Tracer について 1

Slide 15

Slide 15 text

© DeNA Co., Ltd. 15 1 ● ハンドラ以外のLambda関数(=ローカル関数)のトレーシングが可能 ● 関数単位で、下記のデータをトレースデータに追加してくれる ● 関数の実行時間 ● 関数の戻り値(メタデータ) ● 障害・遅延発生時に「何がボトルネックになっているか」の切り分けに非常に便利 ● 同期関数・非同期関数に関係なくトレース可能 ● 非同期Lambda ハンドラーは対象外 captureMethodデコレーター について 2

Slide 16

Slide 16 text

© DeNA Co., Ltd. 16 1 Demo 3 Demo

Slide 17

Slide 17 text

© DeNA Co., Ltd. 17 4. Metrics について

Slide 18

Slide 18 text

© DeNA Co., Ltd. 18 1 ● Lambda関数のコードでカスタムメトリクスを非同期に作成可能(最大100個) ● カスタムメトリクスはEMF 形式 (※) で作成される ● メトリクスの一般的な定義間違いのバリデーションが可能 ● (例)Unit が Count のメトリクスに文字列値を指定している...など ● putMetricData APIより比べ、下記のメリットがある ● スロットリングされない(「秒間150回まで」の制限がない) ● コスト面で安い ※ Amazon CloudWatch Embedded Matric Format (=埋め込みメトリクスフォーマット) Metrics について 1

Slide 19

Slide 19 text

© DeNA Co., Ltd. 19 1 Demo 2 Demo

Slide 20

Slide 20 text

© DeNA Co., Ltd. 20 5. まとめ & 宣伝

Slide 21

Slide 21 text

© DeNA Co., Ltd. 21 1 ●Powertoolsを使用することで、Lambdaの開発・監視が便利になる ○ 特にコアユーティリティは、Lambda関数の監視に非常に便利 ○ Cold Start発生・ボトルネックの切り分け・カスタムメトリクス作成など ● Lambda関数だけで実装できるのがメリット ○ CloudFormation に比べ、シンプルに実装できる ● コア以外のユーティリティは、開発を便利にする機能が多い ○ 特に Python で開発する際は、ぜひ有効に活用しましょう まとめ 1

Slide 22

Slide 22 text

© DeNA Co., Ltd. 22 DeNA ENGINEERING DeNAのエンジニアの技術・文化・チーム等を伝えるポータルサイトです。 様々な技術発信や、カルチャーの紹介をしています。

Slide 23

Slide 23 text

© DeNA Co., Ltd. 23 DeNA Engineering 🔎 DeNAについてもっと知りたい方は 勉強会やブログなどの最新情報を得るには @DeNAxTech

Slide 24

Slide 24 text

© DeNA Co., Ltd. 24 Mobage では、エンジニアを募集中です! Mobageでは、サーバーサイドエンジニアを積極募集中です。 Mobageやいろいろなサーバーサイド技術に興味がある方・携わりたい方、 お待ちしています! ※Perl って書いてますが、もちろんPerl 以外のエンジニアもOKです! (私も入社するまで Perl は全くやったことなかったです) https://herp.careers/v1/denacareer/TWYBVkIr4FA_

Slide 25

Slide 25 text

© DeNA Co., Ltd. 25