目的
AWS Lambdaについての基本を知るため。
AWSを触る上で重要な概念であるサーバレスにも触れる。
Lambdaとは
開発した関数をサーバレスに実行できるサービス。
サーバレスとは
アプリケーション実行環境をマネージドサービスとして提供されたもの。
サービス使用者(私)は、サーバの構築やOSのバージョンアップなどの管理をする必要がない。
Lambdaでは関数さえあれば、サーバを意識することなく実行環境が構築できる。
マネージドとは
サービス提供者(AWS)がインフラの管理や運用を含めてサービスとして提供する形態のこと。
Lambdaの仕組み(簡素)
Lambdaは同時実行リクエストごとに、実行環境の個別のインスタンスをプロビジョニングします。
LambdaをVPCにアタッチしていない場合
実行可能なAZで起動する。
VPCにアタッチする場合
複数のAZでサブネットを指定することで高可用性を担保する。
Lambdaにおける2つの実行方式(非同期・同期)
非同期実行
呼び出し元が処理結果を待機しない方式のこと。
呼び出されたLambdaはリクエストをキューに入れて、呼び出しもとに追加情報のない成功のレスポンスを返却する。
S3のPUT(格納)トリガーをもとにLambdaを起動する場合、
S3は処理を待機せず、Lambdaも結果を返さない。
エラーが発生した場合、デフォルトで2回再試行する。(初回も含めると3回実行する)
設定時は、呼び出しパラメータをEventに設定する。
同期実行
呼び出しもとが処理結果を待機する方式のこと。
Lambdaの金額
関数へのリクエストの数×コードの実行時間×メモリサイズあたりの料金で決まる。
メモリサイズが大きいほど、1ミリ秒あたりの料金が高くなる。
倍のメモリサイズでも実行時間が1/2になれば料金は変わらないということになる。
同時実行数の計算方法
同時実行数 = 1秒あたりの平均リクエスト数*平均リクエスト時間 (秒単位)