Membuat nest tumpukan yang ada - AWS CloudFormation

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

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 Bekerja dengan tumpukan nest.

AWS 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. Membawa sumber daya yang ada ke dalam CloudFormation manajemen

Validasi impor tumpukan bersarang

Selama operasi impor tumpukan bersarang, AWS 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.

Membuat nest tumpukan yang ada menggunakan AWS Management Console

  1. Tambahkan AWS::CloudFormation::Stack sumber daya ke template tumpukan induk dengan file Retain DeletionPolicy. 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
  2. Buka AWS CloudFormation konsol.

  3. 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.
  4. Baca halaman Gambaran umum Impor untuk daftar hal yang harus Anda sediakan selama operasi ini. Kemudian, pilih Selanjutnya.

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

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

    2. 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.
    3. Pilih Selanjutnya.

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

  8. Pada MyParentStackhalaman 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.

  9. Panel Peristiwa di halaman Detail tumpukan menampilkan tumpukan induk Anda.

    Tab Peristiwa di konsol.
    catatan

    Tidak perlu menjalankan deteksi drift pada tumpukan induk setelah operasi impor ini karena AWS::CloudFormation::Stack sumber daya sudah dikelola oleh AWS CloudFormation.

Membuat nest tumpukan yang ada menggunakan AWS CLI

  1. Tambahkan AWS::CloudFormation::Stack sumber daya ke template tumpukan induk dengan file Retain DeletionPolicy. 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
  2. Tulis string JSON seperti yang ditunjukkan pada contoh berikut, dengan modifikasi ini:

    • Ganti MyNestedStackdengan 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 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 mengimporMyNestedStack, Anda dapat membuat ResourcesToImportfile.txt 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
  3. Untuk membuat set perubahan, gunakan create-change-set perintah berikut dan ganti teks placeholder. Untuk --change-set-type opsi, tentukan nilaiIMPORT. 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-importtidak 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 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" }
  4. Tinjau set perubahan untuk memastikan tumpukan yang benar sedang diimpor.

    $ aws cloudformation describe-change-set --change-set-name ImportChangeSet
  5. 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 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 AWS CloudFormation.