AWS::Serverless 转换 - AWS CloudFormation

AWS::Serverless 转换

AWS::Serverless 转换是由 CloudFormation 托管的宏,它获取用 AWS Serverless Application Model(AWS SAM)语法编写的整个模板,并将其转换并扩展为兼容的 CloudFormation 模板。有关无服务器应用程序和 AWS SAM 的更多信息,请参阅《AWS Lambda 开发人员指南》中的部署基于 Lambda 的应用程序、《AWS Serverless Application Model 开发人员指南》中的 AWS SAM resource and property reference 以及 GitHub 上的 AWS SAM transform

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

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

从模板创建更改集时,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": "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"