本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本主題說明如何使用AWS::Serverless
轉換來處理以無 AWS 伺服器應用程式模型 (AWS SAM) 語法撰寫的範本,並將其轉換為合規的 CloudFormation 範本。
如需使用AWS::Serverless
轉換的詳細資訊,請參閱 上的AWS SAM 轉換
用量
若要使用AWS::Serverless
轉換,您必須在 CloudFormation 範本的頂層宣告轉換。您無法將 AWS::Serverless
作為內嵌於任何其他範本區段的轉換使用。
宣告必須使用常值字串AWS::Serverless-2016-10-31
作為其值。您不能使用參數或函數來指定轉換值。
語法
若要在 CloudFormation 範本中宣告此轉換,請使用下列語法:
JSON
{
"Transform":"AWS::Serverless-2016-10-31",
"Resources":{
...
}
}
YAML
Transform: AWS::Serverless-2016-10-31
Resources:
...
AWS::Serverless
轉換是沒有其他參數的獨立宣告。
範例
下列範例示範如何使用AWS::Serverless
轉換和 AWS SAM 語法來簡化 Lambda 函數及其執行角色的宣告。
JSON
{
"Transform":"AWS::Serverless-2016-10-31",
"Resources":{
"MyFunction":{
"Type":"AWS::Serverless::Function",
"Properties":{
"Handler":"index.handler
",
"Runtime":"nodejs20.x
",
"CodeUri":"s3://amzn-s3-demo-bucket/MySourceCode.zip
"
}
}
}
}
YAML
Transform: AWS::Serverless-2016-10-31
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs20.x
CodeUri: 's3://amzn-s3-demo-bucket/MySourceCode.zip
'
從範本建立變更集時,CloudFormation AWS SAM 會展開轉換所定義的語法。處理的範本會展開 AWS::Serverless::Function
資源,宣告 Lambda 函數和執行角色。
{
"Resources": {
"MyFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Handler": "index.handler
",
"Code": {
"S3Bucket": "amzn-s3-demo-bucket
",
"S3Key": "MySourceCode.zip
"
},
"Role": {
"Fn::GetAtt": ["MyFunctionRole", "Arn"]
},
"Runtime": "nodejs20.x
"
}
},
"MyFunctionRole": {
"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"]
}
}]
}
}
}
}
}
相關資源
如需無伺服器應用程式和無 AWS 伺服器應用程式模型 (AWS SAM) 的詳細資訊,請參閱 AWS Serverless Application Model 開發人員指南。
如需特定的資源和屬性類型 AWS SAM,請參閱《 AWS Serverless Application Model 開發人員指南》中的AWS SAM 資源和屬性。
如需使用巨集的一般資訊,請參閱AWS CloudFormation 《 使用者指南》中的使用範本巨集在 CloudFormation 範本上執行自訂處理。