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

AWS::Serverless 変換

変換を使用して、サーバーレスアプリケーション用のテンプレート作成を簡素化します。たとえば、次のテンプレートでは、AWS SAM 構文を使用して Lambda 関数とその実行ロールの宣言を簡素化しています。

Copy
Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs4.3 CodeUri: 's3://testBucket/mySourceCode.zip'

テンプレートが送信されると、AWS CloudFormation は変換で定義されたとおりに AWS SAM 構文を展開します。処理されたテンプレートは、Lambda 関数および実行ロールが宣言された AWS::Serverless::Function リソースを展開します。

Copy
{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "S3Key": "mySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs4.3" } }, "FunctionNameRole": { "Type": "AWS::IAM::Role", "Properties": { "ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"], "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": { "Service": ["lambda.amazonaws.com"] } }] } } } } }

AWS CloudFormation は処理済みテンプレートを使用してスタックを作成または更新します。変換値を指定しない場合、AWS CloudFormation でテンプレートが処理されず、AWS SAM 構文はテンプレートの検証に失敗します。

構文

変換の宣言の値には、リテラル文字列である必要があります。変換値の指定には、パラメーターまたは関数は使用できません。次のスニペットは、変換の宣言の例です。

JSON

Copy
"Transform" : "AWS::Serverless-2016-10-31"

YAML

Copy
Transform: "AWS::Serverless-2016-10-31"

テンプレートのステージ

テンプレートのステージは、そのテンプレートがユーザーによって送信されたオリジナルのテンプレートか、AWS CloudFormation によって変換処理されたものかを示します。オリジナルのテンプレートとは、ユーザーがスタックを作成または更新するために送信したものです。処理済みテンプレートとは、AWS CloudFormation によって変換処理された後、スタックの作成または更新に使用されるテンプレートです。スタックの問題のトラブルシューティングには、処理済みテンプレートを使用します。スタックに変換が含まれていない場合は、オリジナルと処理済みのテンプレートは同一です。

AWS CloudFormation コンソールまたは AWS CLI を使用して、スタックのテンプレートのステージを確認できます。

変換を含むスタックの使用

変換を含むスタックを作成または更新するには、変更セットを作成して、それを実行する必要があります。変更セットには、AWS CloudFormation が処理済みテンプレートに基づいて実行するアクションが説明されています。処理中、AWS CloudFormation は AWS SAM 構文を変換で定義された構文に変換します。この処理によって、知らないうちに複数のリソースが追加される可能性があります。たとえば、特別な AWS::Serverless::Function リソースは、AWS Identity and Access Management (IAM) 実行ロールおよび Lambda 関数を追加します。

変換によって発生するすべての変更を確実に認識できるように、AWS CloudFormation では設定変更を使用する必要があります。変更セットを確認した後、それを実行して変更を適用するか、別のものを作成します。

注記

変換によってテンプレートに IAM リソースが追加されることがあります。これらのリソースについて、AWS CloudFormation ではその機能を確認する必要があります。AWS CloudFormation では、どのリソースが追加されるかをテンプレートの処理前に認識することはできないため、変換に IAM リソースが含まれているかどうかによって、変更セットを作成するときにユーザーが IAM の機能を把握しておく必要がある場合があります。こうすることで、変更セットを実行するときに、AWS CloudFormation が IAM リソースを作成する際に必要な機能を持つことができます。

AWS CLI を使用する場合は、package および deploy コマンドを使用して、変換を伴うスタックを起動する際のステップ数を減らすことができます。詳細については、AWS Lambda Developer GuideDeploying Lambda-based Applications を参照してください。