Ini adalah Panduan Referensi AWS CloudFormation Template baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat Panduan AWS CloudFormation Pengguna.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tansformasi AWS::Serverless
Topik ini menjelaskan cara menggunakan AWS::Serverless
transformasi untuk memproses template yang ditulis dalam sintaks AWS Serverless Application Model (AWS SAM) dan mengubahnya menjadi template yang sesuai. CloudFormation
Untuk informasi selengkapnya tentang penggunaan AWS::Serverless
transformasi, lihat AWS SAM transform
Penggunaan
Untuk menggunakan AWS::Serverless
transformasi, Anda harus mendeklarasikannya di tingkat atas template Anda CloudFormation . Anda tidak dapat menggunakan AWS::Serverless
sebagai perubahan yang tertanam di bagian templat lainnya.
Deklarasi harus menggunakan string literal AWS::Serverless-2016-10-31
sebagai nilainya. Anda tidak dapat menggunakan parameter atau fungsi untuk menentukan nilai perubahan.
Sintaksis
Untuk mendeklarasikan transformasi ini di CloudFormation template Anda, gunakan sintaks berikut:
JSON
{ "Transform":"AWS::Serverless-2016-10-31", "Resources":{
...
} }
YAML
Transform: AWS::Serverless-2016-10-31 Resources:
...
AWS::Serverless
Transformasi adalah deklarasi mandiri tanpa parameter tambahan.
Contoh
Contoh berikut menunjukkan cara menggunakan AWS::Serverless
transformasi dan AWS SAM sintaks untuk menyederhanakan deklarasi fungsi Lambda dan peran pelaksanaannya.
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
'
Saat membuat set perubahan dari template, CloudFormation memperluas AWS SAM sintaks, seperti yang didefinisikan oleh transformasi. Template yang diproses memperluas AWS::Serverless::Function
sumber daya, mendeklarasikan fungsi Lambda dan peran eksekusi.
{ "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"] } }] } } } } }
Menggunakan AWS::Serverless
dengan AWS::LanguageExtensions
Saat menggunakan keduanya AWS::Serverless
dan AWS::LanguageExtensions
mengubah, referensi sumber daya seperti AWS::ApiGateway::Stage
memerlukan sintaks khusus ketika nama panggung diteruskan sebagai nilai NoEcho
non-parameter.
Alih-alih menggunakan AWS SAM sintaks untuk referensi (
), gunakan MyApi
.StageFn::Sub
untuk menghasilkan referensi ID logis. Misalnya, "Ref": {"Fn::Sub":
. Ini membangun ID logis yang benar saat runtime."${
${MyApi
}StageName
}Stage"}
Alasan untuk format khusus ini adalah karena kedua transformasi ini menangani nilai secara berbeda:
-
AWS::LanguageExtensions
menyelesaikan fungsi intrinsik ke nilai aktualnya. -
AWS::Serverless
menciptakan logika yang berbeda IDs tergantung pada apakah ia menerima nilai statis atau fungsi intrinsik.
Sumber daya terkait
Untuk jenis sumber daya dan properti yang spesifik AWS SAM, lihat AWS SAM sumber daya dan properti di Panduan AWS Serverless Application Model Pengembang.
Untuk informasi umum tentang penggunaan makro, lihat Melakukan pemrosesan kustom pada CloudFormation templat dengan makro templat di AWS CloudFormation Panduan Pengguna.