

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

# Dapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis
<a name="dynamic-references"></a>

Referensi dinamis memberikan cara yang nyaman bagi Anda untuk menentukan nilai eksternal yang disimpan dan dikelola di layanan lain dan memisahkan informasi sensitif dari templat Anda infrastructure-as-code. CloudFormation mengambil nilai referensi yang ditentukan bila diperlukan selama tumpukan dan mengubah operasi set.

Dengan referensi dinamis, Anda dapat:
+ **Gunakan string aman** — Untuk data sensitif, selalu gunakan parameter string aman di AWS Systems Manager Parameter Store atau rahasia AWS Secrets Manager untuk memastikan data Anda dienkripsi saat istirahat.
+ **Batasi akses** — Batasi akses ke parameter Parameter Store atau rahasia Secrets Manager hanya untuk prinsipal dan peran yang berwenang.
+ **Putar kredensyal** — Putar data sensitif Anda secara teratur yang disimpan di Parameter Store atau Secrets Manager untuk mempertahankan tingkat keamanan yang tinggi.
+ **Rotasi otomatis** — Manfaatkan fitur rotasi otomatis Secrets Manager untuk memperbarui dan mendistribusikan data sensitif Anda secara berkala di seluruh aplikasi dan lingkungan Anda.

## Pertimbangan umum
<a name="dynamic-references-considerations"></a>

Berikut ini adalah pertimbangan umum untuk Anda pertimbangkan sebelum Anda menentukan referensi dinamis dalam CloudFormation template Anda:
+ Hindari menyertakan referensi dinamis, atau data sensitif apa pun, di properti sumber daya yang merupakan bagian dari pengenal utama sumber daya. CloudFormation dapat menggunakan nilai plaintext aktual dalam pengidentifikasi sumber daya utama, yang bisa menjadi risiko keamanan. ID sumber daya ini mungkin muncul dalam output turunan atau tujuan.

  Untuk menentukan properti sumber daya mana yang terdiri dari pengidentifikasi utama tipe sumber daya, lihat dokumentasi referensi sumber daya untuk sumber daya tersebut dalam referensi [tipe AWS sumber daya dan properti](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html). Di bagian **Kembalikan nilai**, nilai `Ref` pengembalian fungsi mewakili properti sumber daya yang terdiri dari tipe pengidentifikasi utama sumber daya.
+ Anda dapat menyertakan hingga 60 referensi dinamis dalam templat tumpukan.
+ Jika Anda menggunakan transformasi (seperti `AWS::Include` atau`AWS::Serverless`), CloudFormation tidak menyelesaikan referensi dinamis sebelum menerapkan transformasi. Sebagai gantinya, ia meneruskan string literal dari referensi dinamis ke transformasi, dan menyelesaikan referensi saat Anda menjalankan set perubahan menggunakan template.
+ Referensi dinamis tidak dapat digunakan untuk nilai aman (seperti yang disimpan di Parameter Store atau Secrets Manager) di sumber daya khusus. 
+ Referensi dinamis juga tidak didukung dalam `AWS::CloudFormation::Init` metadata dan properti Amazon `UserData` EC2.
+ Jangan membuat referensi dinamis yang diakhiri dengan garis miring terbalik (\$1). CloudFormationtidak dapat menyelesaikan referensi ini, yang akan menyebabkan operasi tumpukan gagal.

Topik berikut memberikan informasi dan pertimbangan lain untuk menggunakan referensi dinamis.

**Topics**
+ [Pertimbangan umum](#dynamic-references-considerations)
+ [Dapatkan nilai plaintext dari Systems Manager Parameter Store](dynamic-references-ssm.md)
+ [Dapatkan nilai string aman dari Systems Manager Parameter Store](dynamic-references-ssm-secure-strings.md)
+ [Dapatkan nilai rahasia atau rahasia dari Secrets Manager](dynamic-references-secretsmanager.md)

# Dapatkan nilai plaintext dari Systems Manager Parameter Store
<a name="dynamic-references-ssm"></a>

Saat membuat CloudFormation template, Anda mungkin ingin menggunakan nilai plaintext yang disimpan di Parameter Store. Parameter Store adalah kemampuan AWS Systems Manager. Untuk pengantar Parameter Store, lihat [AWS Systems Manager Parameter Menyimpan](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) di *Panduan AWS Systems Manager Pengguna*. 

Untuk menggunakan nilai plaintext dari Parameter Store dalam template Anda, Anda menggunakan referensi `ssm` dinamis. Referensi ini memungkinkan Anda untuk mengakses nilai dari parameter tipe `String` atau `StringList` di Parameter Store. 

Untuk memverifikasi versi referensi `ssm` dinamis mana yang akan digunakan dalam operasi tumpukan, buat set perubahan untuk operasi tumpukan. Kemudian, tinjau template yang diproses pada tab **Template**. Untuk informasi selengkapnya, lihat [Buat set perubahan untuk CloudFormation tumpukan](using-cfn-updating-stacks-changesets-create.md).

Saat menggunakan referensi `ssm` dinamis, ada beberapa hal penting yang perlu diingat:
+ CloudFormation tidak mendukung deteksi drift pada referensi dinamis. Untuk referensi `ssm` dinamis di mana Anda belum menentukan versi parameter, sebaiknya, jika Anda memperbarui versi parameter di Systems Manager, Anda juga melakukan operasi pembaruan tumpukan pada tumpukan apa pun yang menyertakan referensi `ssm` dinamis, untuk mengambil versi parameter terbaru.
+ Untuk menggunakan referensi `ssm` dinamis di `Parameters` bagian CloudFormation template Anda, Anda harus menyertakan nomor versi. CloudFormation tidak memungkinkan Anda untuk mereferensikan nilai Parameter Store tanpa nomor versi di bagian ini. Atau, Anda dapat menentukan parameter Anda sebagai tipe parameter Systems Manager di template Anda. Ketika Anda melakukan ini, Anda dapat menentukan kunci parameter Systems Manager sebagai nilai default untuk parameter Anda. CloudFormation kemudian akan mengambil versi terbaru dari nilai parameter dari Parameter Store, tanpa Anda harus menentukan nomor versi. Ini dapat membuat template Anda lebih sederhana dan lebih mudah dirawat. Untuk informasi selengkapnya, lihat [Tentukan sumber daya yang ada saat runtime dengan CloudFormation tipe parameter yang disediakan](cloudformation-supplied-parameter-types.md).
+ Untuk sumber daya kustom, CloudFormation selesaikan referensi `ssm` dinamis sebelum mengirim permintaan ke sumber daya kustom.
+ CloudFormation tidak mendukung penggunaan referensi dinamis untuk mereferensikan parameter yang dibagikan dari yang lain Akun AWS.
+ CloudFormation tidak mendukung penggunaan label parameter Systems Manager dalam referensi dinamis.

## Izin
<a name="dynamic-references-ssm-permissions"></a>

Untuk menentukan parameter yang disimpan di Systems Manager Parameter Store, Anda harus memiliki izin [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)untuk memanggil parameter yang ditentukan. *Untuk mempelajari cara membuat kebijakan IAM yang menyediakan akses ke parameter Systems Manager tertentu, lihat [Membatasi akses ke parameter Systems Manager menggunakan kebijakan IAM di Panduan](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html) Pengguna.AWS Systems Manager *

## Pola referensi
<a name="dynamic-references-ssm-pattern"></a>

Untuk mereferensikan nilai plaintext yang disimpan di Systems Manager Parameter Store di CloudFormation template Anda, gunakan pola `ssm` referensi berikut.

```
{{resolve:ssm:parameter-name:version}}
```

Referensi Anda harus mematuhi pola ekspresi reguler berikut untuk nama parameter dan versi:

```
{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
Nama parameter dalam Penyimpanan Parameter. Perhatikan bahwa nama parameter bersifat peka huruf besar-kecil.  
Wajib.

`version`  
Integer yang menentukan versi parameter untuk digunakan. Jika Anda tidak menentukan versi yang tepat, CloudFormation gunakan versi terbaru dari parameter setiap kali Anda membuat atau memperbarui tumpukan. Untuk informasi selengkapnya, lihat [Bekerja dengan versi parameter](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) di *Panduan AWS Systems Manager Pengguna*.  
Tidak wajib.

## Contoh
<a name="dynamic-references-ssm-examples"></a>

**Topics**
+ [Parameter ID AMI Publik](#dynamic-references-ssm-public-ami-example)
+ [Parameter ID AMI kustom](#dynamic-references-ssm-custom-ami-example)

### Parameter ID AMI Publik
<a name="dynamic-references-ssm-public-ami-example"></a>

Contoh berikut membuat instance EC2 yang mereferensikan parameter AMI publik. Referensi dinamis mengambil ID AMI Amazon Linux 2023 terbaru dari parameter publik. Untuk informasi selengkapnya tentang parameter publik, lihat [Menemukan parameter publik di Penyimpanan Parameter](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) di *Panduan AWS Systems Manager Pengguna*.

#### JSON
<a name="dynamic-references-ssm-public-ami-example.json"></a>

```
{
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
                "InstanceType": "t2.micro"
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-public-ami-example.yaml"></a>

```
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: t2.micro
```

### Parameter ID AMI kustom
<a name="dynamic-references-ssm-custom-ami-example"></a>

Contoh berikut membuat template peluncuran EC2 yang mereferensikan ID AMI kustom yang disimpan di Parameter Store. Referensi dinamis mengambil ID AMI *`2`* dari versi `golden-ami` parameter setiap kali instance diluncurkan dari template peluncuran.

#### JSON
<a name="dynamic-references-ssm-custom-ami-example.json"></a>

```
{
    "Resources": {
        "MyLaunchTemplate": {
            "Type": "AWS::EC2::LaunchTemplate",
            "Properties": {
                "LaunchTemplateName": {
                    "Fn::Sub": "${AWS::StackName}-launch-template"
                },
                "LaunchTemplateData": {
                    "ImageId": "{{resolve:ssm:golden-ami:2}}",
                    "InstanceType": "t2.micro"
                }
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-custom-ami-example.yaml"></a>

```
Resources:
  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties: 
      LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
      LaunchTemplateData:
        ImageId: '{{resolve:ssm:golden-ami:2}}'
        InstanceType: t2.micro
```

# Dapatkan nilai string aman dari Systems Manager Parameter Store
<a name="dynamic-references-ssm-secure-strings"></a>

Di CloudFormation, Anda dapat menggunakan data sensitif seperti kata sandi atau kunci lisensi tanpa mengeksposnya langsung di templat Anda dengan menyimpan data sensitif sebagai “string aman” di AWS Systems Manager Parameter Store. Untuk pengenalan Parameter Store, lihat [AWS Systems Manager Parameter Menyimpan](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) di *Panduan AWS Systems Manager Pengguna*.

Untuk menggunakan string aman Parameter Store dalam template Anda, Anda menggunakan referensi `ssm-secure` dinamis. CloudFormation tidak pernah menyimpan nilai string aman yang sebenarnya. Sebaliknya, ia hanya menyimpan referensi dinamis literal, yang berisi nama parameter plaintext dari string aman. 

Selama pembuatan tumpukan atau pembaruan, CloudFormation mengakses nilai string aman sesuai kebutuhan, tanpa mengekspos nilai sebenarnya. String aman hanya dapat digunakan untuk properti sumber daya yang mendukung pola referensi `ssm-secure` dinamis. Untuk informasi selengkapnya, lihat [Sumber daya yang men-support pola parameter dinamis untuk string aman](#template-parameters-dynamic-patterns-resources).

CloudFormation tidak mengembalikan nilai parameter aktual untuk string aman dalam panggilan API apa pun. Ini hanya mengembalikan referensi dinamis literal. Saat membandingkan perubahan menggunakan set perubahan, CloudFormation hanya membandingkan string referensi dinamis literal. Itu tidak menyelesaikan dan membandingkan nilai string aman yang sebenarnya.

Saat menggunakan referensi `ssm-secure` dinamis, ada beberapa hal penting yang perlu diingat:
+ CloudFormation tidak dapat mengakses nilai Parameter Store dari yang lain Akun AWS.
+ CloudFormation tidak mendukung penggunaan label parameter Systems Manager atau parameter publik dalam referensi dinamis.
+ Di wilayah `cn-north-1` dan `cn-northwest-1` wilayah, string aman tidak didukung oleh Systems Manager.
+ Referensi dinamis untuk nilai aman, seperti`ssm-secure`, saat ini tidak didukung dalam sumber daya khusus.
+ Jika CloudFormation perlu memutar kembali pembaruan tumpukan, dan versi parameter string aman yang ditentukan sebelumnya tidak lagi tersedia, operasi rollback akan gagal. Dalam kasus seperti itu, Anda memiliki dua opsi:
  + Gunakan `CONTINUE_UPDATE_ROLLBACK` untuk melewati sumber daya.
  + Buat ulang parameter string aman di Systems Manager Parameter Store, dan perbarui hingga versi parameter mencapai versi yang digunakan dalam template. Kemudian, gunakan `CONTINUE_UPDATE_ROLLBACK` tanpa melewatkan sumber daya.

## Sumber daya yang men-support pola parameter dinamis untuk string aman
<a name="template-parameters-dynamic-patterns-resources"></a>

Sumber daya yang mendukung pola referensi `ssm-secure` dinamis meliputi:


| Sumber daya | Jenis properti | Sifat-sifat | 
| --- | --- | --- | 
| [AWS::DirectoryService::MicrosoftIKLAN](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-microsoftad.html) |  | `Password` | 
| [AWS::DirectoryService::SimpleIKLAN](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-simplead.html) |  | `Password` | 
| [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) |  | `AuthToken` | 
| [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html) | [LoginProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html) | `Password` | 
| [AWS::KinesisFirehose::DeliveryStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-kinesisfirehose-deliverystream.html) | [RedshiftDestinationConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html) | `Password` | 
| [AWS::OpsWorks::App](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-app.html) | [Sumber](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-app-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [CustomCookbooksSource](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [RdsDbInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-rdsdbinstance.html) | `DbPassword` | 
| [AWS: :RDS:: DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html) |  | `MasterUserPassword` | 
| [AWS: :RDS:: DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) |  | `MasterUserPassword`  | 
| [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-redshift-cluster.html) |  | `MasterUserPassword` | 

## Pola referensi
<a name="dynamic-references-ssm-secure-pattern"></a>

Untuk mereferensikan nilai string aman dari Systems Manager Parameter Store di CloudFormation template Anda, gunakan pola `ssm-secure` referensi berikut.

```
{{resolve:ssm-secure:parameter-name:version}}
```

Referensi Anda harus mematuhi pola ekspresi reguler berikut untuk nama parameter dan versi:

```
{{resolve:ssm-secure:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
Nama parameter dalam Penyimpanan Parameter. Perhatikan bahwa nama parameter bersifat peka huruf besar-kecil.  
Wajib.

`version`  
Integer yang menentukan versi parameter untuk digunakan. Jika Anda tidak menentukan versi yang tepat, CloudFormation gunakan versi terbaru dari parameter setiap kali Anda membuat atau memperbarui tumpukan. Untuk informasi selengkapnya, lihat [Bekerja dengan versi parameter](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) di *Panduan AWS Systems Manager Pengguna*.  
Tidak wajib.

## Contoh
<a name="dynamic-references-ssm-secure-example"></a>

Contoh berikut menggunakan referensi `ssm-secure` dinamis untuk mengatur kata sandi untuk pengguna IAM ke string aman yang disimpan di Parameter Store. Seperti yang ditentukan, CloudFormation akan menggunakan *`10`* versi `IAMUserPassword` parameter untuk tumpukan dan mengubah operasi set.

### JSON
<a name="dynamic-references-ssm-secure-example.json"></a>

```
  "MyIAMUser": {
    "Type": "AWS::IAM::User",
    "Properties": {
      "UserName": "MyUserName",
      "LoginProfile": {
        "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}"
      }
    }
  }
```

### YAML
<a name="dynamic-references-ssm-secure-example.yaml"></a>

```
  MyIAMUser:
    Type: AWS::IAM::User
    Properties:
      UserName: 'MyUserName'
      LoginProfile:
        Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'
```

# Dapatkan nilai rahasia atau rahasia dari Secrets Manager
<a name="dynamic-references-secretsmanager"></a>

Secrets Manager adalah layanan yang memungkinkan Anda menyimpan dan mengelola rahasia dengan aman seperti kredensi database, kata sandi, dan kunci API pihak ketiga. Dengan menggunakan Secrets Manager, Anda dapat menyimpan dan mengontrol akses ke rahasia ini secara terpusat, sehingga Anda dapat mengganti kredensi hardcode dalam kode Anda (termasuk kata sandi), dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram. Untuk informasi lebih lanjut, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dalam *AWS Secrets Manager User Guide*.

Untuk menggunakan seluruh rahasia atau nilai rahasia yang disimpan di Secrets Manager dalam CloudFormation template Anda, Anda menggunakan referensi `secretsmanager` dinamis.

## Praktik terbaik
<a name="dynamic-references-secretsmanager-best-practices"></a>

Ikuti praktik terbaik ini saat menggunakan referensi dinamis Secrets Manager di CloudFormation template Anda:
+ **Gunakan referensi tanpa versi untuk CloudFormation template Anda** — Simpan kredensi di Secrets Manager dan gunakan referensi dinamis tanpa menentukan `version-stage` atau `version-id` parameter untuk mendukung alur kerja rotasi rahasia yang tepat.
+ **Manfaatkan rotasi otomatis** — Gunakan fitur rotasi otomatis Secrets Manager dengan referensi dinamis tanpa versi untuk manajemen kredensi. Ini memastikan kredensialmu diperbarui secara berkala tanpa memerlukan perubahan template. Untuk informasi selengkapnya, lihat [Merotasi rahasia AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).
+ **Gunakan referensi berversi hemat** — Hanya tentukan eksplisit `version-stage` atau `version-id` parameter untuk skenario tertentu seperti situasi pengujian atau rollback.

## Pertimbangan-pertimbangan
<a name="dynamic-references-secretsmanager-considerations"></a>

Saat menggunakan referensi `secretsmanager` dinamis, ada pertimbangan penting yang perlu diingat:
+ CloudFormation tidak melacak versi rahasia mana yang digunakan dalam penerapan sebelumnya. Rencanakan strategi manajemen rahasia Anda dengan hati-hati sebelum menerapkan referensi dinamis. Gunakan referensi tanpa versi bila memungkinkan untuk memanfaatkan rotasi rahasia otomatis. Pantau dan validasi pembaruan sumber daya saat membuat perubahan pada konfigurasi referensi dinamis, seperti saat beralih dari referensi dinamis yang tidak berversi ke berversi, dan sebaliknya.
+ Memperbarui hanya nilai rahasia di Secrets Manager tidak secara otomatis menyebabkan CloudFormation untuk mengambil nilai baru. CloudFormation mengambil nilai rahasia hanya selama pembuatan sumber daya atau pembaruan yang memodifikasi sumber daya yang berisi referensi dinamis. 

  Misalnya, anggaplah template Anda menyertakan [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html)sumber daya tempat `MasterPassword` properti disetel ke referensi dinamis Secrets Manager. Setelah membuat tumpukan dari template ini, Anda memperbarui nilai rahasia di Secrets Manager. Namun, `MasterPassword` properti mempertahankan nilai kata sandi lama. 

  Untuk menerapkan nilai rahasia baru, Anda harus memodifikasi `AWS::RDS::DBInstance` sumber daya di CloudFormation template Anda dan melakukan pembaruan tumpukan. 

  Untuk menghindari proses manual ini di masa depan, pertimbangkan untuk menggunakan Secrets Manager untuk memutar rahasia secara otomatis. 
+ Referensi dinamis untuk nilai aman, seperti`secretsmanager`, saat ini tidak didukung dalam sumber daya khusus.
+ Referensi `secretsmanager` dinamis dapat digunakan di semua atribut sumber daya. Menggunakan referensi `secretsmanager` dinamis menunjukkan bahwa Secrets Manager maupun CloudFormation log tidak boleh mempertahankan nilai rahasia yang diselesaikan. Namun, nilai rahasia dapat muncul di layanan yang sumber dayanya digunakan. Tinjau penggunaan Anda untuk menghindari kebocoran data rahasia.

## Izin
<a name="dynamic-references-secretsmanager-permissions"></a>

Untuk menentukan rahasia yang disimpan di Secrets Manager, Anda harus memiliki izin [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)untuk memanggil rahasia tersebut.

## Pola referensi
<a name="dynamic-references-secretsmanager-pattern"></a>

Untuk mereferensikan rahasia Secrets Manager di CloudFormation template Anda, gunakan pola `secretsmanager` referensi berikut.

```
{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
```

`secret-id`  
Nama atau ARN rahasianya.  
Untuk mengakses rahasia di Anda Akun AWS, Anda hanya perlu menentukan nama rahasia. Untuk mengakses rahasia di tempat yang berbeda Akun AWS, tentukan ARN lengkap rahasia tersebut.  
Wajib.

`secret-string`  
Satu-satunya nilai yang di-support adalah `SecretString`. Nilai default-nya `SecretString`.

`json-key`  
Nama kunci dari pasangan kunci-nilai yang nilainya ingin Anda ambil. Jika Anda tidak menentukan`json-key`, CloudFormation mengambil seluruh teks rahasia.  
Segmen ini mungkin tidak memasukkan karakter titik dua ( `:`).

`version-stage`  
Label pementasan versi rahasia yang akan digunakan. Secrets Manager menggunakan label pementasan untuk melacak versi yang berbeda selama proses rotasi. Jika Anda menggunakan `version-stage` maka jangan tentukan `version-id`. Jika Anda tidak menentukan salah satu `version-stage` atau`version-id`, maka defaultnya adalah `AWSCURRENT` versinya.  
Segmen ini mungkin tidak memasukkan karakter titik dua ( `:`).

`version-id`  
Pengidentifikasi unik dari versi rahasia yang akan digunakan. Jika Anda menentukan `version-id`, jangan tentukan `version-stage`. Jika Anda tidak menentukan salah satu `version-stage` atau`version-id`, maka defaultnya adalah `AWSCURRENT` versinya.  
Segmen ini mungkin tidak memasukkan karakter titik dua ( `:`).

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

**Topics**
+ [Mengambil nilai nama pengguna dan kata sandi dari rahasia](#dynamic-references-secretsmanager-examples-user-name-and-password)
+ [Mengambil seluruh SecretString](#dynamic-references-secretsmanager-examples-entire-secretstring)
+ [Mengambil nilai dari versi rahasia tertentu](#dynamic-references-secretsmanager-examples-specific-version)
+ [Mengambil rahasia dari yang lain Akun AWS](#dynamic-references-secretsmanager-examples-secrets-from-another-account)

### Mengambil nilai nama pengguna dan kata sandi dari rahasia
<a name="dynamic-references-secretsmanager-examples-user-name-and-password"></a>

[https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html)Contoh berikut mengambil nama pengguna dan nilai kata sandi yang disimpan dalam `MySecret` rahasia. Contoh ini menunjukkan pola yang direkomendasikan untuk referensi dinamis tanpa versi, yang secara otomatis menggunakan `AWSCURRENT` versi dan mendukung alur kerja rotasi Secrets Manager tanpa memerlukan perubahan template.

#### JSON
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.json"></a>

```
{
    "MyRDSInstance": {
        "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBName": "MyRDSInstance",
            "AllocatedStorage": "20",
            "DBInstanceClass": "db.t2.micro",
            "Engine": "mysql",
            "MasterUsername": "{{resolve:secretsmanager:MySecret:SecretString:username}}",
            "MasterUserPassword": "{{resolve:secretsmanager:MySecret:SecretString:password}}"
        }
    }
}
```

#### YAML
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.yaml"></a>

```
  MyRDSInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBName: MyRDSInstance
      AllocatedStorage: '20'
      DBInstanceClass: db.t2.micro
      Engine: mysql
      MasterUsername: '{{resolve:secretsmanager:MySecret:SecretString:username}}'
      MasterUserPassword: '{{resolve:secretsmanager:MySecret:SecretString:password}}'
```

### Mengambil seluruh SecretString
<a name="dynamic-references-secretsmanager-examples-entire-secretstring"></a>

Referensi dinamis berikut mengambil `SecretString` for`MySecret`.

```
{{resolve:secretsmanager:MySecret}}
```

Atau:

```
{{resolve:secretsmanager:MySecret::::}}
```

### Mengambil nilai dari versi rahasia tertentu
<a name="dynamic-references-secretsmanager-examples-specific-version"></a>

Referensi dinamis berikut mengambil `password` nilai untuk `AWSPREVIOUS` versi. `MySecret`

```
{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}
```

### Mengambil rahasia dari yang lain Akun AWS
<a name="dynamic-references-secretsmanager-examples-secrets-from-another-account"></a>

Referensi dinamis berikut mengambil `SecretString` untuk `MySecret` yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWS

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}
```

Referensi dinamis berikut mengambil `password` nilai untuk `MySecret` yang lain Akun AWS. Anda harus menentukan ARN rahasia lengkap untuk mengakses rahasia di tempat lain. Akun AWS

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}
```