AWS::Lambda::Function
AWS::Lambda::Function
リソースは、Lambda 関数を作成します。関数を作成するには、デプロイパッケージと実行ロールが必要です。デプロイパッケージには、関数のコードが含まれています。実行ロールにより、AWS サービス (ログをストリーミングするための Amazon CloudWatch
Logs、リクエストをトレースするための AWS X-Ray など) を使用するアクセス許可が関数に付与されます。
構文
AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。
JSON
{ "Type" : "AWS::Lambda::Function", "Properties" : { "Code" :
Code
, "DeadLetterConfig" :DeadLetterConfig
, "Description" :String
, "Environment" :Environment
, "FileSystemConfigs" :[ FileSystemConfig, ... ]
, "FunctionName" :String
, "Handler" :String
, "KmsKeyArn" :String
, "Layers" :[ String, ... ]
, "MemorySize" :Integer
, "ReservedConcurrentExecutions" :Integer
, "Role" :String
, "Runtime" :String
, "Tags" :[ Tag, ... ]
, "Timeout" :Integer
, "TracingConfig" :TracingConfig
, "VpcConfig" :VpcConfig
} }
YAML
Type: AWS::Lambda::Function Properties: Code:
Code
DeadLetterConfig:DeadLetterConfig
Description:String
Environment:Environment
FileSystemConfigs:- FileSystemConfig
FunctionName:String
Handler:String
KmsKeyArn:String
Layers:- String
MemorySize:Integer
ReservedConcurrentExecutions:Integer
Role:String
Runtime:String
Tags:- Tag
Timeout:Integer
TracingConfig:TracingConfig
VpcConfig:VpcConfig
プロパティ
Code
-
関数のコード。
必須: はい
タイプ: Code
Update requires: No interruption
DeadLetterConfig
-
処理に失敗したときに Lambda が非同期イベントを送信するキューまたはトピックを指定するデッドレターキュー設定。詳細については、「デッドレターキュー」を参照してください。
必須: いいえ
タイプ: DeadLetterConfig
Update requires: No interruption
Description
-
関数の説明。
必須: いいえ
タイプ: 文字列
最小:
0
最大:
256
Update requires: No interruption
Environment
-
実行中に関数コードからアクセス可能な環境変数。
必須: いいえ
タイプ: 環境
Update requires: No interruption
FileSystemConfigs
-
Amazon EFS ファイルシステムの接続設定。関数をファイルシステムに接続するには、関数が接続するすべてのアベイラビリティーゾーンでマウントターゲットが使用可能である必要があります。テンプレートに AWS::EFS::MountTarget リソースが含まれている場合は、関数の前にマウントターゲットが作成または更新されるように
DependsOn
属性も指定する必要があります。DependsOn
属性の使用の詳細については、「DependsOn 属性」を参照してください。必須: いいえ
タイプ: FileSystemConfig のリスト
最大:
1
Update requires: No interruption
FunctionName
-
Lambda 関数の名前 (最大 64 文字)。名前を指定しない場合、AWS CloudFormation により名前が生成されます。
名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。
必須: いいえ
タイプ: 文字列
Update requires: Replacement
Handler
-
関数を実行するために Lambda が呼び出すコード内のメソッドの名前。形式にはファイル名を含めます。また、ランタイムに応じて名前空間や他の修飾子を含めることもできます。詳細については、「プログラミングモデル」を参照してください。
必須: はい
タイプ: 文字列
最大:
128
パターン:
[^\s]+
Update requires: No interruption
KmsKeyArn
-
関数の環境変数の暗号化に使用される AWS Key Management Service (AWS KMS) キーの ARN。これを指定しない場合、AWS Lambda はデフォルトのサービスキーを使用します。
必須: いいえ
タイプ: 文字列
パターン:
(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()
Update requires: No interruption
Layers
-
関数の実行環境に追加する関数レイヤーのリスト。その ARN ごとに各レイヤーを指定します (バージョンも含めます)。
必須: いいえ
タイプ: 文字列のリスト
Update requires: No interruption
MemorySize
-
関数がアクセスできるメモリの量。関数のメモリを増やすと、関数の CPU 割り当ても増えます。デフォルト値は 128 MB です。値は 64 MB の倍数にする必要があります。
必須: いいえ
タイプ: 整数
最小:
128
最大:
3008
Update requires: No interruption
ReservedConcurrentExecutions
-
関数用に予約する同時実行数。
必須: いいえ
タイプ: 整数
最小:
0
Update requires: No interruption
Role
-
関数の実行ロールの Amazon リソースネーム (ARN)。
必須: はい
タイプ: 文字列
パターン:
arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+
Update requires: No interruption
Runtime
-
関数のランタイムの識別子。
必須: はい
タイプ: 文字列
許可された値:
dotnetcore2.1 | dotnetcore3.1 | go1.x | java11 | java8 | java8.al2 | nodejs10.x | nodejs12.x | provided | provided.al2 | python2.7 | python3.6 | python3.7 | python3.8 | ruby2.5 | ruby2.7
Update requires: No interruption
Tags
-
関数に適用するタグのリスト。
必須: いいえ
タイプ: Tag のリスト
Update requires: No interruption
Timeout
-
Lambda が関数を停止するまでに、関数に許可する実行時間。デフォルト値は 3 秒です。最大許容値は 900 秒です。
必須: いいえ
タイプ: 整数
最小:
1
Update requires: No interruption
TracingConfig
-
Mode
をActive
に設定し、AWS X-Ray で着信リクエストのサブセットをサンプリングおよびトレースします。必須: いいえ
タイプ: TracingConfig
Update requires: No interruption
VpcConfig
-
VPC 内の AWS リソースへのネットワーク接続の場合は、VPC のセキュリティグループとサブネットのリストを指定します。
必須: いいえ
タイプ: VpcConfig
Update requires: No interruption
戻り値
Ref
このリソースの論理 ID を組み込みの Ref
関数に渡すと、Ref
は次を返します: リソース名。
For more information about using the Ref
function, see Ref.
Fn::GetAtt
Fn::GetAtt
組み込み関数は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。
Fn::GetAtt
組み込み関数の使用方法の詳細については、「Fn::GetAtt」を参照してください。
例
関数
Node.js 関数を作成します。
JSON
"AMIIDLookup": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "LambdaExecutionRole", "Arn" ] }, "Code": { "S3Bucket": "lambda-functions", "S3Key": "amilookup.zip" }, "Runtime": "nodejs12.x", "Timeout": 25, "TracingConfig": { "Mode": "Active" } } }
インライン関数
cfn-response ライブラリを使用するインライン Node.js 関数。
YAML
AWSTemplateFormatVersion: '2010-09-09' Description: Lambda function with cfn-response. Resources: primer: Type: AWS::Lambda::Function Properties: Runtime: nodejs12.x Role: arn:aws:iam::123456789012:role/lambda-role Handler: index.handler Code: ZipFile: | var aws = require('aws-sdk') var response = require('cfn-response') exports.handler = function(event, context) { console.log("REQUEST RECEIVED:\n" + JSON.stringify(event)) // For Delete requests, immediately send a SUCCESS response. if (event.RequestType == "Delete") { response.send(event, context, "SUCCESS") return } var responseStatus = "FAILED" var responseData = {} var functionName = event.ResourceProperties.FunctionName var lambda = new aws.Lambda() lambda.invoke({ FunctionName: functionName }, function(err, invokeResult) { if (err) { responseData = {Error: "Invoke call failed"} console.log(responseData.Error + ":\n", err) } else responseStatus = "SUCCESS" response.send(event, context, responseStatus, responseData) }) } Description: Invoke a function during stack creation. TracingConfig: Mode: Active
VPC 関数
VPC に接続された関数。
YAML
AWSTemplateFormatVersion: '2010-09-09' Description: VPC function. Resources: Function: Type: AWS::Lambda::Function Properties: Handler: index.handler Role: arn:aws:iam::123456789012:role/lambda-role Code: S3Bucket: my-bucket S3Key: function.zip Runtime: nodejs12.x Timeout: 5 TracingConfig: Mode: Active VpcConfig: SecurityGroupIds: - sg-085912345678492fb SubnetIds: - subnet-071f712345678e7c8 - subnet-07fd123456788a036