AWS::Lambda::Function - AWS CloudFormation

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

ModeActive に設定し、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」を参照してください。

Arn

関数の Amazon リソースネーム (ARN)。

関数

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