基本設定
- メモリは最小128MBから最大3,008MBまで64MB単位で選択可能
→ 最適なメモリサイズを指定することでコスト最適化が可能 - タイムアウト時間は最長15分まで指定可能
→ タイムアウト時間を超えるLambda関数の実行は全て失敗となる - メモリに比例するCPUが割り当てられる(メモリと独立しての設定は不可)
- Lambda関数の設定情報として環境変数を定義しコード内から参照することで、処理に応じて関数内の変数の値を変更可能
Lambdaレイヤー
複数のLambda関数でコードを共有するための機能
- 複数のLambda関数で用いられる共通機能をレイヤーとして登録すれば、それをLambda関数で利用するレイヤーとして指定するだけで複数のLambda関数を利用出来る
- 1つのLambda関数につきレイヤーを5つまで指定可能
バージョン / エイリアス
バージョン
Lambda関数のバージョンを発行する機能
- 全てのLambda関数には $LATEST という特別なバージョン(常に最新のバージョン)が存在する
- バージョンを発行すると、1から順に付与されたバージョン番号を持つ$LATESTのスナップショットが発行される
- $LATEST以外のバージョンのコードや設定は編集不可
- Lambda関数はバージョンごとにAWSのリソースを一意に特定するためのARNを持つ
→ 例:バージョン2の関数のARN
arn:aws:lambda:aws-region:account-id:function:test:2
エイリアス
Lambda関数の各バージョンに別名を付与する機能
例:開発環境用にDEV、本番環境用にPRODというエイリアスを作成する
arn:aws:lambda:aws-region:account-id:function:test:DEV
arn:aws:lambda:aws-region:account-id:function:test:PROD
DEVにバージョン3、PRODにバージョン2を関連付け、DEVでの動作確認が完了したらDEVエイリアスをバージョン4、PRODエイリアスをバージョンを3に関連付けることで、呼び出す側のコードを変更することなくLambda関数のバージョンをあげることが可能
ポリシー・実行ロール
Lambda関数には以下2つのアクセス権限定義がある
1. Lambda関数ポリシー:Lambda関数へのアクセス権限を定義するもの(リソースベースのポリシー)
2. 実行ロール:Lambda関数からのアクセス権限を定義するもの(Lambda関数に割り当てるIAMロール)
VPCアクセス
Lambda関数からVPC内のEC2インスタンスやRDSインスタンスにアクセスするためには、VPCアクセス設定を行う必要がある
- Lambda関数からアクセスするVPC・サブネット、Lambda関数に割り当てるセキュリティグループを選択
- Lambdaは、Lambda関数の実行時にVPCアクセス設定をもとにENIを作成し、VPC内のリソースへのアクセスを可能にする
→ Lambda関数には、ENIの作成・削除などの権限を持つポリシーを付与したIAMロールを割り当てる必要がある -
AWSLambdaVPCAccessExecutionRole
は、VPCアクセスを行うLambda関数に最低限必要なアクセス権限を定義しているIAMポリシー