AWS::Lambda::Function Code - AWS CloudFormation

AWS::Lambda::Function Code

Lambda 関数のデプロイパッケージ。すべてのランタイムに対して、Amazon S3 内のオブジェクトの場所を指定できます。Node.js および Python 関数の場合は、テンプレートにインラインで関数コードを指定できます。

Amazon S3 内のデプロイパッケージの変更は、スタックの更新時に自動的には検出されません。関数コードを更新するには、テンプレートでオブジェクトキーまたはバージョンを変更します。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "S3Bucket" : String, "S3Key" : String, "S3ObjectVersion" : String, "ZipFile" : String }

YAML

S3Bucket: String S3Key: String S3ObjectVersion: String ZipFile: String

プロパティ

S3Bucket

ユーザーの関数と同じ AWS リージョンにある Amazon S3 バケット。バケットがある AWS アカウントは異なる場合があります。

必須: 条件付き

タイプ: 文字列

最小: 3

最大: 63

パターン: ^[0-9A-Za-z\.\-_]*(?<!\.)$

Update requires: No interruption

S3Key

デプロイパッケージの Amazon S3 キー。

必須: 条件付き

タイプ: 文字列

最小: 1

最大: 1024

Update requires: No interruption

S3ObjectVersion

バージョニングされたオブジェクトの場合、使用するデプロイパッケージオブジェクトのバージョン。

必須: 条件付き

タイプ: 文字列

最小: 1

最大: 1024

Update requires: No interruption

ZipFile

(Node.js および Python) Lambda 関数のソースコード。このパラメータに関数のソースをインラインで含めると、AWS CloudFormation では、これを index というファイルに配置して圧縮し、デプロイパッケージを作成します。Handler プロパティの場合、ハンドラー識別子の最初の部分は index にする必要があります。("index.handler" など)。

ソースコードには、最大 4,096 文字を含めることができます。JSON の場合は、引用符と、改行 (\n) などの特殊文字はバックスラッシュを使用してエスケープする必要があります。

AWS CloudFormation カスタムリソースと通信する関数を指定する場合、関数を呼び出したカスタムリソースに応答を送信するために独自の関数を作成する必要はありません。AWS CloudFormation は、応答の送信を簡素化する応答モジュール (cfn-response) を提供します。詳細については、「AWS Lambda を AWS CloudFormation に使用する」を参照してください。

必須: 条件付き

タイプ: 文字列

Update requires: No interruption

インライン関数

cfn-response ライブラリを使用するインライン Node.js 関数。

YAML

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) }) }