本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS::Serverless
轉換程序
轉AWS::Serverless
換是由託管的巨集 CloudFormation,會採用以 AWS 無伺服器應用程式模型 (AWS SAM) 語法撰寫的完整範本,並將其轉換為相容 CloudFormation 範本。如需有關無伺服器應用程式和 AWS SAM 的詳細資訊,請參閱開發人員指南中的部署 Lambda 應用程式和AWS Lambda 開發人員指南中的 AWS SAM 資源和屬性參考。 AWS Serverless Application Model
在下列範例中,範本使用 AWS SAM 語法簡化 Lambda 函數及其執行角色的宣告。
Transform: AWS::Serverless-2016-10-31 Resources: MyServerlessFunctionLogicalID: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs18.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": "nodejs18.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"