AWS::Serverless
変換
CloudFormation によってホストされるマクロである AWS::Serverless
変換は、AWS Serverless Application Model (AWS SAM) 構文で記述されたテンプレート全体を受け取り、それを準拠した CloudFormation テンプレートに変換および拡張します。サーバーレスアプリケーションと AWS SAM の詳細については、「AWS Lambda デベロッパーガイド」の「Lambda ベースのアプリケーションのデプロイ」、「AWS Serverless Application Model デベロッパーガイド」の「AWS SAM リソースとプロパティのリファレンス」、およびGitHub の「AWS SAM transform
次の例では、テンプレートは AWS SAM 構文を使用して Lambda 関数とその実行ロールの宣言を簡素化しています。
Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler:
index.handler
Runtime:nodejs20.x
CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip
'
テンプレートから変更セットを作成すると、CloudFormation はトランスフォームの定義に従って AWS SAM 構文を拡張します。処理されたテンプレートは、AWS Lambda 関数および実行ロールが宣言された AWS::Serverless::Function
リソースを展開します。
{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "
index.handler
", "Code": { "S3Bucket": "amzn-s3-demo-bucket
", "S3Key": "MySourceCode.zip
" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs20.x
" } }, "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"] } }] } } } } }
構文
変換の宣言の値には、リテラル文字列である必要があります。変換値の指定には、パラメータまたは関数は使用できません。次のスニペットは、変換の宣言の例です。
JSON
"Transform" : "AWS::Serverless-2016-10-31"
YAML
Transform: "AWS::Serverless-2016-10-31"