

Ini adalah *Panduan Referensi CloudFormation Template* baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tansformasi `AWS::Serverless`
<a name="transform-aws-serverless"></a>

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](https://github.com/aws/serverless-application-model) onGitHub.

## Penggunaan
<a name="aws-serverless-usage"></a>

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
<a name="aws-serverless-syntax"></a>

Untuk mendeklarasikan transformasi ini di CloudFormation template Anda, gunakan sintaks berikut:

#### JSON
<a name="aws-serverless-syntax.json"></a>

```
{
  "Transform":"AWS::Serverless-2016-10-31",
  "Resources":{
    {{...}}
  }
}
```

#### YAML
<a name="aws-serverless-syntax.yaml"></a>

```
Transform: AWS::Serverless-2016-10-31
Resources:
  {{...}}
```

`AWS::Serverless`Transformasi adalah deklarasi mandiri tanpa parameter tambahan.

## Contoh
<a name="aws-serverless-examples"></a>

Contoh berikut menunjukkan cara menggunakan `AWS::Serverless` transformasi dan AWS SAM sintaks untuk menyederhanakan deklarasi fungsi Lambda dan peran pelaksanaannya.

### JSON
<a name="aws-serverless-example.json"></a>

```
{
  "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
<a name="aws-serverless-example.yaml"></a>

```
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`
<a name="aws-serverless-language-extensions"></a>

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::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
<a name="aws-serverless-related-resources"></a>

[Untuk informasi selengkapnya tentang aplikasi tanpa server dan Model Aplikasi AWS Tanpa Server (AWS SAM), lihat Panduan Pengembang.AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)

Untuk jenis sumber daya dan properti yang spesifik AWS SAM, lihat [AWS SAM sumber daya dan properti](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-resources-and-properties.html) di *Panduan AWS Serverless Application Model Pengembang*.

Untuk informasi umum tentang penggunaan makro, lihat [Melakukan pemrosesan kustom pada CloudFormation templat dengan makro templat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) di *AWS CloudFormation Panduan Pengguna*.