このトピックでは、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 テンプレートでカスタム処理を実行する」を参照してください。