AWS::Serverless
转换
AWS::Serverless
转换是由 CloudFormation 托管的宏,它获取用 Amazon Serverless Application Model(Amazon SAM)语法编写的整个模板,并将其转换并扩展为兼容的 CloudFormation 模板。有关无服务器应用程序和 Amazon SAM 的更多信息,请参阅《Amazon Lambda 开发人员指南》中的部署基于 Lambda 的应用程序、《Amazon Serverless Application Model 开发人员指南》中的 Amazon SAM resource and property reference 以及 GitHub 上的 Amazon SAM transform
在以下示例中,模板使用 Amazon 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 会展开 Amazon SAM 语法,如转换所定义。处理后的模板展开 AWS::Serverless::Function
资源,并声明 Amazon Lambda 函数和执行角色。
{ "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"