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

Diagram menunjukkan alur kerja berikut:
AMI di akun pembuat dibagikan dengan akun konsumen dalam hal yang sama Wilayah AWS.
Saat AMI dibagikan, EventBridge aturan di akun pembuat akan menangkap
ModifyImageAttributeacara dan memulai fungsi Lambda di akun pembuat.Fungsi Lambda menyimpan data yang terkait dengan AMI dalam tabel DynamoDB di akun pembuat.
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.
EventBridge Aturan memulai fungsi Lambda di akun konsumen. Fungsi Lambda melakukan hal berikut:
Fungsi Lambda memperbarui data terkait AMI dalam tabel DynamoDB di akun konsumen.
Fungsi Lambda mengasumsikan peran IAM di akun pembuat dan memperbarui tabel Lambda di akun pembuat. Dalam
Mappingtabel, ia membuat item yang memetakan ID instance atau meluncurkan ID template ke ID AMI masing-masing.
AMI yang dikelola secara terpusat di akun pembuat tidak digunakan lagi, dideregistrasi, atau tidak dibagikan.
EventBridge Aturan di akun pembuat menangkap
DeregisterImageperistiwaModifyImageAttributeatau denganremovetindakan dan memulai fungsi Lambda.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
Mappingtabel, maka prosesnya selesai.Jika ada instance IDs atau template peluncuran IDs yang terkait dengan AMI dalam
Mappingtabel, 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
Ikuti Praktik terbaik untuk bekerja dengan AWS Lambda fungsi.
Saat membuat peran IAM, ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Siapkan pemantauan dan peringatan untuk AWS Lambda fungsi. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah fungsi Lambda.
Epik
| Tugas | Deskripsi | Keterampilan 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 | DevOps insinyur |
Kloning repositori. | Masukkan perintah berikut. Ini mengkloning repositori cross-account-ami-monitoring-terraform-samples
| DevOps insinyur |
Perbarui file provider.tf. |
Untuk informasi selengkapnya tentang mengonfigurasi penyedia, lihat Beberapa konfigurasi penyedia dalam dokumentasi | DevOps insinyur |
Perbarui 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.
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan solusinya. | Di CLI Terraform, masukkan perintah berikut untuk menyebarkan AWS sumber daya di akun pembuat dan konsumen:
| 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 |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Validasi penerapan di akun pembuat. |
| DevOps insinyur |
Validasi penyebaran di akun konsumen. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat AMI di akun pembuat. |
| 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 | DevOps insinyur |
Validasi pemantauan dan peringatan. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus sumber daya. |
| DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Saya tidak menerima peringatan email. | Mungkin ada beberapa alasan mengapa email Amazon SES tidak dikirim. Periksa hal-hal berikut:
|
Sumber daya terkait
AWS dokumentasi
Membangun fungsi Lambda dengan Python (dokumentasi Lambda)
Buat AMI ( EC2 dokumentasi Amazon)
Bagikan AMI dengan spesifik Akun AWS ( EC2 dokumentasi Amazon)
Dokumentasi Terraform