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 无服务器应用程序模型 开发人员指南 中的 AWS SAM 资源和属性参考

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