メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::Lambda::Function

AWS::Lambda::Function リソースは、イベントに応答してコードを実行できる AWS Lambda (Lambda) 関数を作成します。詳細については、COPY コマンドのリファレンスの「CreateFunction」(AWS Lambda Developer Guide) を参照してください。

構文

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

JSON

Copy
{ "Type" : "AWS::Lambda::Function", "Properties" : { "Code" : Code, "DeadLetterConfig" : DeadLetterConfig, "Description" : String, "Environment" : Environment, "FunctionName" : String, "Handler" : String, "KmsKeyArn" : String, "MemorySize" : Integer, "Role" : String, "Runtime" : String, "Timeout" : Integer, "TracingConfig" : TracingConfig, "VpcConfig" : VPCConfig, "Tags" : [ Resource Tag, ... ] } }

YAML

Copy
Type: "AWS::Lambda::Function" Properties: Code: Code DeadLetterConfig: DeadLetterConfig Description: String Environment: Environment FunctionName: String Handler: String KmsKeyArn: String MemorySize: Integer Role: String Runtime: String Timeout: Integer TracingConfig: TracingConfig VpcConfig: VPCConfig Tags: Resource Tag

プロパティ

Code

Lambda 関数のソースコード。Amazon Simple Storage Service (Amazon S3) バケット内のファイルを指すことも、ソースコードをインラインテキストとして指定することもできます。

Required: Yes

タイプ: AWS Lambda 関数コード

更新に伴う要件: 中断はありません。

DeadLetterConfig

Lambda が処理できないイベントに対処する方法を設定します。デッドレターキュー (DLQ) の設定を指定しない場合、Lambda は最大再試行回数の後、イベントを破棄します。詳細については、AWS Lambda Developer Guide の「デッドレターキュー」を参照してください。

Required: No

Type: AWS Lambda Function DeadLetterConfig

更新に伴う要件: 中断はありません。

Description

関数の説明。

Required: No

Type: String

更新に伴う要件: 中断はありません。

Environment

Lambda がキャッシュして Lambda 関数で使用できるようにするキーと値のペア。テストおよび本稼働環境設定などの設定の変更を、Lambda 関数のソースコードを変更せずに適用するには、環境変数を使用します。

Required: No

Type: AWS Lambda 関数の環境

更新に伴う要件: 中断はありません。

FunctionName

関数の名前。名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID を関数名として使用します。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

必須: いいえ

Type: String

更新に伴う要件: 置換

Handler

Lambda がコードの実行を開始するために呼び出す (ソースコード内の) 関数の名前。詳細については、HandlerAWS Lambda Developer Guide プロパティを参照してください。

注記

Code プロパティで ZipFile プロパティを指定することによってソースコードをインラインテキストとして指定する場合は、ハンドラーとして index.function_name を指定します。

Required: Yes

Type: String

更新に伴う要件: 中断はありません。

KmsKeyArn

Lambda が環境変数値を暗号化および復号化するために使用する AWS Key Management Service (AWS KMS) キーの Amazon リソースネーム (ARN)。

Type: String

必須: いいえ

更新に伴う要件: 中断はありません。

MemorySize

Lambda 関数に割り当てられたメモリ量 (MB)。Lambda はこの値に比例した CPU 能力を割り当てます。詳細については、AWS Lambda Developer Guideの「リソースモデル」を参照してください。

関数のユースケースにより、CPU とメモリの要件が決まります。たとえば、データベース操作に必要なメモリはイメージ処理関数より少ない可能性があります。64 の倍数であり 128 以上の値を指定する必要があります。1536 より大きなサイズを指定することはできません。デフォルト値は 128 MB です。

Required: No

Type: Integer

更新に伴う要件: 中断はありません。

Role

AWS サービスにアクセスするコードを実行するときに Lambda が引き受ける AWS Identity and Access Management (IAM) 実行ロールの Amazon リソースネーム (ARN)。

Required: Yes

Type: String

更新に伴う要件: 中断はありません。

Runtime

アップロードする Lambda 関数のランタイム環境。有効な値については、AWS Lambda Developer GuideRuntime プロパティを参照してください。

Required: Yes

Type: String

更新に伴う要件: 中断はありません。

注記

Node.js 0.10.32 は廃止されたので、今後、Node.js 0.10.32 を使用するテンプレートをロールバックすることはできなくなります。スタックを Node.js 0.10.32 へ更新しようとして更新が失敗した場合、AWS CloudFormation はそれをロールバックできません。

Timeout

Lambda が関数を終了してからの関数の実行時間 (秒)。実行時間はコストに影響を与えるため、この値は予想実行時間に基づいて設定します。デフォルトで、Timeout3 秒に設定されています。詳細については、「 のよくある質問」を参照してください。

Required: No

Type: Integer

更新に伴う要件: 中断はありません。

TracingConfig

Lambda 関数の追跡設定が含まれている親オブジェクトです。デフォルトでは、Mode プロパティが PassThrough に設定されています。有効な値については、AWS Lambda Developer Guide の「TracingConfig」を参照してください。

Required: No

Type: AWS Lambda 関数の TracingConfig

更新に伴う要件: 中断はありません。

VpcConfig

Lambda 関数が VPC のリソースにアクセスする必要がある場合は、Elastic Network Interface (ENI) 設定に使用する VPC 設定を指定します。ENI を使用すると、関数は VPC 内の他のリソースに接続できますが、パブリックインターネットにはアクセスできません。関数でインターネットアクセスが必要である場合 (たとえば、VPC エンドポイントのない AWS サービスにアクセスする場合など) は、VPC 内で Network Address Translation (NAT) インスタンスを設定するか、Amazon Virtual Private Cloud (Amazon VPC) NAT ゲートウェイを使用します。詳細については、Amazon VPC ユーザーガイドの「NAT ゲートウェイ」を参照してください。

注記

このプロパティを指定すると、テンプレート内の別のリソース (セキュリティグループなど) が削除前にアタッチされた ENI を削除することを要求する場合には、AWS CloudFormation でスタックを削除できないことがあります。ec2:DescribeNetworkInterfaces のアクセス権限で AWS CloudFormation を実行することをお勧めします。これにより、AWS CloudFormation が ENI の状態をモニタリングでき、Lambda が ENI を削除するまで待機します (最大 40 分)。

Required: No

Type: AWS Lambda 関数の VpcConfig

更新に伴う要件: 中断はありません。

Tags

この Lambda 関数に対するタグ (キーと値のペア) の任意の設定。

Required: No

Type: AWS CloudFormation Resource Tags

更新に伴う要件: 中断はありません。

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりリソース名が返されます。

次のサンプルでは、Ref 関数は AMILookUp 関数の名前 (MyStack-AMILookUp-NT5EUXTNTXXD など) を返します。

Copy
{ "Ref": "AMILookUp" }

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Arn

Lambda 関数の ARN (arn:aws:lambda:us-west-2:123456789012:MyStack-AMILookUp-NT5EUXTNTXXD など)。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

次の例では、S3 バケットでパッケージ化されたファイルを使用して Lambda 関数を使用します。

JSON

Copy
"AMIIDLookup": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Role": { "Fn::GetAtt" : ["LambdaExecutionRole", "Arn"] }, "Code": { "S3Bucket": "lambda-functions", "S3Key": "amilookup.zip" }, "Runtime": "nodejs4.3", "Timeout": "25", "TracingConfig": { "Mode": "Active" } } }

YAML

Copy
AMIIDLookup: Type: "AWS::Lambda::Function" Properties: Handler: "index.handler" Role: Fn::GetAtt: - "LambdaExecutionRole" - "Arn" Code: S3Bucket: "lambda-functions" S3Key: "amilookup.zip" Runtime: "nodejs4.3" Timeout: "25" TracingConfig: Mode: "Active"

関連リソース

Lambda 関数を AWS CloudFormation カスタムリソースと共に使用する方法の詳細については、「AWS Lambda-backed カスタムリソース」を参照してください。

サンプルテンプレートについては、「AWS Lambda テンプレート」を参照してください。