

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.

# Transformasi referensi
<a name="transform-reference"></a>

Transformasi adalah makro yang dihosting oleh. CloudFormation Tidak seperti makro kustom, transformasi tidak memerlukan izin khusus untuk menggunakannya karena di-hosting oleh CloudFormation. Transformasi dapat digunakan dalam templat dengan akun apapun dalam CloudFormation. Juga, tidak ada biaya yang dikeluarkan saat menggunakan transformasi. CloudFormation memperlakukan transformasi sama seperti makro lainnya dalam hal urutan evaluasi dan ruang lingkup.

Untuk informasi selengkapnya tentang cara kerja makro, lihat [Menggunakan CloudFormation makro untuk melakukan pemrosesan kustom pada templat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) di *AWS CloudFormation Panduan Pengguna*.

Anda dapat menggunakan transformasi berikut di CloudFormation template Anda.

**Topics**
+ [Tansformasi `AWS::CodeDeployBlueGreen`](transform-aws-codedeploybluegreen.md)
+ [Tansformasi `AWS::Include`](transform-aws-include.md)
+ [Tansformasi `AWS::LanguageExtensions`](transform-aws-languageextensions.md)
+ [Tansformasi `AWS::SecretsManager`](transform-aws-secretsmanager.md)
+ [Tansformasi `AWS::Serverless`](transform-aws-serverless.md)
+ [Tansformasi `AWS::ServiceCatalog`](transform-aws-servicecatalog.md)

# Tansformasi `AWS::CodeDeployBlueGreen`
<a name="transform-aws-codedeploybluegreen"></a>

Topik ini menjelaskan cara menggunakan `AWS::CodeDeployBlueGreen` transformasi untuk mengaktifkan blue/green penerapan ECS melalui CodeDeploy tumpukan Anda.

*Untuk informasi selengkapnya, lihat [Melakukan blue/green penerapan ECS melalui CodeDeploy penggunaan CloudFormation di Panduan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html) Pengguna.AWS CloudFormation *

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

Untuk menggunakan `AWS::CodeDeployBlueGreen` transformasi, Anda harus mendeklarasikannya di tingkat atas template Anda CloudFormation . Anda tidak dapat menggunakan `AWS::CodeDeployBlueGreen` sebagai perubahan yang tertanam di bagian templat lainnya.

Nilai untuk pernyataan perubahan harus berupa literal string. Anda tidak dapat menggunakan parameter atau fungsi untuk menentukan nilai perubahan.

### Sintaksis
<a name="aws-codedeploybluegreen-syntax"></a>

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

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

```
{
  "Transform":[
    "AWS::CodeDeployBlueGreen"
  ],
  "Resources":{
    ...
  }
}
```

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

```
Transform:
  - 'AWS::CodeDeployBlueGreen'
Resources:
  ...
```

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

## Sumber daya terkait
<a name="aws-codedeploybluegreen-related-resources"></a>

*Untuk contoh CloudFormation template lengkap yang dapat Anda gunakan untuk mengaktifkan penerapan biru/hijau ECS di tumpukan Anda, lihat contoh templat penerapan [biru/hijau](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green-template-example.html) di Panduan Pengguna.AWS CloudFormation *

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

# Tansformasi `AWS::Include`
<a name="transform-aws-include"></a>

Topik ini menjelaskan cara menggunakan `AWS::Include` transformasi untuk menyisipkan konten boilerplate ke dalam template Anda CloudFormation .

`AWS::Include`Ini adalah CloudFormation makro yang, ketika direferensikan dalam template tumpukan Anda, menyisipkan konten file yang ditentukan di lokasi transformasi dalam template saat Anda membuat atau memperbarui tumpukan menggunakan set perubahan. Fungsi `AWS::Include` berperilaku serupa dengan `include`, `copy`, atau `import` terarah dalam bahasa pemrograman.

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

Anda dapat menggunakan `AWS::Include` transformasi di mana saja dalam CloudFormation template kecuali di bagian parameter template atau versi template. Misalnya, Anda dapat menggunakan `AWS::Include` di bagian pemetaan.

### Sintaks pada tingkat puncak templat
<a name="aws-include-syntax-top-level"></a>

Untuk mendeklarasikan transformasi ini di tingkat atas CloudFormation template Anda, sebagai `Transform` bagian, gunakan sintaks berikut:

#### JSON
<a name="aws-include-syntax-top-level.json"></a>

```
{
  "Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  },
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-include-syntax-top-level.yaml"></a>

```
Transform:
  Name: AWS::Include
  Parameters:
    Location: 's3://amzn-s3-demo-bucket/MyFileName.yaml'
Resources:
  ...
```

### Sintaks ketika transformasi tertanam dalam bagian dari templat
<a name="aws-include-syntax-within-section"></a>

Untuk mendeklarasikan transformasi ini dalam bagian CloudFormation template Anda, gunakan fungsi `Fn::Transform` intrinsik dan sintaks berikut:

#### JSON
<a name="aws-include-syntax-within-section.json"></a>

```
{
  "Fn::Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  }
}
```

#### YAML
<a name="aws-include-syntax-within-section.yaml"></a>

```
Fn::Transform:
  Name: AWS::Include
  Parameters:
    Location: s3://amzn-s3-demo-bucket/MyFileName.yaml
```

Untuk informasi selengkapnya, lihat [`Fn::Transform`](intrinsic-function-reference-transform.md).

### Parameter
<a name="aws-include-parameters"></a>

`Location`

Lokasinya adalah URI Amazon S3, dengan nama file tertentu di bucket S3. Misalnya, `s3://amzn-s3-demo-bucket/MyFile.yaml`.

## Pertimbangan-pertimbangan
<a name="aws-include-considerations"></a>

Ketika menggunakan `AWS::Include`, perhatikan pertimbangan berikut. *Untuk pertimbangan selengkapnya tentang penggunaan makro, lihat [Pertimbangan Macro](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros-overview.html#template-macros-considerations) di Panduan Pengguna.AWS CloudFormation *
+ Saat ini kami mendukung Amazon S3 URI, tetapi tidak ada format Amazon S3 lainnya (seperti Amazon S3 ARN). Itu harus ember Amazon S3, sebagai lawan dari sesuatu seperti repositori. GitHub 
+ Siapa pun yang memiliki akses ke URL Amazon S3 dapat menyertakan cuplikan di template mereka.
+ Cuplikan template Anda harus JSON yang valid.
+ Cuplikan template Anda harus berupa objek nilai kunci yang valid, misalnya,. `"KeyName": "keyValue"`
+ Anda tidak dapat menggunakan `AWS::Include` untuk mereferensi cuplikan templat yang juga menggunakan `AWS::Include`.
+ Jika cuplikan Anda berubah, tumpukan Anda tidak secara otomatis mengambil perubahan tersebut. Untuk mendapatkan perubahan tersebut, Anda harus memperbarui tumpukan dengan cuplikan yang diperbarui. Jika Anda memperbarui tumpukan Anda, pastikan cuplikan yang disertakan tidak berubah tanpa sepengetahuan Anda. Untuk memverifikasi sebelum memperbarui stack, periksa set perubahan.
+ Saat membuat templat dan cuplikan, Anda dapat mencampur bahasa templat YAML dan JSON.
+ Saat ini kami tidak mendukung penggunaan notasi singkat untuk cuplikan YAML.
+ Anda dapat menyediakan replikasi lintas wilayah Amazon S3 URI dengan. `AWS::Include` Pastikan Anda memeriksa nama bucket Amazon S3 saat mengakses objek replikasi lintas wilayah. Untuk informasi selengkapnya, lihat [Mereplikasi objek di dalam dan di seluruh Wilayah](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) di Panduan *Pengguna Amazon S3*.

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

Contoh berikut menunjukkan bagaimana menggunakan `AWS::Include` transformasi untuk mengeksekusi pegangan kondisi tunggu. Ganti *amzn-s3-demo-bucket* dengan nama bucket Anda yang sebenarnya. 

Pertama, simpan file YAMAL bernama `single_wait_condition.yaml` di bucket S3 Anda dengan konten berikut:

```
MyWaitCondition:
  Type: AWS::CloudFormation::WaitCondition
  Properties:
    Handle: !Ref MyWaitHandle
    Timeout: '4500'
```

Anda kemudian dapat mereferensikan file ini menggunakan format JSON atau YAMAL.

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

```
{
   "Resources": {
      "MyWaitHandle": {
         "Type": "AWS::CloudFormation::WaitConditionHandle"
      },
      "Fn::Transform": {
         "Name": "AWS::Include",
         "Parameters": {
            "Location": "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
         }
      }
   }
}
```

### YAML
<a name="aws-include-example.yaml"></a>

```
Resources:
  MyWaitHandle:
    Type: AWS::CloudFormation::WaitConditionHandle
  Fn::Transform:
    Name: AWS::Include
    Parameters:
      Location: "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
```

Untuk informasi selengkapnya, lihat [Membuat kondisi tunggu di CloudFormation templat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html) di *Panduan AWS CloudFormation Pengguna*.

# Tansformasi `AWS::LanguageExtensions`
<a name="transform-aws-languageextensions"></a>

Topik ini menjelaskan cara menggunakan `AWS::LanguageExtensions` transformasi untuk mengaktifkan fungsi dan kemampuan tambahan yang tidak tersedia secara default. 

`AWS::LanguageExtensions`Ini adalah CloudFormation makro yang, ketika direferensikan dalam template tumpukan Anda, memperbarui fungsi intrinsik apa pun yang ditentukan oleh transformasi ke nilai yang diselesaikan dalam template saat Anda membuat atau memperbarui tumpukan menggunakan set perubahan. 

Dengan menyertakan transformasi ini dalam CloudFormation template Anda, Anda dapat mengakses fitur tambahan, seperti`Fn::ForEach`, yang memungkinkan operasi yang lebih maju seperti iterasi. Anda juga dapat menggunakan fungsi intrinsik di tempat-tempat di mana mereka biasanya tidak diizinkan, seperti dalam `Ref` dan `Fn::GetAtt` fungsi.

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

Untuk menggunakan `AWS::LanguageExtensions` transformasi, Anda harus mendeklarasikannya di tingkat atas template Anda CloudFormation . Anda tidak dapat menggunakan `AWS::LanguageExtensions` sebagai perubahan yang tertanam di bagian templat lainnya.

Deklarasi harus menggunakan string literal `AWS::LanguageExtensions` sebagai nilainya. Anda tidak dapat menggunakan parameter atau fungsi untuk menentukan nilai perubahan.

### Sintaksis
<a name="aws-languageextensions-syntax"></a>

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

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

```
{
  "Transform":"AWS::LanguageExtensions",
  "Resources":{
    ...
  }
}
```

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

```
Transform: AWS::LanguageExtensions
Resources:
  ...
```

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

## Support untuk fungsi tambahan
<a name="aws-languageextensions-supported-functions"></a>

`AWS::LanguageExtensions`Transformasi mendukung fungsi tambahan berikut:
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

## Pertimbangan-pertimbangan
<a name="aws-languageextensions-considerations"></a>

Saat menggunakan `AWS::LanguageExtensions` transformasi, ingatlah pertimbangan berikut:
+ Saat Anda memperbarui tumpukan yang menggunakan `AWS::LanguageExtensions` transformasi, sebaiknya Anda tidak menggunakan opsi Gunakan **templat yang ada** di CloudFormation konsol, atau opsi baris perintah yang setara`--use-previous-template`. `AWS::LanguageExtensions`Transformasi menyelesaikan parameter ke nilai literal selama pemrosesan. Saat Anda CloudFormation menggunakan`--use-previous-template`, gunakan templat yang diproses ini dengan nilai literal lama, mencegah nilai parameter baru dan pembaruan parameter Systems Manager diterapkan. Sebagai gantinya, berikan template asli untuk memastikan parameter diselesaikan kembali dengan nilai saat ini.
+ Sintaks YAMAL bentuk pendek tidak didukung dalam template untuk fungsi intrinsik yang hanya tersedia dalam transformasi. `AWS::LanguageExtensions` Gunakan referensi eksplisit untuk fungsi-fungsi ini. Misalnya, gunakan `Fn::Length` sebagai ganti dari `!Length`.
+  AWS SAM CLI saat ini tidak mendukung fungsi `Fn::ForEach` intrinsik transformasi. `AWS::LanguageExtensions`
+ Jika Anda menggunakan beberapa transformasi, gunakan format daftar. Jika Anda menggunakan makro kustom, place AWS-provided transforms setelah makro kustom Anda. Jika Anda menggunakan kedua `AWS::LanguageExtensions` dan `AWS::Serverless` transformasi, `AWS::LanguageExtensions` transformasi harus datang sebelum `AWS::Serverless` transformasi dalam daftar.
+ Fungsi dan atribut yang disediakan oleh `AWS::LanguageExtensions` transformasi hanya didukung di`Resources`,`Conditions`, dan `Outputs` bagian template Anda.

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

Contoh berikut menunjukkan bagaimana menggunakan `AWS::LanguageExtensions` transformasi untuk menggunakan fungsi `Fn::Length` intrinsik, yang ditentukan oleh transformasi.

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

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::LanguageExtensions",
    "Parameters": {
        "QueueList": {
            "Type": "CommaDelimitedList"
        },
        "QueueNameParam": {
            "Description": "Name for your SQS queue",
            "Type": "String"
        }
    },
    "Resources": {
        "Queue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
                "QueueName": {
                    "Ref": "QueueNameParam"
                },
                "DelaySeconds": {
                    "Fn::Length": {
                        "Ref": "QueueList"
                    }
                }
            }
        }
    }
}
```

### YAML
<a name="aws-languageextensions-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  QueueList:
    Type: CommaDelimitedList
  QueueNameParam:
    Description: Name for your SQS queue
    Type: String
Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref QueueNameParam
      DelaySeconds:
        'Fn::Length': !Ref QueueList
```

## Sumber daya terkait
<a name="aws-languageextensions-related-resources"></a>

Untuk contoh lainnya, lihat topik berikut.
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md)

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

# `Fn::FindInMap enhancements`
<a name="intrinsic-function-reference-findinmap-enhancements"></a>

`AWS::LanguageExtensions`Transformasi meningkatkan fungsionalitas fungsi `Fn::FindInMap` intrinsik dalam template. CloudFormation 

`Fn::FindInMap`Fungsi ini digunakan untuk mengambil nilai dari pemetaan yang didefinisikan di `Mappings` bagian template. CloudFormation Namun, `Fn::FindInMap` fungsi standar memiliki keterbatasan, seperti ketidakmampuan untuk menangani pemetaan yang hilang atau menggunakan `Fn::FindInMap` fungsi dengan beberapa fungsi intrinsik yang tertanam di dalamnya.

`AWS::LanguageExtensions`Transformasi mengatasi keterbatasan ini dengan memperkenalkan penyempurnaan berikut:
+ **Dukungan nilai default** - Anda dapat menentukan nilai default yang akan dikembalikan jika pemetaan tidak ditemukan.
+ **Dukungan fungsi intrinsik** — Anda juga dapat menggunakan berbagai fungsi intrinsik yang lebih luas untuk menentukan bidang `Fn::FindInMap` daripada dengan fungsi standar. `Fn::FindInMap`

## Pernyataan
<a name="intrinsic-function-reference-findinmap-enhancements-declaration"></a>

### JSON
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.json"></a>

```
{ "Fn::FindInMap" : [
    "MapName",
    "TopLevelKey",
    "SecondLevelKey",
    {"DefaultValue": "DefaultValue"}
  ]
}
```

### YAML
<a name="intrinsic-function-reference-findinmap-enhancements-syntax.yaml"></a>

Sintaks untuk nama fungsi penuh:

```
Fn::FindInMap:
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

Sintaks untuk bentuk pendek:

```
!FindInMap
  - MapName
  - TopLevelKey
  - SecondLevelKey
  - DefaultValue: DefaultValue
```

## Parameter
<a name="intrinsic-function-reference-findinmap-enhancements-parameters"></a>

DefaultValue  <a name="DefaultValue"></a>
Nilai yang `Fn::FindInMap` akan menyelesaikan jika tidak `TopLevelKey` and/or `SecondLevelKey` dapat ditemukan dari `MapName` peta. Bidang ini bersifat opsional.

Semua parameter `MapName``TopLevelKey`,`SecondLevelKey`,, dan `DefaultValue` dapat menjadi fungsi intrinsik selama dapat menyelesaikan ke nilai yang valid selama transformasi.

## Contoh
<a name="w2aac28c16c20c15"></a>

Contoh berikut menunjukkan cara menentukan bidang `Fn::FindInMap` saat Anda menambahkan `AWS::LanguageExtensions` transformasi.

### Menggunakan nilai default
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Berikut ini adalah contoh menggunakan nilai default dalam `Fn::FindInMap` fungsi.

#### JSON
<a name="intrinsic-function-reference-findinmap-default-value-example.json"></a>

```
{
  //...
    "Transform": "AWS::LanguageExtensions",
    //...
    "Fn::FindInMap": [
      "RegionMap",
      { "Ref": "AWS::Region" },
      "InstanceType",
      { "DefaultValue": "t3.micro" }
    ]
  //...
}
```

#### YAML
<a name="intrinsic-function-reference-findinmap-default-value-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap 
        - 'RegionMap'
        - !Ref 'AWS::Region'
        - 'InstanceType'
        - DefaultValue: t3.micro
#...
```

#### Menggunakan fungsi intrinsik untuk menentukan kunci tingkat atas
<a name="intrinsic-function-reference-findinmap-enhancements-example"></a>

Berikut ini adalah contoh menggunakan fungsi dengan `Fn::Select` dan `Fn::FindInMap` fungsi `Fn::Split` intrinsik tertanam di dalamnya untuk menentukan kunci tingkat atas.

##### JSON
<a name="intrinsic-function-reference-findinmap-enhancement-example.json"></a>

```
{
  //...
  "Transform": "AWS::LanguageExtensions",
  //...
      "Fn::FindInMap": [
        "MyMap",
        {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "|",
                { "Ref": "InputKeys" }
              ]
            }
          ]
        },
        "SecondKey"
      ]
//...
}
```

##### YAML
<a name="intrinsic-function-reference-findinmap-enhance-example.yaml"></a>

```
Transform: 'AWS::LanguageExtensions'
#...
    !FindInMap: [MyMap, !Select [0, !Split [|, !Ref InputKeys]], SecondKey]
#...
```

## Fungsi yang didukung
<a name="intrinsic-function-reference-findinmap-enhancements-supported-functions"></a>

Anda dapat menggunakan fungsi-fungsi berikut dalam parameter `Fn::FindInMap:` penyempurnaan:
+ ``Fn::FindInMap``
+ ``Fn::Join``
+ ``Fn::Sub``
+ ``Fn::If``
+ ``Fn::Select``
+ ``Fn::Length``
+ ``Fn::ToJsonString``
+ ``Fn::Split``- Kecuali jika digunakan untuk nilai default, `Fn::Split` harus digunakan bersama dengan fungsi intrinsik yang menghasilkan string, seperti atau. ``Fn::Join`` ``Fn::Select``
+ ``Ref``

## Sumber daya terkait
<a name="w2aac28c16c20c19"></a>

Untuk informasi lebih lanjut dan contoh yang menunjukkan cara menggunakan fungsi `Fn::FindInMap` intrinsik, lihat. [`Fn::FindInMap`](intrinsic-function-reference-findinmap.md)

Untuk informasi lebih lanjut tentang `AWS::LanguageExtensions` transformasi, lihat[Tansformasi `AWS::LanguageExtensions`](transform-aws-languageextensions.md).

# Tansformasi `AWS::SecretsManager`
<a name="transform-aws-secretsmanager"></a>

Topik ini menjelaskan cara menggunakan `AWS::SecretsManager` transformasi dan jenis [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)sumber daya untuk menentukan fungsi Lambda untuk melakukan rotasi rahasia.

`AWS::SecretsManager`Transformasi adalah CloudFormation makro yang, ketika direferensikan dalam template tumpukan Anda, secara otomatis menghasilkan fungsi Lambda untuk rotasi rahasia saat Anda membuat atau memperbarui tumpukan menggunakan set perubahan. Fungsi Lambda ditempatkan di tumpukan bersarang di template yang diproses. Ini menggunakan template fungsi dari repositori [Fungsi Lambda AWS Secrets Manager Rotasi](https://github.com/aws-samples/aws-secrets-manager-rotation-lambdas), berdasarkan nilai [RotationType](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html#cfn-secretsmanager-rotationschedule-hostedrotationlambda-rotationtype)properti sumber daya. [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)

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

Untuk menggunakan `AWS::SecretsManager` transformasi, Anda harus mendeklarasikannya di tingkat atas template Anda CloudFormation . Anda tidak dapat menggunakan `AWS::SecretsManager` sebagai perubahan yang tertanam di bagian templat lainnya.

Deklarasi harus menggunakan string literal `AWS::SecretsManager-2020-07-23` atau `AWS::SecretsManager-2024-09-16` sebagai nilainya. Anda tidak dapat menggunakan parameter atau fungsi untuk menentukan nilai perubahan.

### Sintaksis
<a name="aws-secretsmanager-syntax"></a>

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

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

```
{
  "Transform":"AWS::SecretsManager-2020-07-23",
  "Resources":{
    ...
  }
}
```

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

```
Transform: AWS::SecretsManager-2020-07-23
Resources:
  ...
```

`AWS::SecretsManager`Transformasi adalah deklarasi mandiri tanpa parameter tambahan. Sebagai gantinya, Anda mengonfigurasi [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)properti [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)sumber daya di template tumpukan Anda. [HostedRotationLambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-secretsmanager-rotationschedule-hostedrotationlambda.html)Properti menentukan fungsi Lambda untuk melakukan rotasi rahasia.

## Fitur baru di `AWS::SecretsManager-2024-09-16`
<a name="aws-secretsmanager-new-version"></a>

Versi terbaru dari `AWS::SecretsManager` transform (`AWS::SecretsManager-2024-09-16`) memperkenalkan penyempurnaan berikut:
+ **Upgrade Lambda Otomatis** — Saat Anda memperbarui CloudFormation tumpukan, fungsi Lambda Anda sekarang secara otomatis memperbarui konfigurasi runtime dan dependensi internalnya. Ini memastikan Anda menggunakan versi kode yang paling aman dan andal yang mengelola rotasi rahasia di Secrets Manager.
+ **Support untuk atribut tambahan** — Transformasi baru mendukung atribut sumber daya tambahan untuk jenis `AWS::SecretsManager::RotationSchedule` sumber daya saat digunakan dengan `HostedRotationLambda` properti, termasuk `DependsOn` atribut.
**catatan**  
Kedua versi mendukung `DeletionPolicy` dan `UpdateReplacePolicy` atribut.

Untuk mempelajari lebih lanjut tentang versi `AWS::SecretsManager` transformasi baru ini, lihat [Memperkenalkan versi AWS Secrets Manager transformasi yang disempurnakan: AWS::SecretsManager-2024-09-16](https://aws.amazon.com/blogs/security/introducing-an-enhanced-version-of-the-aws-secrets-manager-transform-awssecretsmanager-2024-09-16/) di Blog AWS Keamanan.

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

Contoh berikut menunjukkan cara menggunakan `AWS::SecretsManager` transform (`AWS::SecretsManager-2024-09-16`) dan [AWS::SecretsManager::RotationSchedule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html)sumber daya dalam template Anda. Dalam contoh ini, secara otomatis CloudFormation akan menghasilkan fungsi Lambda untuk MySQL rotasi rahasia pengguna tunggal.

Rahasianya diatur untuk berputar secara otomatis setiap hari pada tengah malam (UTC). Proses rotasi dapat memakan waktu hingga 2 jam untuk menyelesaikannya. Memperbarui jadwal rotasi tidak akan memulai rotasi langsung.

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

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::SecretsManager-2024-09-16",
  "Resources":{

  ...

    "MySecretRotationSchedule":{
      "Type":"AWS::SecretsManager::RotationSchedule",
      "DependsOn":"logical name of AWS::SecretsManager::SecretTargetAttachment resource",
      "Properties":{
        "SecretId":{
          "Ref":"logical name of AWS::SecretsManager::Secret resource"
        },
        "HostedRotationLambda":{
          "RotationType":"MySQLSingleUser",
          "RotationLambdaName":"name of Lambda function to be created",
          "VpcSecurityGroupIds":{
            "Fn::GetAtt":[
              "logical name of AWS::EC2::SecurityGroup resource",
              "GroupId"
            ]
          },
          "VpcSubnetIds":{
            "Fn::Join":[
              ",",
              [
                {
                  "Ref":"logical name of primary subnet"
                },
                {
                  "Ref":"logical name of secondary subnet"
                }
              ]
            ]
          }
        },
        "RotationRules":{
          "ScheduleExpression":"cron(0 0 * * ? *)",
          "Duration":"2h"
        },
        "RotateImmediatelyOnUpdate":false
      }
    }
  }
}
```

### YAML
<a name="aws-secretsmanager-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::SecretsManager-2024-09-16
Resources:

  ...

  MySecretRotationSchedule:
    Type: AWS::SecretsManager::RotationSchedule
    DependsOn: logical name of AWS::SecretsManager::SecretTargetAttachment resource
    Properties:
      SecretId: !Ref logical name of AWS::SecretsManager::Secret resource
      HostedRotationLambda:
        RotationType: MySQLSingleUser
        RotationLambdaName: name of Lambda function to be created
        VpcSecurityGroupIds: !GetAtt logical name of AWS::EC2::SecurityGroup resource.GroupId
        VpcSubnetIds:
          Fn::Join:
          - ","
          - - Ref: logical name of primary subnet
            - Ref: logical name of secondary subnet
      RotationRules:
        ScheduleExpression: cron(0 0 * * ? *)
        Duration: 2h
      RotateImmediatelyOnUpdate: false
```

## Sumber daya terkait
<a name="aws-secretsmanager-related-resources"></a>

Untuk contoh CloudFormation template lengkap yang dapat Anda gunakan untuk mengatur rotasi rahasia, lihat bagian [Contoh](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-secretsmanager-rotationschedule.html#aws-resource-secretsmanager-rotationschedule--examples) `AWS::SecretsManager::RotationSchedule` sumber daya.

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

# 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*.

# Tansformasi `AWS::ServiceCatalog`
<a name="transform-aws-servicecatalog"></a>

Topik ini menjelaskan cara menggunakan `AWS::ServiceCatalog` transformasi untuk referensi output dari produk yang AWS Service Catalog disediakan yang ada di template Anda. CloudFormation

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

Untuk menggunakan `AWS::ServiceCatalog` transformasi, Anda harus mendeklarasikannya di tingkat atas template Anda CloudFormation . Anda tidak dapat menggunakan `AWS::ServiceCatalog` sebagai perubahan yang tertanam di bagian templat lainnya.

Saat nilai output diperlukan, Anda memberikan nama produk tersedia dan nama kunci output.

Anda dapat mereferensikan beberapa produk tersedia dan nama kunci di templat Anda, maksimum 20 per templat. Selama penyediaan, perubahan mengambil nilai dari setiap produk tersedia dan kunci yang direferensikan, menggantikan nilai output di templat CloudFormation Anda.

Deklarasi harus menggunakan string literal `AWS::ServiceCatalog` sebagai nilainya. Anda tidak dapat menggunakan parameter atau fungsi untuk menentukan nilai perubahan.

### Sintaksis
<a name="aws-servicecatalog-syntax"></a>

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

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

```
{
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    ...
  }
}
```

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

```
Transform: AWS::ServiceCatalog
Resources:
  ...
```

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

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

Contoh berikut menunjukkan bagaimana Anda dapat mereferensikan output dari produk yang disediakan Service Catalog yang ada dalam template. CloudFormation 

Dalam contoh ini, `SampleProvisionedProduct` adalah produk tersedia yang telah dibuat sebelumnya. `SampleOutputKey` adalah kunci output dari produk tersedia ini.

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

Contoh ini adalah versi yang berfungsi.

Versi templat yang tidak mengemas nilai sebagai literal string akan gagal.

```
{
  "AWSTemplateFormatVersion":"2010-09-09",
  "Transform":"AWS::ServiceCatalog",
  "Resources":{
    "ExampleParameter":{
      "Type":"AWS::SSM::Parameter",
      "Properties":{
        "Type":"String",
        "Value":"[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
      }
    }
  }
}
```

### YAML
<a name="aws-servicecatalog-example.yaml"></a>

Contoh 1-4 adalah template yang valid. Di Contoh 1 dan 2, perubahan dan nilai berupa literal string.

Contoh 5 bukan merupakan templat yang valid. Nilai harus dikemas di string `'` atau `"` atau `>-`. Jika tidak, pengguna menerima kesalahan.

```
// Example 1 
AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::ServiceCatalog'
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
// Example 2
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: '[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]'
     
     
// Example 3 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: "[[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]"
     
     
// Example 4 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: >-
        [[servicecatalog:provisionedproduct:SampleProvisionedProduct:SampleOutputKey]]
     
     
// Example 5 
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::ServiceCatalog
Resources:
  ExampleParameter2:
    Type: AWS::SSM::Parameter
    Properties:
      Type: String
      Value: [[servicecatalog:provisionedproduct:SSMProductProvisionedProduct:SampleOutputKey]]
```