

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

# Membuat nest tumpukan yang ada
<a name="resource-import-nested-stacks"></a>

Gunakan fitur `resource import` untuk membuat nest tumpukan yang ada dalam tumpukan lain yang ada. Tumpukan bersarang adalah komponen umum yang Anda nyatakan dan referensikan dari dalam templat lain. Dengan begitu, Anda dapat menghindari menyalin dan menempelkan konfigurasi yang sama ke dalam templat dan menyederhanakan pembaruan tumpukan. Jika Anda memiliki templat untuk komponen umum, Anda dapat menggunakan sumber daya `AWS::CloudFormation::Stack` untuk mereferensikan templat ini dari dalam template lain. Untuk informasi selengkapnya tentang tumpukan bersarang, lihat [Pisahkan template menjadi potongan-potongan yang dapat digunakan kembali menggunakan tumpukan bersarang](using-cfn-nested-stacks.md).

CloudFormation hanya mendukung satu tingkat penggunaan `resource import` bersarang. Ini berarti Anda tidak dapat mengimpor tumpukan ke tumpukan anak atau mengimpor tumpukan yang memiliki anak.

Jika Anda baru mengimpor, kami sarankan Anda terlebih dahulu meninjau informasi pengantar dalam topik. [Impor AWS sumber daya ke CloudFormation tumpukan secara manual](import-resources-manually.md)

## Validasi impor tumpukan bersarang
<a name="resource-import-nested-stacks-validation"></a>

Selama operasi impor tumpukan bersarang, CloudFormation lakukan validasi berikut.
+ Definisi `AWS::CloudFormation::Stack` bersarang dalam templat tumpukan induk sesuai dengan templat tumpukan bersarang yang sebenarnya.
+ Tanda untuk definisi `AWS::CloudFormation::Stack` bersarang dalam templat tumpukan induk sesuai dengan tanda untuk sumber daya tumpukan bersarang yang sebenarnya.

## Sarang tumpukan yang ada menggunakan Konsol Manajemen AWS
<a name="resource-import-nested-stacks-console"></a>

1. Tambahkan `AWS::CloudFormation::Stack` sumber daya ke template tumpukan induk dengan file `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html). Dalam contoh berikut template tumpukan induk, `MyNestedStack` adalah target impor.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Buka CloudFormation konsol.

1. Di halaman **Tumpukan**, dengan tumpukan induk yang dipilih, pilih **Tindakan tumpukan**, lalu pilih **Impor sumber daya ke tumpukan**.  
![\[Opsi Impor sumber daya ke tumpukan di konsol.\]](http://docs.aws.amazon.com/id_id/AWSCloudFormation/latest/UserGuide/images/stack-actions-import.png)

1. Baca halaman **Gambaran umum Impor** untuk daftar hal yang harus Anda sediakan selama operasi ini. Kemudian, pilih **Selanjutnya**.

1. Di halaman **Tentukan templat**, sediakan templat Anda yang telah diperbarui menggunakan salah satu metode berikut, lalu pilih **Selanjutnya**.
   + Pilih **URL Amazon S3**, lalu tentukan URL untuk templat Anda di kotak teks.
   + Pilih **Unggah file templat**, lalu telusuri templat Anda.

1. Di halaman **Identifikasi sumber daya**, identifikasi setiap sumber daya `AWS::CloudFormation::Stack`.

   1. Di bawah **Properti pengidentifikasi**, pilih jenis pengidentifikasi sumber daya. Misalnya, sumber daya `AWS::CloudFormation::Stack` dapat diidentifikasi menggunakan properti `StackId`.

   1. Di bawah **nilai Identifier**, ketik ARN dari tumpukan yang Anda impor. Misalnya, `arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10`.  
![\[Halaman Identifikasi sumber daya di konsol.\]](http://docs.aws.amazon.com/id_id/AWSCloudFormation/latest/UserGuide/images/resource-import-stackid.png)

   1. Pilih **Berikutnya**.

1. Di halaman **Tentukan detail tumpukan**, ubah parameter apa pun, lalu pilih **Selanjutnya**. Ini secara otomatis membuat set perubahan.
**penting**  
Operasi impor gagal jika Anda mengubah parameter yang sudah ada yang memulai operasi membuat, memperbarui, atau menghapus.

1. Pada *MyParentStack* halaman **Tinjauan**, konfirmasikan bahwa sumber daya yang benar sedang diimpor, lalu pilih **Impor sumber daya**. Ini secara otomatis menjalankan set perubahan yang dibuat pada langkah terakhir. Semua tanda stack-level diterapkan pada sumber daya yang diimpor saat ini.

1. Panel **Peristiwa** di halaman **Detail tumpukan** menampilkan tumpukan induk Anda.  
![\[Tab Peristiwa di konsol.\]](http://docs.aws.amazon.com/id_id/AWSCloudFormation/latest/UserGuide/images/import-events.png)
**catatan**  
Tidak perlu menjalankan deteksi drift pada tumpukan induk setelah operasi impor ini karena `AWS::CloudFormation::Stack` sumber daya sudah dikelola oleh CloudFormation.

## Sarang tumpukan yang ada menggunakan AWS CLI
<a name="resource-import-nested-stacks-cli"></a>

1. Tambahkan `AWS::CloudFormation::Stack` sumber daya ke template tumpukan induk dengan file `Retain` [DeletionPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-attribute-deletionpolicy.html). Dalam contoh templat induk berikut, `MyNestedStack` adalah target impor.

   **JSON**

   ```
   {
     "AWSTemplateFormatVersion" : "2010-09-09",
     "Resources" : {
       "ServiceTable":{
              "Type":"AWS::DynamoDB::Table",
              "Properties":{
                 "TableName":"Service",
                 "AttributeDefinitions":[
                    {
                       "AttributeName":"key",
                       "AttributeType":"S"
                    }
                 ],
                 "KeySchema":[
                    {
                       "AttributeName":"key",
                       "KeyType":"HASH"
                    }
                 ],
                 "ProvisionedThroughput":{
                    "ReadCapacityUnits":5,
                    "WriteCapacityUnits":1
                 }
              }
           },
       "MyNestedStack" : {
         "Type" : "AWS::CloudFormation::Stack",
         "DeletionPolicy": "Retain",
         "Properties" : {
         "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template",
           "Parameters" : {
             "InstanceType" : "t1.micro",
             "KeyName" : "mykey"
           }
         }
       }
     }
   }
   ```

   **YAML**

   ```
   AWSTemplateFormatVersion: 2010-09-09
   Resources:
     ServiceTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: Service
         AttributeDefinitions:
           - AttributeName: key
             AttributeType: S
         KeySchema:
           - AttributeName: key
             KeyType: HASH
         ProvisionedThroughput:
           ReadCapacityUnits: 5
           WriteCapacityUnits: 1
     MyNestedStack:
       Type: AWS::CloudFormation::Stack
       DeletionPolicy: Retain
       Properties:
         TemplateURL: >-
           https://s3.amazonaws.com/cloudformation-templates-us-east-2/EC2ChooseAMI.template
         Parameters:
           InstanceType: t1.micro
           KeyName: mykey
   ```

1. Tulis string JSON seperti yang ditunjukkan pada contoh berikut, dengan modifikasi ini: 
   + Ganti *MyNestedStack* dengan ID logis dari sumber daya target seperti yang ditentukan dalam template.
   + Ganti *arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10* dengan ARN dari tumpukan yang ingin Anda impor.

   ```
   [{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-east-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]
   ```

   Atau, Anda dapat menentukan parameter dalam file konfigurasi. 

   Misalnya, untuk mengimpor`MyNestedStack`, Anda dapat membuat *ResourcesToImport.txt* file yang berisi konfigurasi berikut.

   **JSON**

   ```
   [
     {
         "ResourceType":"AWS::CloudFormation::Stack",
         "LogicalResourceId":"MyNestedStack",
         "ResourceIdentifier": {
           "StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"
         }
     }
   ]
   ```

   **YAML**

   ```
   ResourceType: AWS::CloudFormation::Stack
     LogicalResourceId: MyNestedStack
     ResourceIdentifier:
       StackId: >-
         arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10
   ```

1. Untuk membuat set perubahan, gunakan **create-change-set** perintah berikut dan ganti teks placeholder. Untuk `--change-set-type` opsi, tentukan nilai**IMPORT**. Untuk `--resources-to-import` opsi, ganti string JSON sampel dengan string JSON aktual yang baru saja Anda buat.

   ```
   aws cloudformation create-change-set \
       --stack-name MyParentStack --change-set-name ImportChangeSet \
       --change-set-type IMPORT \
       --template-body file://TemplateToImport.json \
       --resources-to-import '[{"ResourceType":"AWS::CloudFormation::Stack","LogicalResourceId":"MyNestedStack","ResourceIdentifier":{"StackId":"arn:aws:cloudformation:us-west-2:12345678910:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10"}}]'
   ```
**catatan**  
`--resources-to-import`tidak mendukung YAMAL sebaris. Persyaratan untuk menghindari tanda kutip dalam string JSON bervariasi tergantung pada terminal Anda. Untuk informasi selengkapnya, lihat [Menggunakan tanda kutip di dalam string](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html#cli-usage-parameters-quoting-strings-containing) di *AWS Command Line Interface Panduan Pengguna*.

   Atau, Anda dapat menggunakan URL file sebagai masukan untuk `--resources-to-import` opsi, seperti yang ditunjukkan pada contoh berikut.

   ```
   --resources-to-import file://ResourcesToImport.txt
   ```

   Jika berhasil, perintah ini mengembalikan output sampel berikut.

   ```
   {
       "Id": "arn:aws:cloudformation:us-west-2:12345678910:changeSet/ImportChangeSet/8ad75b3f-665f-46f6-a200-0b4727a9442e",
       "StackId": "arn:aws:cloudformation:us-west-2:12345678910:stack/MyParentStack/4e345b70-1281-11ef-b027-027366d8e82b"
   }
   ```

1. Tinjau set perubahan untuk memastikan tumpukan yang benar sedang diimpor.

   ```
   aws cloudformation describe-change-set --change-set-name ImportChangeSet
   ```

1. Untuk memulai set perubahan dan mengimpor tumpukan ke tumpukan induk sumber, gunakan **execute-change-set** perintah berikut dan ganti teks placeholder. Semua [tanda stack-level](cfn-console-create-stack.md#configure-stack-options) diterapkan pada sumber daya yang diimpor saat ini. Setelah berhasil menyelesaikan operasi impor `(IMPORT_COMPLETE)`, tumpukan berhasil dibuat nest-nya.

   ```
   aws cloudformation execute-change-set --change-set-name ImportChangeSet
   ```
**catatan**  
Tidak perlu menjalankan deteksi penyimpangan pada tumpukan induk setelah operasi impor ini karena sumber daya `AWS::CloudFormation::Stack` telah dikelola oleh CloudFormation.