Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memindahkan sumber daya antar tumpukan
Dengan menggunakan fitur resource import
, Anda dapat memindahkan sumber daya antar, atau memfaktor ulang (refactor), tumpukan. Anda harus terlebih dahulu menambahkan kebijakan Retain
penghapusan ke sumber daya yang ingin Anda pindahkan untuk memastikan bahwa sumber daya dipertahankan saat Anda menghapusnya dari tumpukan sumber dan mengimpornya ke tumpukan target.
Jika Anda baru mengimpor, kami sarankan Anda terlebih dahulu meninjau informasi pengantar dalam topik. Impor AWS sumber daya ke CloudFormation tumpukan dengan impor sumber daya
penting
Tidak semua sumber daya mendukung operasi impor. Lihat Sumber daya yang mendukung operasi impor sebelum menghapus sumber daya dari tumpukan Anda. Jika Anda menghapus sumber daya yang tidak mendukung operasi impor dari tumpukan, Anda tidak dapat mengimpor sumber daya ke tumpukan lain atau mengembalikannya ke tumpukan sumber.
Memfaktorkan ulang tumpukan menggunakan AWS Management Console
-
Dalam template sumber, tentukan sumber daya
Retain
DeletionPolicyyang ingin Anda pindahkan.Dalam contoh sumber templat berikut,
Games
adalah target faktor ulang (refactor) ini.contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }
-
Buka CloudFormation konsol untuk melakukan pembaruan tumpukan guna menerapkan kebijakan penghapusan.
-
Di halaman Tumpukan, dengan tumpukan yang dipilih, pilih Perbarui.
-
Di bawah Siapkan templat, Pilih Ganti templat saat ini.
-
Di bawah Tentukan templat, sediakan templat sumber yang diperbarui dengan atribut
DeletionPolicy
padaGamesTable
, lalu pilih Selanjutnya.-
Pilih Amazon S3 URL, lalu tentukan URL ke template sumber yang diperbarui di kotak teks.
-
Pilih Unggah file templat, lalu telusuri file templat sumber yang diperbarui.
-
-
Pada halaman Tentukan detail tumpukan, tidak ada perubahan yang diperlukan. Pilih Berikutnya.
-
Pada halaman Konfigurasikan pilihan tumpukan, tidak ada perubahan yang diperlukan. Pilih Berikutnya.
-
Pada Review
SourceStackName
halaman, tinjau perubahan Anda. Jika template Anda berisi IAM sumber daya, pilih Saya mengakui bahwa template ini dapat membuat IAM sumber daya untuk menentukan bahwa Anda ingin menggunakan IAM sumber daya dalam template. Untuk informasi selengkapnya tentang penggunaan IAM sumber daya dalam templat, lihatKontrol CloudFormation akses dengan AWS Identity and Access Management. Lalu, perbarui tumpukan sumber Anda dengan membuat set perubahan atau perbarui tumpukan sumber Anda secara langsung.
-
-
Hapus sumber daya, parameter terkait, dan output dari templat sumber, lalu tambahkan ke templat target.
Templat sumber sekarang terlihat seperti berikut.
contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } } } }
Contoh templat target berikut saat ini memiliki sumber daya
PlayersTable
, dan sekarang juga berisiGamesTable
.contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "PlayersTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "TableName": "Players", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }
-
Ulangi langkah 2 — 3 untuk memperbarui tumpukan sumber lagi, kali ini untuk menghapus sumber daya target dari tumpukan.
-
Melakukan operasi impor untuk menambahkan
GamesTable
ke tumpukan target.-
Di halaman Tumpukan, dengan tumpukan induk yang dipilih, pilih Tindakan tumpukan, lalu pilih Impor sumber daya ke tumpukan.
-
Baca halaman Gambaran umum Impor untuk daftar hal yang harus Anda sediakan selama operasi ini. Kemudian, pilih Selanjutnya.
-
Pada halaman Tentukan template, lengkapi salah satu dari berikut ini, lalu pilih Berikutnya.
-
Pilih Amazon S3 URL, lalu tentukan a URL di kotak teks.
-
Pilih Unggah file templat, lalu telusuri file yang akan diunggah.
-
-
Di halaman Identifikasi sumber daya, identifikasi sumber daya yang Anda pindahkan (dalam contoh ini,
GamesTable
). Untuk informasi selengkapnya, lihat Pengidentifikasi sumber daya.-
Di bawah Properti pengidentifikasi, pilih jenis pengidentifikasi sumber daya. Misalnya, sumber daya
AWS::DynamoDB::Table
dapat diidentifikasi menggunakan propertiTableName
. -
Di bawah Nilai pengidentifikasi, ketik nilai properti yang sebenarnya. Misalnya,
.GamesTables
-
Pilih Berikutnya.
-
-
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.
-
Pada Review
TargetStackName
halaman, konfirmasikan bahwa sumber daya yang benar sedang diimpor, lalu pilih Impor sumber daya. Ini secara otomatis memulai set perubahan yang dibuat pada langkah terakhir. Semua tanda stack-level diterapkan pada sumber daya yang diimpor saat ini. -
Panel Peristiwa di halaman Detail tumpukan menampilkan tumpukan induk Anda.
catatan
Tidak perlu menjalankan deteksi drift pada tumpukan induk setelah operasi impor ini karena
AWS::CloudFormation::Stack
sumber daya sudah dikelola oleh CloudFormation.
-
Memfaktorkan ulang tumpukan menggunakan AWS CLI
-
Dalam template sumber, tentukan sumber daya
Retain
DeletionPolicyyang ingin Anda pindahkan.Dalam contoh sumber templat berikut,
GamesTable
adalah target faktor ulang (refactor) ini.contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }
-
Perbarui tumpukan sumber untuk menerapkan kebijakan penghapusan ke sumber daya.
aws cloudformation update-stack --stack-name
SourceStackName
-
Hapus sumber daya, parameter terkait, dan output dari templat sumber, lalu tambahkan ke templat target.
Templat sumber sekarang terlihat seperti berikut.
contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "ServiceTable":{ "Type":"AWS::DynamoDB::Table", "Properties":{ "TableName":"Service", "AttributeDefinitions":[ { "AttributeName":"key", "AttributeType":"S" } ], "KeySchema":[ { "AttributeName":"key", "KeyType":"HASH" } ], "ProvisionedThroughput":{ "ReadCapacityUnits":5, "WriteCapacityUnits":1 } } } } }
Contoh templat target berikut saat ini memiliki sumber daya
PlayersTable
, dan sekarang juga berisiGamesTable
.contoh JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Import test", "Resources": { "PlayersTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "TableName": "Players", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } }, "GamesTable": { "Type": "AWS::DynamoDB::Table", "DeletionPolicy": "Retain", "Properties": { "TableName": "Games", "AttributeDefinitions": [ { "AttributeName": "key", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "key", "KeyType": "HASH" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 1 } } } } }
-
Perbarui tumpukan sumber untuk menghapus sumber daya
GamesTable
serta parameter dan output terkait dari tumpukan.aws cloudformation update-stack --stack-name
SourceStackName
-
Buat daftar sumber daya aktual untuk diimpor dan pengenal uniknya dalam format JSON string berikut. Untuk informasi selengkapnya, lihat Pengidentifikasi sumber daya.
[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]
Atau, Anda dapat menentukan parameter JSON -format dalam file konfigurasi.
Misalnya, untuk mengimpor
GamesTable
, Anda dapat membuatResourcesToImport.txt
file yang berisi konfigurasi berikut.[ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier": { "TableName":"Games" } } ]
-
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 JSON string sampel dengan JSON string aktual yang baru saja Anda buat.aws cloudformation create-change-set \ --stack-name
TargetStackName
--change-set-nameImportChangeSet
\ --change-set-typeIMPORT
\ --template-bodyfile://TemplateToImport.json
\ --resources-to-import "'[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}}]'
"catatan
--resources-to-import
tidak mendukung inlineYAML. Persyaratan untuk menghindari tanda kutip dalam JSON string 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 file URL sebagai input untuk
--resources-to-import
opsi, seperti yang ditunjukkan pada contoh berikut.--resources-to-import
file://ResourcesToImport.txt
-
Tinjau set perubahan untuk memastikan sumber daya yang benar sedang diimpor ke tumpukan target.
aws cloudformation describe-change-set \ --change-set-name
ImportChangeSet
-
Untuk memulai set perubahan dan mengimpor sumber daya, gunakan execute-change-set perintah berikut dan ganti teks placeholder. Semua tanda stack-level diterapkan ke sumber daya yang diimpor pada saat ini. Setelah operasi
(IMPORT_COMPLETE)
berhasil diselesaikan, sumber daya berhasil diimpor.aws cloudformation execute-change-set \ --change-set-name
ImportChangeSet
--stack-nameTargetStackName
catatan
Tidak perlu menjalankan deteksi drift pada tumpukan target setelah operasi impor ini karena sumber daya sudah dikelola oleh CloudFormation.