Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat tumpukan dari sumber daya yang ada
Topik ini menunjukkan cara membuat tumpukan dari AWS sumber daya yang ada dengan mendeskripsikannya dalam templat. Untuk memindai sumber daya yang ada dan secara otomatis membuat templat yang dapat Anda gunakan untuk mengimpor sumber daya yang ada ke CloudFormation atau mereplikasi sumber daya di akun baru, lihatHasilkan templat dari sumber daya yang ada dengan generator IAc.
Prasyarat
Sebelum memulai, Anda harus memiliki hal-hal berikut:
-
Template yang menjelaskan semua sumber daya yang Anda inginkan di tumpukan baru. Simpan template secara lokal atau di bucket Amazon S3.
-
Untuk setiap sumber daya yang ingin Anda impor, sertakan yang berikut ini:
-
properti dan nilai properti yang menentukan konfigurasi sumber daya saat ini.
-
pengidentifikasi unik untuk sumber daya, seperti nama sumber daya. Untuk informasi selengkapnya, lihat Pengidentifikasi sumber daya.
-
Topik
Contoh Templat
Dalam panduan ini, kami menganggap Anda menggunakan contoh template berikut, yang disebutTemplateToImport.json, yang menentukan dua tabel DynamoDB yang dibuat di luar. CloudFormation ServiceTabledan GamesTable merupakan target impor.
catatan
Template ini dimaksudkan sebagai contoh saja. Untuk menggunakannya untuk tujuan pengujian Anda sendiri, ganti sumber daya sampel dengan sumber daya dari akun Anda.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Import test",
"Resources": {
"ServiceTable": {
"Type": "AWS::DynamoDB::Table",
"DeletionPolicy": "Retain",
"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
}
}
}
}
}
Buat tumpukan dari sumber daya yang ada menggunakan Konsol Manajemen AWS
Masuk ke Konsol Manajemen AWS dan buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pada halaman Tumpukan, pilih Buat Tumpukan, lalu pilih Dengan sumber daya yang ada (sumber daya impor).
-
Baca halaman Gambaran Umum Impor untuk daftar hal yang harus Anda berikan selama operasi ini. Lalu, pilih Selanjutnya.
-
Di halaman Tentukan templat, berikan templat Anda 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.
-
-
Di halaman Identifikasi sumber daya, identifikasi setiap sumber daya target. Untuk informasi selengkapnya, lihat Pengidentifikasi sumber daya.
-
Di bawah Properti pengidentifikasi, pilih jenis pengidentifikasi sumber daya. Misalnya, sumber daya
AWS::DynamoDB::Tabledapat diidentifikasi menggunakanTableNameproperti. -
Di bawah Nilai pengidentifikasi, ketikkan nilai properti yang sebenarnya. Misalnya,
TableNameuntukGamesTablesumber daya di templat contoh adalah.Games -
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
stack-namehalaman Tinjauan, konfirmasikan bahwa sumber daya yang benar sedang diimpor, lalu pilih Impor sumber daya. Ini secara otomatis mengeksekusi perubahan set yang dibuat pada langkah terakhir.Panel Peristiwa halaman Detail tumpukan untuk tampilan tumpukan baru Anda.
-
(Opsional) Jalankan deteksi drift pada tumpukan untuk memastikan templat dan konfigurasi sebenarnya cocok dengan sumber daya yang diimpor. Untuk informasi lebih lanjut tentang mendeteksi penyimpangan, lihat. Mendeteksi penyimpangan di seluruh tumpukan CloudFormation
-
(Opsional) Jika sumber daya yang diimpor tidak cocok dengan konfigurasi templat yang diharapkan, perbaiki konfigurasi templat atau perbarui sumber daya secara langsung. Dalam panduan ini, kita memperbaiki konfigurasi templat untuk mencocokkan konfigurasi yang sebenarnya.
-
Kembalikan operasi impor untuk sumber daya yang terpengaruh.
-
Tambahkan target impor ke templat Anda lagi, memastikan bahwa konfigurasi templat cocok dengan konfigurasi yang sebenarnya.
-
Ulangi langkah 2 - 8 menggunakan template yang dimodifikasi untuk mengimpor sumber daya lagi.
-
Buat tumpukan dari sumber daya yang ada menggunakan AWS CLI
-
Untuk mempelajari properti mana yang mengidentifikasi setiap jenis sumber daya dalam template, jalankan get-template-summary perintah, tentukan URL S3 template. Misalnya, sumber daya
AWS::DynamoDB::Tabledapat diidentifikasi menggunakanTableNameproperti. UntukGamesTablesumber daya dalam templat contoh, nilaiTableNameadalahGames. Anda akan membutuhkan informasi ini di langkah berikutnya.aws cloudformation get-template-summary \ --template-urlhttps://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.jsonUntuk informasi selengkapnya, lihat Pengidentifikasi sumber daya.
-
Buat daftar sumber daya aktual dari template Anda dan pengenal uniknya dalam format string JSON berikut.
[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]Atau, Anda dapat menentukan parameter berformat JSON dalam file konfigurasi.
Misalnya, untuk mengimpor
ServiceTabledanGamesTable, Anda dapat membuatResourcesToImport.txtfile yang berisi konfigurasi berikut.[ { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"GamesTable", "ResourceIdentifier":{ "TableName":"Games" } }, { "ResourceType":"AWS::DynamoDB::Table", "LogicalResourceId":"ServiceTable", "ResourceIdentifier":{ "TableName":"Service" } } ] -
Untuk membuat set perubahan, gunakan create-change-set perintah berikut dan ganti teks placeholder. Untuk
--change-set-typeopsi, tentukan nilaiIMPORT. Untuk--resources-to-importopsi, ganti string JSON sampel dengan string JSON aktual yang baru saja Anda buat.aws cloudformation create-change-set \ --stack-nameTargetStack--change-set-nameImportChangeSet\ --change-set-typeIMPORT\ --template-urlhttps://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/TemplateToImport.json\ --resources-to-import'[{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"GamesTable","ResourceIdentifier":{"TableName":"Games"}},{"ResourceType":"AWS::DynamoDB::Table","LogicalResourceId":"ServiceTable","ResourceIdentifier":{"TableName":"Service"}}]'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-importopsi, seperti yang ditunjukkan pada contoh berikut.--resources-to-importfile://ResourcesToImport.txt -
Tinjau perubahan yang ditetapkan untuk memastikan sumber daya yang benar akan diimpor.
aws cloudformation describe-change-set \ --change-set-nameImportChangeSet--stack-nameTargetStack -
Untuk memulai set perubahan dan mengimpor sumber daya, gunakan execute-change-set perintah berikut dan ganti teks placeholder. Setelah berhasil menyelesaikan operasi
(IMPORT_COMPLETE), sumber daya berhasil diimpor.aws cloudformation execute-change-set \ --change-set-nameImportChangeSet--stack-nameTargetStack -
(Opsional) Jalankan deteksi drift pada
IMPORT_COMPLETEtumpukan untuk memastikan templat dan konfigurasi sebenarnya cocok dengan sumber daya yang diimpor. Untuk informasi lebih lanjut tentang mendeteksi penyimpangan, lihat. Mendeteksi penyimpangan di sumber daya tumpukan individu-
Jalankan deteksi drift pada tumpukan yang ditentukan.
aws cloudformation detect-stack-drift --stack-nameTargetStackJika berhasil, perintah ini mengembalikan output sampel berikut.
{ "Stack-Drift-Detection-Id" : "624af370-311a-11e8-b6b7-500cexample" } -
Lihat kemajuan operasi deteksi drift untuk ID deteksi drift tumpukan yang ditentukan.
aws cloudformation describe-stack-drift-detection-status \ --stack-drift-detection-id624af370-311a-11e8-b6b7-500cexample -
Lihat informasi drift untuk sumber daya yang telah diperiksa untuk drift di tumpukan yang ditentukan.
aws cloudformation describe-stack-resource-drifts --stack-nameTargetStack
-
-
(Opsional) Jika sumber daya yang diimpor tidak cocok dengan konfigurasi templat yang diharapkan, perbaiki konfigurasi templat atau perbarui sumber daya secara langsung. Dalam panduan ini, kita memperbaiki konfigurasi templat untuk mencocokkan konfigurasi yang sebenarnya.
-
Kembalikan operasi impor untuk sumber daya yang terpengaruh.
-
Tambahkan target impor ke templat Anda lagi, memastikan bahwa konfigurasi templat cocok dengan konfigurasi yang sebenarnya.
-
Ulangi langkah 3 - 6 menggunakan template yang dimodifikasi untuk mengimpor sumber daya lagi.
-