AWS::Serverless 转换 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

AWS::Serverless 转换

AWS::Serverless 转换是由 CloudFormation 托管的宏,它获取用 Amazon Serverless Application Model (Amazon SAM) 语法编写的整个模板,并将其转换并扩展为兼容的 CloudFormation 模板。有关无服务器应用程序和 Amazon SAM 的更多信息,请参阅 Amazon Lambda Developer Guide 中的部署基于 Lambda 的应用程序和 Amazon Serverless Application Model 开发人员指南 中的 Amazon SAM 资源和属性参考

在以下示例中,模板使用 Amazon SAM 语法简化 Lambda 函数的声明及其执行角色。

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

从模板创建更改集时,CloudFormation 会展开 Amazon SAM 语法,如转换所定义。处理后的模板展开 AWS::Serverless::Function 资源,并声明 Amazon Lambda 函数和执行角色。

{ "Resources": { "MyServerlessFunctionLogicalID": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Code": { "S3Bucket": "testBucket", "S3Key": "mySourceCode.zip" }, "Role": { "Fn::GetAtt": ["FunctionNameRole", "Arn"] }, "Runtime": "nodejs8.10" } }, "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"