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

AWS::Serverless 转换

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

与自定义宏不同,AWS::Serverless 转换不需要任何特殊权限即可使用它,因为它由 AWS CloudFormation 托管。它可以由 AWS CloudFormation 内的任何账户中的模板使用。此外,使用此转换时不会产生任何费用。AWS CloudFormation 在评估顺序和范围方面将 AWS::Serverless 转换视为与任何其他宏相同。有关宏的更多信息,请参阅使用 AWS CloudFormation 宏对模板执行自定义处理

在以下示例中,模板使用 AWS 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'

从模板创建更改集时,AWS CloudFormation 会展开 AWS SAM 语法,如转换所定义。处理后的模板展开 AWS::Serverless::Function 资源,并声明 AWS 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"