AWS::Serverless
変換
このトピックでは、AWS::Serverless
変換を使用して AWS サーバーレスアプリケーションモデル (AWS SAM) 構文で記述されたテンプレートを処理し、準拠した CloudFormation テンプレートに変換する方法について説明します。
AWS::Serverless
変換の使用に関する詳細については、「GitHub」の「AWS SAM 変換
使用方法
AWS::Serverless
変換を使用するには、CloudFormation テンプレートの最上位レベルで宣言する必要があります。AWS::Serverless
を他のテンプレートセクションに埋め込まれたトランスフォームとして使用することはできません。
宣言では、リテラル文字列 AWS::Serverless-2016-10-31
を値として使用する必要があります。変換値の指定には、パラメータまたは関数は使用できません。
構文
CloudFormation テンプレートでこの変換を宣言するには、次の構文を使用します。
JSON
{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{
...
} }
YAML
Transform: AWS::Serverless-2016-10-31 Resources:
...
AWS::Serverless
変換は追加のパラメータがないスタンドアロン宣言です。
例
次の例では、AWS::Serverless
変換および AWS SAM 構文を使用し、Lambda 関数およびその実行ロールの宣言を簡素化する方法について説明します。
JSON
{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{ "MyFunction":{ "Type":"AWS::Serverless::Function", "Properties":{ "Handler":"
index.handler
", "Runtime":"nodejs20.x
", "CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip
" } } } }
YAML
Transform: AWS::Serverless-2016-10-31 Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler:
index.handler
Runtime:nodejs20.x
CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip
'
テンプレートで変更セットを作成すると、CloudFormation は変換の定義に従って AWS SAM 構文を拡張します。処理されたテンプレートによって AWS::Serverless::Function
リソースが展開され、Lambda 関数および実行ロールが宣言されます。
{ "Resources": { "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "
index.handler
", "Code": { "S3Bucket": "amzn-s3-demo-bucket
", "S3Key": "MySourceCode.zip
" }, "Role": { "Fn::GetAtt": ["MyFunctionRole", "Arn"] }, "Runtime": "nodejs20.x
" } }, "MyFunctionRole": { "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 サーバーレスアプリケーションモデル (AWS SAM) の詳細については、「AWS Serverless Application Model デベロッパーガイド」を参照してください。
AWS SAM 固有のリソースおよびプロパティタイプについては、「AWS Serverless Application Model デベロッパーガイド」の「AWS SAM リソースとプロパティ」を参照してください。
マクロの使用に関する全般情報については、「AWS CloudFormation ユーザーガイド」の「テンプレートマクロを使用して CloudFormation テンプレートでカスタム処理を実行する」を参照してください。