View a markdown version of this page

Dapatkan output yang diekspor dari tumpukan yang diterapkan CloudFormation - AWS CloudFormation

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

Dapatkan output yang diekspor dari tumpukan yang diterapkan CloudFormation

Jika Anda memiliki beberapa tumpukan di area yang sama Akun AWS dan Region, Anda mungkin ingin berbagi informasi di antara mereka. Ini berguna ketika satu tumpukan perlu menggunakan sumber daya yang dibuat oleh tumpukan lain.

Misalnya, Anda mungkin memiliki satu tumpukan yang membuat sumber daya jaringan, seperti subnet dan grup keamanan, untuk server web Anda. Tumpukan lain yang membuat server web yang sebenarnya kemudian dapat menggunakan sumber daya jaringan yang dibuat oleh tumpukan pertama. Anda tidak perlu mengkodekan ID sumber daya dalam templat tumpukan atau meneruskan ID sebagai parameter input.

Untuk berbagi informasi antar tumpukan, Anda mengekspor nilai keluaran dari satu tumpukan dan mengimpornya ke tumpukan lain. Begini cara kerjanya:

  1. Di template tumpukan pertama (misalnya, tumpukan jaringan), Anda menentukan nilai tertentu untuk ekspor dengan menggunakan Export bidang di Outputs bagian tersebut. Untuk informasi selengkapnya, lihat CloudFormation template Output sintaksis.

  2. Saat Anda membuat atau memperbarui tumpukan itu, CloudFormation ekspor nilai output, membuatnya tersedia untuk tumpukan lain di wilayah Akun AWS dan yang sama.

  3. Di template tumpukan lain, Anda menggunakan Fn::ImportValuefungsi untuk mengimpor nilai yang diekspor dari tumpukan pertama.

  4. Saat Anda membuat atau memperbarui tumpukan kedua (misalnya, tumpukan server web), CloudFormation secara otomatis mengambil nilai yang diekspor dari tumpukan pertama dan menggunakannya.

Untuk panduan dan contoh templat, lihat Lihat output sumber daya di tumpukan lain CloudFormation.

Mengekspor nilai output tumpukan versus menggunakan tumpukan bersarang

Tumpukan bersarang adalah tumpukan yang Anda buat dalam tumpukan lain dengan menggunakan AWS::CloudFormation::Stack sumber daya. Dengan tumpukan nest, Anda men-deploy dan mengelola semua sumber daya dari tumpukan tunggal. Anda dapat menggunakan output dari satu tumpukan dalam grup tumpukan nest sebagai input ke tumpukan lain dalam grup tersebut. Ini berbeda dari mengekspor nilai.

Jika Anda ingin mengisolasi berbagi informasi untuk dalam grup tumpukan nest, kami merekomendasikan Anda untuk menggunakan tumpukan nest. Untuk berbagi informasi dengan tumpukan lain (tidak hanya dalam grup tumpukan nest), ekspor nilai. Misalnya, Anda dapat membuat satu tumpukan dengan subnet dan kemudian mengekspor ID nya. Tumpukan lain dapat menggunakan subnet itu dengan mengimpor ID-nya. Setiap tumpukan tidak perlu membuat subnetnya sendiri. Selama tumpukan mengimpor ID subnet, Anda tidak dapat mengubah atau menghapusnya.

Untuk informasi lebih lanjut tentang tumpukan bersarang, lihat. Pisahkan template menjadi potongan-potongan yang dapat digunakan kembali menggunakan tumpukan bersarang

Pertimbangan-pertimbangan

Pembatasan berikut berlaku untuk referensi cross-stack:

  • Untuk masing-masing Akun AWS, Export nama harus unik dalam suatu Wilayah.

  • Saat menggunakan Export danFn::ImportValue, referensi cross-stack terbatas pada akun dan Wilayah yang sama. Untuk mereferensikan output tumpukan di seluruh akun atau Wilayah, gunakanFn::GetStackOutput.

  • Untuk output, nilai Name properti tidak Export dapat digunakan Ref atau GetAtt fungsi yang bergantung pada sumber daya.

    Demikian pula, ImportValue fungsi tidak dapat menyertakan Ref atau GetAtt fungsi yang bergantung pada sumber daya.

  • Setelah tumpukan lain mengimpor nilai output, Anda tidak dapat menghapus tumpukan yang mengekspor nilai output atau memodifikasi nilai output yang diekspor. Semua impor harus dihapus sebelum Anda dapat menghapus tumpukan ekspor atau mengubah nilai output.

Mencantumkan nilai output yang diekspor

Jika Anda perlu melihat nilai output yang diekspor dari tumpukan Anda, gunakan salah satu metode berikut:

Untuk mencantumkan nilai output yang diekspor (konsol)
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada bilah navigasi di bagian atas layar, pilih Anda AWS Region.

  3. Dari panel navigasi kiri, pilih Ekspor.

Untuk mencantumkan nilai output yang diekspor (AWS CLI)

Gunakan perintah berikut list-exports. Ganti us-east-1 dengan Anda AWS Region.

aws cloudformation list-exports --region us-east-1

Berikut ini adalah output contoh.

{ "Exports": [ { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-subnet-a", "Value": "subnet-07b410xmplddcfa03" }, { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-subnet-b", "Value": "subnet-075ed3xmplebd2fb1" }, { "ExportingStackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/private-vpc/99764070-b56c-xmpl-bee8-062a88d1d800", "Name": "private-vpc-vpcid", "Value": "vpc-011d7xmpl100e9841" } ] }

CloudFormation menunjukkan nama dan nilai output yang diekspor untuk wilayah saat ini dan tumpukan tempat mereka diekspor. Untuk menggunakan nilai output yang diekspor di template tumpukan lain, Anda dapat mereferensikannya menggunakan nama ekspor dan Fn::ImportValue fungsinya.

Pencantuman tumpukan yang mengimpor nilai output yang diekspor

Untuk menghapus atau mengubah nilai output yang diekspor, Anda harus terlebih dahulu mengetahui tumpukan mana yang mengimpornya.

Untuk melihat tumpukan yang mengimpor nilai output yang diekspor, gunakan salah satu metode berikut:

Untuk mencantumkan tumpukan yang mengimpor nilai output yang diekspor (konsol)
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Dari panel navigasi kiri, pilih Ekspor.

  3. Untuk melihat tumpukan mana yang mengimpor nilai ekspor tertentu, pilih Nama Ekspor untuk nilai ekspor tersebut. CloudFormation menampilkan halaman detail ekspor, yang mencantumkan semua tumpukan yang mengimpor nilai.

Untuk membuat daftar tumpukan yang mengimpor nilai keluaran yang diekspor (AWS CLI)

Gunakan perintah list-imports. Ganti us-east-1 dengan Anda AWS Region dan private-vpc-vpcid dengan nama nilai output yang diekspor.

aws cloudformation list-imports --region us-east-1 \ --export-name private-vpc-vpcid

CloudFormation mengembalikan daftar tumpukan yang mengimpor nilai.

{ "Imports": [ "my-app-stack" ] }

Setelah Anda mengetahui tumpukan mana yang mengimpor nilai ekspor tertentu, Anda perlu memodifikasi tumpukan tersebut untuk menghapus Fn::ImportValue fungsi yang mereferensikan nilai output. Anda harus menghapus semua impor yang mereferensikan nilai output yang diekspor sebelum Anda dapat menghapus atau mengubah nilai output yang diekspor.

Referensi output tanpa ekspor

Selain menggunakan Export dan Fn::ImportValue untuk referensi cross-stack, Anda dapat menggunakan Fn::GetStackOutput untuk referensi output stack secara langsung. Pendekatan ini tidak memerlukan tumpukan yang direferensikan untuk mendeklarasikan ekspor dan mendukung referensi lintas akun dan lintas wilayah.

Tabel berikut membandingkan dua pendekatan:

Perbandingan Ekspor dengan Fn:: ImportValue dan Fn:: GetStackOutput
Kemampuan Ekspor + Fn::ImportValue Fn::GetStackOutput
Akun yang sama, Wilayah yang sama Didukung Didukung
Cross-account Tidak didukung Didukung
Cross-Region Tidak didukung Didukung
Membutuhkan Ekspor eksplisit Ya Tidak
Jenis referensi Kuat (memblokir penghapusan tumpukan ekspor) Lemah (diselesaikan pada waktu penerapan)
Integritas referensial Ditegakkan Tidak ditegakkan

Kapan menggunakan setiap pendekatan:

  • Gunakan Export dan Fn::ImportValue ketika Anda membutuhkan integritas referensial yang kuat. Dengan pendekatan ini, CloudFormation mencegah Anda menghapus tumpukan yang mengekspor nilai yang dikonsumsi oleh tumpukan lain, melindungi Anda dari kerusakan dependensi secara tidak sengaja.

  • Gunakan Fn::GetStackOutput saat Anda perlu mereferensikan output di seluruh akun atau Wilayah, atau saat Anda memilih untuk tidak mengelola ekspor eksplisit. Sadarilah bahwa Fn::GetStackOutput menciptakan referensi yang lemah. Jika tumpukan atau output yang direferensikan dihapus, tumpukan konsumsi tidak diberi tahu, dan operasi selanjutnya yang menyelesaikan kembali referensi akan gagal.

Untuk informasi selengkapnya, lihat Fn:: GetStackOutput di Panduan Referensi CloudFormation Template.