Pantau penggunaan Gambar Mesin Amazon bersama di beberapa Akun AWS - AWS Prescriptive Guidance

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

Pantau penggunaan Gambar Mesin Amazon bersama di beberapa Akun AWS

Naveen Suthar dan Sandeep Gawande, Amazon Web Services

Ringkasan

Amazon Machine Images (AMIs) digunakan untuk membuat instans Amazon Elastic Compute Cloud (Amazon EC2) di lingkungan Amazon Web Services (AWS) Anda. Anda dapat membuat AMIs akun AWS terpusat yang terpisah, yang disebut akun pembuat dalam pola ini. Anda kemudian dapat membagikan AMI di beberapa Akun AWS yang sama Wilayah AWS, yang disebut akun konsumen dalam pola ini. Mengelola AMIs dari satu akun memberikan skalabilitas dan menyederhanakan tata kelola. Di akun konsumen, Anda dapat mereferensikan AMI bersama di templat peluncuran Amazon EC2 Auto Scaling dan grup node Amazon Elastic Kubernetes Service (Amazon EKS).

Ketika AMI bersama tidak digunakan lagi, dideregistrasi, atau tidak dibagikan, yang Layanan AWS merujuk ke AMI di akun konsumen tidak dapat menggunakan AMI ini untuk meluncurkan instans baru. Setiap peristiwa penskalaan otomatis atau peluncuran ulang instance yang sama gagal. Hal ini dapat menyebabkan masalah di lingkungan produksi, seperti downtime aplikasi atau penurunan kinerja. Ketika peristiwa berbagi dan penggunaan AMI terjadi dalam beberapa kali Akun AWS, akan sulit untuk memantau aktivitas ini.

Pola ini membantu Anda memantau penggunaan dan status AMI bersama di seluruh akun di Wilayah yang sama. Ini menggunakan tanpa server Layanan AWS, seperti Amazon, Amazon DynamoDB EventBridge, AWS Lambda, dan Amazon Simple Email Service (Amazon SES). Anda menyediakan infrastruktur sebagai kode (IAc) dengan menggunakan HashiCorp Terraform. Solusi ini memberikan peringatan ketika layanan di akun konsumen mereferensikan AMI yang dideregistrasi atau tidak dibagikan.

Prasyarat dan batasan

Prasyarat

  • Dua atau lebih aktif Akun AWS: satu akun kreator dan satu atau lebih akun konsumen

  • Satu atau lebih AMIs yang dibagikan dari akun pembuat ke akun konsumen

  • Terraform CLI, diinstal (dokumentasi Terraform)

  • AWS Penyedia Terraform, dikonfigurasi (dokumentasi Terraform)

  • (Opsional, tetapi disarankan) Backend Terraform, dikonfigurasi (dokumentasi Terraform)

  • Git, diinstal

Batasan

  • Pola ini memantau AMIs yang telah dibagikan ke akun tertentu dengan menggunakan ID akun. Pola ini tidak memantau AMIs yang telah dibagikan ke organisasi dengan menggunakan ID organisasi.

  • AMIs hanya dapat dibagikan ke akun yang berada dalam hal yang sama Wilayah AWS. Pola ini memantau AMIs dalam satu Wilayah target. Untuk memantau penggunaan AMIs di beberapa Wilayah, Anda menerapkan solusi ini di setiap Wilayah.

  • Pola ini tidak memantau apa pun AMIs yang dibagikan sebelum solusi ini diterapkan. Jika Anda ingin memantau yang dibagikan sebelumnya AMIs, Anda dapat membatalkan pembagian AMI dan kemudian membagikannya kembali dengan akun konsumen.

Versi produk

  • Terraform versi 1.2.0 atau yang lebih baru

  • AWS Penyedia Terraform versi 4.20 atau yang lebih baru

Arsitektur

Tumpukan teknologi target

Sumber daya berikut disediakan sebagai IAc melalui Terraform:

  • Tabel Amazon DynamoDB

  • EventBridge Aturan Amazon

  • AWS Identity and Access Management Peran (IAM)

  • AWS Lambda fungsi

  • Amazon SES

Arsitektur target

Arsitektur untuk memantau penggunaan AMI bersama dan memperingatkan pengguna jika AMI tidak dibagikan atau dideregistrasi

Diagram menunjukkan alur kerja berikut:

  1. AMI di akun pembuat dibagikan dengan akun konsumen dalam hal yang sama Wilayah AWS.

  2. Saat AMI dibagikan, EventBridge aturan di akun pembuat akan menangkap ModifyImageAttribute acara dan memulai fungsi Lambda di akun pembuat.

  3. Fungsi Lambda menyimpan data yang terkait dengan AMI dalam tabel DynamoDB di akun pembuat.

  4. Saat akun Layanan AWS konsumen menggunakan AMI bersama untuk meluncurkan EC2 instans Amazon atau saat AMI bersama dikaitkan dengan templat peluncuran, EventBridge aturan di akun konsumen menangkap penggunaan AMI bersama.

  5. EventBridge Aturan memulai fungsi Lambda di akun konsumen. Fungsi Lambda melakukan hal berikut:

    1. Fungsi Lambda memperbarui data terkait AMI dalam tabel DynamoDB di akun konsumen.

    2. Fungsi Lambda mengasumsikan peran IAM di akun pembuat dan memperbarui tabel Lambda di akun pembuat. Dalam Mapping tabel, ia membuat item yang memetakan ID instance atau meluncurkan ID template ke ID AMI masing-masing.

  6. AMI yang dikelola secara terpusat di akun pembuat tidak digunakan lagi, dideregistrasi, atau tidak dibagikan.

  7. EventBridge Aturan di akun pembuat menangkap DeregisterImage peristiwa ModifyImageAttribute atau dengan remove tindakan dan memulai fungsi Lambda.

  8. Fungsi Lambda memeriksa tabel DynamoDB untuk menentukan apakah AMI digunakan di salah satu akun konsumen. Jika tidak ada instance IDs atau template peluncuran IDs yang terkait dengan AMI dalam Mapping tabel, maka prosesnya selesai.

  9. Jika ada instance IDs atau template peluncuran IDs yang terkait dengan AMI dalam Mapping tabel, maka fungsi Lambda menggunakan Amazon SES untuk mengirim pemberitahuan email ke pelanggan yang dikonfigurasi.

Alat

Layanan AWS

  • Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.

  • Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data real-time dari berbagai sumber. Misalnya, AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Simple Email Service (Amazon SES) membantu Anda mengirim dan menerima email dengan menggunakan alamat email dan domain Anda sendiri.

Alat lainnya

  • HashiCorp Terraform adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.

  • Python adalah bahasa pemrograman komputer tujuan umum.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub cross-account-ami-monitoring-terraform-samples.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat profil AWS CLI bernama.

Untuk akun pembuat dan setiap akun konsumen, buat profil bernama AWS Command Line Interface (AWS CLI). Untuk petunjuk, lihat Mengatur AWS CLI di Pusat Sumber Daya AWS Memulai.

DevOps insinyur

Kloning repositori.

Masukkan perintah berikut. Ini mengkloning repositori cross-account-ami-monitoring-terraform-samples dari dengan menggunakan SSH. GitHub

git clone git@github.com:aws-samples/cross-account-ami-monitoring-terraform-samples.git
DevOps insinyur

Perbarui file provider.tf.

  1. Masukkan perintah berikut untuk menavigasi ke terraform folder di repositori kloning.

    cd cross-account-ami-monitoring/terraform
  2. Buka file provider.tf.

  3. Perbarui konfigurasi AWS Penyedia Terraform untuk akun pembuat dan akun konsumen sebagai berikut:

    • Untukalias, masukkan nama untuk konfigurasi penyedia.

    • Untukregion, masukkan target Wilayah AWS tempat Anda ingin menerapkan solusi ini.

    • Untukprofile, masukkan profil AWS CLI bernama untuk mengakses akun.

  4. Jika Anda mengonfigurasi lebih dari satu akun konsumen, buat profil untuk setiap akun konsumen tambahan.

  5. Simpan dan tutup file provider.tf.

Untuk informasi selengkapnya tentang mengonfigurasi penyedia, lihat Beberapa konfigurasi penyedia dalam dokumentasi Terraform.

DevOps insinyur

Perbarui file terraform.tfvars.

  1. Buka file terraform.tfvars.

  2. Dalam account_email_mapping parameter, konfigurasikan peringatan untuk akun pembuat dan akun konsumen sebagai berikut:

    • Untukaccount, masukkan ID akun.

    • Untukemail, masukkan alamat email tempat Anda ingin mengirim peringatan. Anda hanya dapat memasukkan satu alamat email untuk setiap akun.

  3. Jika Anda mengonfigurasi lebih dari satu akun konsumen, masukkan akun dan alamat email untuk setiap akun konsumen tambahan.

  4. Simpan dan tutup file terraform.tfvars.

DevOps insinyur

Perbarui file main.tf.

Selesaikan langkah-langkah ini hanya jika Anda menerapkan solusi ini ke lebih dari satu akun konsumen. Jika Anda menerapkan solusi ini hanya ke satu akun konsumen, tidak diperlukan modifikasi file ini.

  1. Buka file main.tf.

  2. Untuk setiap akun konsumen tambahan, buat modul baru yang didasarkan pada consumer_account_A modul di template. Untuk setiap akun konsumen, untukprovider, nilainya harus sesuai dengan alias yang Anda masukkan dalam provider.tf file.

  3. Simpan dan tutup file main.tf.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan solusinya.

Di CLI Terraform, masukkan perintah berikut untuk menyebarkan AWS sumber daya di akun pembuat dan konsumen:

  1. Masukkan perintah berikut untuk menginisialisasi Terraform.

    terraform init
  2. Masukkan perintah berikut untuk memvalidasi konfigurasi Terraform.

    terraform validate
  3. Masukkan perintah berikut untuk membuat rencana eksekusi Terraform.

    terraform plan
  4. Tinjau perubahan konfigurasi dalam paket Terraform dan konfirmasikan bahwa Anda ingin menerapkan perubahan ini.

  5. Masukkan perintah berikut untuk menyebarkan sumber daya.

    terraform apply
DevOps insinyur

Verifikasi identitas alamat email.

Saat Anda menerapkan paket Terraform, Terraform membuat identitas alamat email untuk setiap akun konsumen di Amazon SES. Sebelum pemberitahuan dapat dikirim ke alamat email tersebut, Anda harus memverifikasi alamat email tersebut. Untuk petunjuk, lihat Memverifikasi identitas alamat email dalam dokumentasi Amazon SES.

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi penerapan di akun pembuat.

  1. Masuk ke akun pembuat.

  2. Di bilah navigasi, konfirmasikan bahwa sedang melihat target Wilayah AWS. Jika Anda berada di Wilayah lain, pilih nama Wilayah yang ditampilkan saat ini, lalu pilih Wilayah target.

  3. Buka Konsol DynamoDB.

  4. Di panel navigasi, pilih Tabel.

  5. Dalam daftar tabel, validasi bahwa AmiShare tabel ada.

  6. Buka Konsol Lambda.

  7. Di panel navigasi, pilih Fungsi.

  8. Dalam daftar fungsi, validasi bahwa ami-share fungsi tersebut ada.

  9. Buka konsol IAM.

  10. Di panel navigasi, pilih Peran.

  11. Dalam daftar peran, validasi bahwa external-ddb-role peran tersebut ada.

  12. Buka konsol EventBridge .

  13. Di panel navigasi, pilih Aturan.

  14. Dalam daftar aturan, validasi bahwa modify_image_attribute_event aturan ada.

  15. Buka konsol Amazon SES.

  16. Di panel navigasi, pilih Identitas Terverifikasi.

  17. Dalam daftar identitas, validasi bahwa identitas alamat email telah terdaftar dan diverifikasi untuk setiap akun konsumen.

DevOps insinyur

Validasi penyebaran di akun konsumen.

  1. Masuk ke akun konsumen.

  2. Di bilah navigasi, konfirmasikan bahwa sedang melihat target Wilayah AWS. Jika Anda berada di Wilayah lain, pilih nama Wilayah yang ditampilkan saat ini, lalu pilih Wilayah target.

  3. Buka Konsol DynamoDB.

  4. Di panel navigasi, pilih Tabel.

  5. Dalam daftar tabel, validasi bahwa Mapping tabel ada.

  6. Buka Konsol Lambda.

  7. Di panel navigasi, pilih Fungsi.

  8. Dalam daftar fungsi, validasi bahwa ami-deregister-function fungsi ami-usage-function dan ada.

  9. Buka konsol EventBridge .

  10. Di panel navigasi, pilih Aturan.

  11. Dalam daftar aturan, validasi bahwa ami_usage_events dan ami_deregister_events aturan ada.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat AMI di akun pembuat.

  1. Di akun pembuat, buat AMI pribadi. Untuk petunjuknya, lihat Membuat AMI dari EC2 instans Amazon.

  2. Bagikan AMI baru dengan salah satu akun konsumen. Untuk petunjuk, lihat Berbagi AMI dengan spesifik Akun AWS.

DevOps insinyur

Gunakan AMI di akun konsumen.

Di akun konsumen, gunakan AMI bersama untuk membuat EC2 instance Amazon atau templat peluncuran. Untuk petunjuknya, lihat Bagaimana cara meluncurkan EC2 instans Amazon dari AMI kustom (AWS Re:Post Knowledge Center) atau Membuat template peluncuran untuk grup Auto Scaling (dokumentasi Amazon Auto EC2 Scaling).

DevOps insinyur

Validasi pemantauan dan peringatan.

  1. Masuk ke akun pembuat.

  2. Buka EC2 konsol Amazon.

  3. Di panel navigasi, pilih AMIs.

  4. Pilih AMI dalam daftar, lalu pilih Tindakan, Edit izin AMI.

  5. Di bagian Akun bersama, pilih akun konsumen, lalu pilih Hapus yang dipilih.

  6. Pilih Simpan perubahan.

  7. Validasi bahwa alamat email target yang Anda tetapkan untuk akun konsumen menerima pemberitahuan bahwa pembagian dibatalkan untuk AMI.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus sumber daya.

  1. Masukkan perintah berikut untuk menghapus sumber daya yang digunakan oleh pola ini dan hentikan pemantauan bersama AMIs.

    terraform destroy
  2. Konfirmasikan destroy perintah dengan memasukkanyes.

DevOps insinyur

Pemecahan Masalah

IsuSolusi

Saya tidak menerima peringatan email.

Mungkin ada beberapa alasan mengapa email Amazon SES tidak dikirim. Periksa hal-hal berikut:

  1. Di bagian Epik, gunakan epik penyebaran sumber daya Validasi untuk mengonfirmasi bahwa infrastruktur telah disediakan dengan benar di semua. Akun AWS

  2. Validasi peristiwa fungsi Lambda di Amazon CloudWatch Logs. Untuk petunjuk, lihat Menggunakan CloudWatch konsol di dokumentasi Lambda. Konfirmasikan bahwa tidak ada masalah izin, seperti penolakan eksplisit dalam kebijakan berbasis identitas atau sumber daya apa pun. Untuk informasi selengkapnya, lihat Logika evaluasi kebijakan dalam dokumentasi IAM.

  3. Di Amazon SES, validasi bahwa status identitas alamat email telah Diverifikasi. Untuk informasi selengkapnya, lihat Memverifikasi identitas alamat email.

Sumber daya terkait

AWS dokumentasi

Dokumentasi Terraform