

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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts"></a>

*Naveen Suthar dan Sandeep Gawande, Amazon Web Services*

## Ringkasan
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-summary"></a>

[Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html) Amazon EC2 Auto Scaling dan grup node Amazon Elastic Kubernetes Service (Amazon EKS).](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)

Ketika AMI bersama tidak digunakan lagi, [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-deprecate.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-deprecate.html), atau [tidak dibagikan,](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) 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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-prereqs"></a>

**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](https://developer.hashicorp.com/terraform/cli) (dokumentasi Terraform)
+  AWS Penyedia Terraform, [dikonfigurasi (dokumentasi](https://hashicorp.github.io/terraform-provider-aws/) Terraform)
+ (Opsional, tetapi disarankan) Backend Terraform, [dikonfigurasi](https://developer.hashicorp.com/terraform/language/backend) (dokumentasi Terraform)
+ Git, [diinstal](https://github.com/git-guides/install-git)

**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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-architecture"></a>

**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](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/2d709249-0c68-47d7-be5d-46e8a73071ed/images/8c48c4dd-d681-4c32-9ba8-8f5ad2d66f64.png)


Diagram menunjukkan alur kerja berikut:

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

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

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

1. 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.

1.  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.

   1. 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.

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

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

1. 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.

1. 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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-tools"></a>

**Layanan AWS**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah 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)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) membantu Anda mengirim dan menerima email dengan menggunakan alamat email dan domain Anda sendiri.

**Alat lainnya**
+ [HashiCorp Terraform](https://www.terraform.io/docs) adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [cross-account-ami-monitoring-terraform-samples](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples).

## Praktik terbaik
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-best-practices"></a>
+ Ikuti [Praktik terbaik untuk bekerja dengan AWS Lambda fungsi](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).
+ Ikuti [Praktik terbaik untuk membangun AMIs](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html).
+ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) dalam dokumentasi IAM.
+ Siapkan pemantauan dan peringatan untuk AWS Lambda fungsi. Untuk informasi selengkapnya, lihat [Memantau dan memecahkan masalah fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html).

## Epik
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-epics"></a>

### Sesuaikan file konfigurasi Terraform
<a name="customize-the-terraform-configuration-files"></a>


| 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](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/) Pusat Sumber Daya AWS Memulai. | DevOps insinyur | 
| Kloning repositori. | Masukkan perintah berikut. Ini mengkloning repositori [cross-account-ami-monitoring-terraform-samples](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples) dari dengan menggunakan SSH. GitHub <pre>git clone git@github.com:aws-samples/cross-account-ami-monitoring-terraform-samples.git</pre> | DevOps insinyur | 
| Perbarui file provider.tf. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html)Untuk informasi selengkapnya tentang mengonfigurasi penyedia, lihat [Beberapa konfigurasi penyedia dalam dokumentasi](https://developer.hashicorp.com/terraform/language/providers/configuration#alias-multiple-provider-configurations) Terraform. | DevOps insinyur | 
| Perbarui file terraform.tfvars. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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.[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps insinyur | 

### Terapkan solusi dengan menggunakan Terraform
<a name="deploy-the-solution-by-using-terraform"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan solusinya. | Di CLI Terraform, masukkan perintah berikut untuk menyebarkan AWS sumber daya di akun pembuat dan konsumen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc) dalam dokumentasi Amazon SES. | AWS Umum | 

### Validasi penyebaran sumber daya
<a name="validate-resource-deployment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Validasi penerapan di akun pembuat. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps insinyur | 
| Validasi penyebaran di akun konsumen. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps insinyur | 

### Validasi pemantauan
<a name="validate-monitoring"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat AMI di akun pembuat. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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](https://repost.aws/knowledge-center/launch-instance-custom-ami) (AWS Re:Post Knowledge Center) atau [Membuat template peluncuran untuk grup Auto Scaling (dokumentasi Amazon Auto EC2 Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)). | DevOps insinyur | 
| Validasi pemantauan dan peringatan. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps insinyur | 

### (Opsional) Hentikan pemantauan bersama AMIs
<a name="optional-stop-monitoring-shared-amis"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus sumber daya. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps insinyur | 

## Pemecahan masalah
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Saya tidak menerima peringatan email. | Mungkin ada beberapa alasan mengapa email Amazon SES tidak dikirim. Periksa hal-hal berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 

## Sumber daya terkait
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-resources"></a>

**AWS dokumentasi**
+ [Membangun fungsi Lambda dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) (dokumentasi Lambda)
+ [Buat AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html) ( EC2 dokumentasi Amazon)
+ [Bagikan AMI dengan spesifik Akun AWS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) ( EC2 dokumentasi Amazon)
+ [Batalkan pendaftaran AMI Anda (dokumentasi Amazon)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) EC2 

**Dokumentasi Terraform**
+ [Instal Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Konfigurasi Backend Terraform](https://www.terraform.io/language/settings/backends/configuration)
+ [Penyedia AWS Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Unduhan biner Terraform](https://developer.hashicorp.com/terraform/install)