Tansformasi AWS::Serverless - AWS CloudFormation

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 onGitHub.

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::ServerlessTransformasi 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 (MyApi.Stage), gunakan Fn::Sub untuk menghasilkan referensi ID logis. Misalnya, "Ref": {"Fn::Sub": "${MyApi}${StageName}Stage"}. Ini membangun ID logis yang benar saat runtime.

Alasan untuk format khusus ini adalah karena kedua transformasi ini menangani nilai secara berbeda:

  • AWS::LanguageExtensionsmenyelesaikan fungsi intrinsik ke nilai aktualnya.

  • AWS::Serverlessmenciptakan logika yang berbeda IDs tergantung pada apakah ia menerima nilai statis atau fungsi intrinsik.

Untuk informasi selengkapnya tentang aplikasi tanpa server dan Model Aplikasi AWS Tanpa Server (AWS SAM), lihat Panduan Pengembang.AWS Serverless Application Model

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.