すのふら

すのふら

日々の備忘録

AWS Lambdaについて勉強

AWS 認定ソリューションアーキテクト ? アソシエイトを受けるため、改めてAmazon Web Service(AWS)の勉強をする。

今回もこの本を一読したうえで機能単位で勉強していく。

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書


Lambdaとは

サーバなどのコンピューティングリソースを意識することなく、アプリケーションコードをデプロイしただけで実行することができるサーバーレスなサービス。

アプリケーションを実行するインフラはAWSが管理。
実行時のメモリ容量と実行時間に対して課金される。高可用性と低コストを期待できる。


Lambdaは実行時間に制限がある(15分)。同時実行数は1000まで。

docs.aws.amazon.com

Lambdaは様々なAWSサービスと連携できる。S3にputされたことでキックして実行することもできる。時間起動も可能。

検証環境・本番環境で複数環境が存在する場合、Lambda上でエイリアス情報を付与することでステージ別で分けることができる。

dev.classmethod.jp


Execution Role

LambdaにアタッチされたIAMロールのこと。

LambdaはIAMロールの権限に従って各AWSサービスへアクセスするため、IAMロールによるアクセス制御設計が必要。


ロギング

処理結果のログはCloudWatch Logsに保存される。


Lambdaのパフォーマンス、レイテンシー対策

コンテナ上で動いているため、初回起動はコンテナの起動時間を考慮する必要がある。

起動後一定時間は起動したままとなるので、低レイテンシーを維持できる。
だが、停止した後再度起動するとコンテナの起動時間がかかってしまう。

使用頻度の低い処理は毎回遅くなってしまう。

またLambdaはVPC上に配置することができるが、VPCエンドポイントでElastic Network Interfaceを確立する必要がある。
VPC外にLambdaを構築する場合と比較するとレイテンシーが大きくなる。

レイテンシーを低くするためには Amazon SQSを用いてほっとスタンバイを維持する必要がある。


機密情報を保存するために、環境変数を使用して Lambda 関数を作成する

AWS Key Management Serviceと組み合わせることで、認証キーを暗号化することができる。

Lambda 関数の構成設定の指定に加えて、環境変数を使用して、データベースパスワード、AWS Key Management Service および Lambda コンソールの暗号化ヘルパーを使用して機密情報を保存できます。
機密情報を保存するために、環境変数を使用して Lambda 関数を作成する - AWS Lambda

リージョン内で環境変数を使用する Lambda 関数を初めて作成または更新すると、AWS KMS 内で自動的にデフォルトのサービスキーが作成されます。
このキーは環境変数の暗号化に使用されます。
ただし、暗号化ヘルパーを使用し、Lambda 関数の作成後に KMS を使用して環境を暗号化する場合は、独自の AWS KMS キーを作成し、デフォルトキーの代わりにそのキーを選択する必要があります。
デフォルトキーを選択すると、エラーが表示されます。独自のキーを作成すると、アクセスコントロールを作成、使い回し、無効化、定義できるほか、データの保護に使用される暗号化キーを監査できるなど、より高い柔軟性が得られます。
AWS Lambda 環境変数 - AWS Lambda


Lambdaのスロットリング防止

docs.aws.amazon.com

ある関数で同時実行数が急増すると実行制限で隔離した機能がスロットリングされることを回避する。
つまり、関数は実行されなくなってしまう。

・同期呼び出し: 関数が同期的に呼び出され、スロットリングされた場合、Lambda は 429 エラーを返し、呼び出し元のサービスで再試行が必要になります。
・非同期呼び出し: 非同期的に呼び出された Lambda 関数がスロットリングされると、AWS Lambda はスロットリングされたイベントを最大 6 時間自動的に再試行します (再試行間には遅延があります)。