タイムアウト時間 (Timeout)
Lambda 関数のタイムアウト時間(最大実行可能時間)を設定するには、Timeout
プロパティで秒単位の指定を行います。
すべての Lambda 関数の Timeout 値をまとめて設定したいときは、Globals
セクションを使います。
環境変数 (Environment)
Lambda 関数の中から参照可能な環境変数を設定するには、Variables
プロパティに、キーと値のペアを指定します。
すべての Lambda 関数に共通で設定する環境変数は、Globals
セクションで定義します。
トリガー設定 (Events)
Lambda 関数を呼び出すためのトリガー(イベント)は、Events
プロパティで定義できます。
Resouces
プロパティと同様に、Events
プロパティの一階層目にはイベントの論理 ID (Logical ID) を記述して、その下にそのイベントの設定を記述します。
一定時間ごとに呼び出す (Type: Schedule)
Lambda 関数を一定時間ごとに呼び出したり、毎日決まった時刻に呼び出したりするには、Type: Schedule
のイベントを設定します。
実際に生成される AWS リソースは EventBridge (CloudWatch Events) ルールです(リソースタイプは AWS::Events::Rule
)。
次の例では、5 分おきに Lambda 関数を呼び出すように設定しています。
生成される AWS::Events::Rule
の物理 ID (Physical ID) は、スタックやリソースの名前(論理 ID)を組み合わせて、次のような名前が自動的に割り当てられます。
物理 ID を明示的に指定したい場合は、Schedule
イベントの Name
プロパティを指定します。
S3 バケットからのイベント (Type: S3)
次の例では、指定したバケット(論理 ID: SrcBucket
)にオブジェクトが作成されたときに Lambda 関数を呼び出すように指定しています。
Lambda のポリシーの設定 (Policies)
SAM で Lambda 関数 (AWS::Lambda::Function
) を生成すると、暗黙的に生成されるロールがデフォルトロールとして設定されます。
Policies
プロパティを使うと、このデフォルトロールに対して任意の管理ポリシーや、インラインポリシーを追加で設定することができます。
なお、Role
プロパティで明示的にロールを指定している場合は、デフォルトロールではなく、そちらのロールを使うことになるので、Policies
プロパティを指定することはできません。
Policies
プロパティには、リスト形式で複数のポリシーを指定することができます。
上記の例では、管理ポリシーとして AWSLambdaInvocation-DynamoDB を指定し、その下に YAML 形式のインラインポリシーを指定しています。
管理プロパティを 1 つだけ指定すればよいのであれば、Policies: AWSLambdaInvocation-DynamoDB
のように一行で記述することができます。
次の例では、SAM ポリシーテンプレート として標準で定義されている S3CrudPolicy を設定し、S3 バケット(論理 ID: MyBucket
)への読み書きを許可しています。
上記では、S3 バケット用に S3CrudPolicy
を使用していますが、DynamoDB の場合も同様の DynamoDBCrudPolicy ポリシーが定義されています。
Lambda の実行ロールの設定 (Role)
SAM で Lambda 関数 (AWS::Lambda::Function
) を生成すると、暗黙的に実行ロールが生成されてアタッチされますが、明示的に作成した IAM ロールを Role
プロパティで指定することもできます。
上記の例では、テンプレート内で定義した IAM ロールを次のように論理 ID で指定しています。
すでに別のスタックなどで生成したロールをアタッチする場合は、次のように ARN で指定することができます。
関連記事