Mengirim dan Menerima Peristiwa Antara Akun AWS - Amazon CloudWatch Peristiwa

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

Mengirim dan Menerima Peristiwa Antara Akun AWS

catatan

Amazon EventBridge adalah cara pilihan untuk mengelola peristiwa Anda. CloudWatch Events dan EventBridge adalah layanan dan API dasar yang sama, tetapi EventBridge menyediakan lebih banyak fitur. Perubahan yang Anda buat di CloudWatch atau EventBridge akan muncul di setiap konsol. Untuk informasi selengkapnya, lihat Amazon EventBridge.

Anda dapat mengatur akun AWS untuk mengirim peristiwa ke akun AWS lain, atau untuk menerima peristiwa dari akun lain. Hal ini dapat berguna jika akun milik organisasi yang sama, atau milik organisasi yang merupakan mitra atau memiliki hubungan serupa.

Jika Anda mengatur akun untuk mengirim atau menerima peristiwa, Anda menentukan akun AWS mana yang dapat mengirim peristiwa ke atau menerima peristiwa dari Anda. Jika Anda menggunakan fitur AWS Organizations, Anda dapat menentukan organisasi dan memberikan akses ke semua akun di organisasi tersebut. Untuk informasi selengkapnya, lihat Apa itu AWS Organizations dalam Panduan Pengguna AWS Organizations.

Prosesnya adalah sebagai berikut:

  • Pada akun penerima, edit izin pada bus peristiwa default untuk mengizinkan akun AWS yang ditentukan, organisasi, atau semua akun AWS untuk mengirim peristiwa ke akun penerima.

  • Pada akun pengirim, atur satu atau lebih aturan dengan bus peristiwa default milik akun penerima sebagai target.

    Jika akun pengirim mewarisi izin untuk mengirim peristiwa karena merupakan bagian dari organisasi AWS yang memiliki izin, akun pengirim juga harus memiliki IAM role dengan kebijakan yang mengizinkannya untuk mengirim peristiwa ke akun penerima. Jika Anda menggunakan AWS Management Console untuk membuat aturan yang menargetkan akun penerima, peran dibuat secara otomatis. Jika Anda menggunakan AWS CLI, Anda harus membuat peran secara manual.

  • Pada akun penerima, atur satu atau lebih aturan yang cocok dengan peristiwa yang berasal dari akun pengirim.

Parameter Wilayah AWS di mana akun penerima menambahkan izin untuk bus peristiwa default harus wilayah yang sama di mana akun pengirim menciptakan aturan untuk mengirim peristiwa ke akun penerima.

Peristiwa yang dikirim dari satu akun ke akun lainnya dibebankan ke akun pengiriman sebagai peristiwa kustom. Akun penerima tidak dikenakan biaya. Untuk informasi selengkapnya, lihat Harga Amazon CloudWatch.

Jika akun penerima menetapkan aturan yang mengirimkan peristiwa yang diterima dari akun pengirim ke akun ketiga, peristiwa tersebut tidak dikirim ke akun ketiga.

Mengaktifkan Akun AWS untuk Menerima Peristiwa dari Akun AWS Lainnya

Untuk menerima peristiwa dari akun atau organisasi lain, Anda harus terlebih dahulu mengedit izin pada bus peristiwa default akun Anda. Bus peristiwa default menerima peristiwa dari layanan AWS, akun AWSterotorisasi lainnya, dan panggilan PutEvents.

Ketika Anda mengedit izin pada bus peristiwa default Anda untuk memberikan izin untuk akun AWS lainnya, Anda dapat menentukan akun berdasarkan ID akun atau ID organisasi. Atau Anda dapat memilih untuk menerima peristiwa dari semua akun AWS.

Awas

Jika Anda memilih untuk menerima peristiwa dari semua akun AWS, hati-hati untuk membuat aturan yang hanya cocok dengan peristiwa untuk menerima dari lainnya. Untuk membuat aturan yang lebih aman, pastikan bahwa pola peristiwa untuk setiap aturan berisi bidang Account dengan ID akun dari satu atau lebih akun yang darinya untuk menerima peristiwa. Aturan yang memiliki pola peristiwa yang berisi bidang Akun tidak cocok dengan peristiwa yang dikirim dari akun yang tidak tercantum dalam bidang Account. Untuk informasi selengkapnya, lihat Pola Peristiwa di CloudWatch Events.

Untuk mengaktifkan akun Anda untuk menerima peristiwa dari akun AWS lainnya yang menggunakan konsol

  1. Buka konsol CloudWatch di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Bus Peristiwa, Tambahkan Izin.

  3. Pilih Akun AWS atau Organisasi.

    Jika Anda memilih Akun AWS, masukkan 12 digit ID akun AWS dari akun untuk menerima peristiwa. Untuk menerima peristiwa dari semua akun AWS lain, pilih Semua orang(*).

    Jika Anda memilih Organisasi, pilih Organisasi saya untuk memberikan izin ke semua akun dalam organisasi yang salah satu anggotanya adalah akun saat ini. Atau pilih Organisasi lain dan masukkan ID organisasi dari organisasi tersebut. Anda harus menyertakan awalan o- saat Anda mengetik ID organisasi.

  4. Pilih Tambahkan.

  5. Anda dapat mengulangi langkah-langkah ini untuk menambahkan akun atau organisasi lain.

Untuk mengaktifkan akun Anda untuk menerima peristiwa dari akun AWS lainnya yang menggunakan AWS CLI

  1. Untuk mengaktifkan satu akun AWS spesifik untuk mengirim peristiwa, jalankan perintah berikut:

    aws events put-permission --action events:PutEvents --statement-id MySid --principal SenderAccountID

    Untuk mengaktifkan organisasi AWS untuk mengirim peristiwa, jalankan perintah berikut:

    aws events put-permission --action events:PutEvents --statement-id MySid --principal \* --condition '{"Type" : "StringEquals", "Key": "aws:PrincipalOrgID", "Value": "SenderOrganizationID"}'

    Untuk mengaktifkan semua akun AWS lainnya untuk mengirim peristiwa, jalankan perintah berikut:

    aws events put-permission --action events:PutEvents --statement-id MySid --principal \*

    Anda dapat menjalankan aws events put-permission beberapa kali untuk memberikan izin untuk kedua akun AWS individu dan organisasi, tetapi Anda tidak dapat menentukan akun individu dan organisasi dalam satu perintah.

  2. Setelah menetapkan izin untuk bus peristiwa default Anda, Anda dapat secara opsional menggunakan perintah describe-event-bus untuk memeriksa izin:

    aws events describe-event-bus

Mengirim Peristiwa ke Akun AWS Lain

Untuk mengirim peristiwa ke akun lain, konfigurasikan aturan CloudWatch Events yang memiliki bus peristiwa default akun AWS lain sebagai target. Bus peristiwa default yang menerima akun juga harus dikonfigurasi untuk menerima peristiwa dari akun Anda.

Untuk mengirim peristiwa dari akun Anda ke akun AWS lainnya yang menggunakan konsol

  1. Buka konsol CloudWatch di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Peristiwa, Buat Aturan.

  3. Untuk Sumber Peristiwa, pilih Pola Peristiwa dan pilih nama layanan dan jenis peristiwa untuk dikirim ke akun lain.

  4. Pilih Tambahkan Widget.

  5. Untuk Target, pilih Bus peristiwa di akun AWS lain. Untuk ID Akun, masukkan 12 digit ID akun AWS dari akun untuk mengirim peristiwa.

  6. IAM role diperlukan ketika akun pengirim ini memiliki izin untuk mengirim peristiwa karena akun penerima memberikan izin kepada seluruh organisasi.

    • Untuk membuat IAM role secara otomatis, pilih Buat peran baru untuk sumber daya khusus ini.

    • Jika tidak, pilih Gunakan peran yang ada. Pilih peran yang sudah memiliki izin yang memadai untuk meminta pembangunan ini. CloudWatch Events tidak memberikan izin tambahan untuk peran yang Anda pilih.

  7. Di bagian bawah halaman, pilih Konfigurasi Detail.

  8. Ketikkan sebuah nama dan deskripsi untuk aturan, lalu pilih Buat Aturan.

Untuk mengirim peristiwa ke akun AWS lain menggunakan AWS CLI

  1. Jika akun pengirim mewarisi izin untuk mengirim peristiwa karena merupakan bagian dari organisasi AWS yang memiliki izin dari akun penerima, akun pengirim juga harus memiliki peran dengan kebijakan yang mengizinkannya untuk mengirim peristiwa ke akun penerima. Langkah ini menjelaskan cara membuat peran tersebut.

    Jika akun pengirim diberikan izin untuk mengirim peristiwa melalui ID akun AWS, dan tidak melalui organisasi, langkah ini opsional. Anda bisa melewati langkah 2.

    1. Jika akun pengirim diberikan izin melalui organisasi, buat IAM role yang diperlukan. Pertama, buat file bernama assume-role-policy-document.json dengan isi berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Jalankan perintah berikut untuk membuat peran:

      $ aws iam create-role \ --profile sender \ --role-name event-delivery-role \ --assume-role-policy-document file://assume-role-policy-document.json
    3. Buat file bernama permission-policy.json dengan konten berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutEvents" ], "Resource": [ "arn:aws:events:us-east-1:${receiver_account_id}:event-bus/default" ] } ] }
    4. Masukkan perintah berikut untuk melampirkan kebijakan ke peran:

      $ aws iam put-role-policy \ --profile sender \ --role-name event-delivery-role \ --policy-name EventBusDeliveryRolePolicy --policy-document file://permission-policy.json
  2. Gunakan perintah put-rule untuk membuat aturan yang cocok dengan jenis peristiwa untuk dikirim ke akun lain.

  3. Tambahkan bus peristiwa default akun lain sebagai target aturan.

    Jika akun pengirim diberi izin untuk mengirim peristiwa dengan ID akunnya, peran tidak perlu ditentukan. Jalankan perintah berikut:

    aws events put-targets --rule NameOfRuleMatchingEventsToSend --targets "Id"="MyId","Arn"="arn:aws:events:region:$ReceiverAccountID:event-bus/default"

    Jika akun pengirim diberi izin untuk mengirim peristiwa oleh organisasinya, tentukan peran, seperti dalam contoh berikut:

    aws events put-targets --rule NameOfRuleMatchingEventsToSend --targets "Id"="MyId","Arn"="arn:aws:events:region:$ReceiverAccountID:event-bus/default","RoleArn"="arn:aws:iam:${sender_account_id}:role/event-delivery-role"

Menulis Aturan yang Cocok dengan Peristiwa dari Akun AWS Lain

Jika akun Anda diatur untuk menerima peristiwa dari akun AWS lainnya, Anda dapat menulis aturan yang cocok dengan peristiwa tersebut. Atur pola peristiwa aturan agar cocok dengan peristiwa yang Anda terima dari akun lain.

Kecuali Anda menentukan account dalam pola peristiwa aturan, salah satu aturan akun Anda, baik yang baru maupun yang sudah ada, yang cocok dengan peristiwa yang Anda terima dari pemicu akun lain berdasarkan peristiwa tersebut. Jika Anda menerima peristiwa dari akun lainnya, dan Anda ingin aturan untuk memicu hanya pada pola peristiwa ketika dibuat dari akun Anda sendiri, Anda harus menambahkan account dan menentukan ID akun Anda sendiri ke pola peristiwa aturan.

Jika Anda mengatur akun AWS untuk menerima peristiwa dari semua akun AWS, kami sangat menyarankan agar Anda menambahkan account ke setiap aturan CloudWatch Events di akun Anda. Hal ini mencegah aturan di akun Anda memicu peristiwa dari akun AWS yang tidak dikenal. Saat Anda menentukan bidang account dalam aturan, Anda dapat menentukan ID akun dari lebih dari satu akun AWS di bidang.

Untuk memiliki pemicu aturan pada peristiwa yang cocok dari akun AWS apa pun yang telah Anda berikan izin, jangan menentukan* di bidang account aturan. Melakukannya tidak akan cocok dengan peristiwa apa pun, karena * tidak pernah muncul di bidang account peristiwa. Alih-alih, hanya menghilangkan bidang account dari aturan.

Untuk menulis aturan pencocokan peristiwa dari akun lain menggunakan konsol

  1. Buka konsol CloudWatch di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Peristiwa, Buat Aturan.

  3. Untuk Sumber Peristiwa, pilih Pola Peristiwa dan pilih nama layanan dan jenis peristiwa yang sesuai aturan.

  4. Dekat Pola Pratinjau Peristiwa, pilih Edit.

  5. Di jendela edit, tambahkan baris Account yang menentukan mana akun AWS pengirim peristiwa ini yang harus dicocokkan dengan aturan. Sebagai contoh, jendela edit awalnya menunjukkan hal berikut:

    { "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }

    Tambahkan berikut ini untuk agar aturan cocok dengan pemberitahuan volume EBS yang dikirim oleh akun AWS 123456789012 dan 111122223333:

    { "account": [ "123456789012","111122223333" ], "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }
  6. Setelah mengedit pola peristiwa, pilih Simpan.

  7. Selesaikan pembuatan aturan seperti biasa, tetapkan satu atau lebih target di akun Anda.

Untuk menulis aturan pencocokan peristiwa dari akun AWS lain menggunakan AWS CLI

  • Gunakan perintah put-rule. Di field Account dalam pola peristiwa aturan, tentukan akun AWS lain agar sesuai aturan. Contoh aturan berikut cocok dengan perubahan status instans Amazon EC2 di akun AWS 123456789012 dan 111122223333:

    aws events put-rule --name "EC2InstanceStateChanges" --event-pattern "{\"account\":["123456789012", "111122223333"],\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}" --role-arn "arn:aws:iam::123456789012:role/MyRoleForThisRule"

Memigrasi Hubungan Pengirim-Penerima untuk Menggunakan AWS Organizations

Jika Anda memiliki akun pengirim yang izinnya diberikan langsung ke akun ID, dan Anda sekarang ingin mencabut izin tersebut dan memberikan akses akun pengiriman dengan memberikan izin kepada organisasi, Anda harus mengambil beberapa langkah tambahan. Langkah-langkah ini memastikan bahwa peristiwa dari akun pengirim masih bisa menuju akun penerima. Hal ini karena akun yang diberikan izin untuk mengirim peristiwa melalui organisasi juga harus menggunakan IAM role untuk melakukannya.

Untuk menambahkan izin yang diperlukan untuk memigrasi hubungan penerima pengirim

  1. Di akun pengirim, buat IAM role dengan kebijakan yang memungkinkannya untuk mengirim peristiwa ke akun penerima.

    1. Buat file bernama assume-role-policy-document.json dengan konten berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Jalankan perintah berikut untuk membuat IAM role:

      $ aws iam create-role \ --profile sender \ --role-name event-delivery-role \ --assume-role-policy-document file://assume-role-policy-document.json
    3. Buat file bernama permission-policy.json dengan konten berikut:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutEvents" ], "Resource": [ "arn:aws:events:us-east-1:${receiver_account_id}:event-bus/default" ] } ] }
    4. Masukkan perintah berikut untuk melampirkan kebijakan ke peran:

      $ aws iam put-role-policy \ --profile sender \ --role-name event-delivery-role \ --policy-name EventBusDeliveryRolePolicy --policy-document file://permission-policy.json
  2. Mengedit setiap aturan yang ada di akun pengirim dengan bus peristiwa default akun penerima sebagai target. Mengedit aturan dengan menambahkan peran yang Anda buat di langkah 1 ke informasi target. Gunakan perintah berikut:

    aws events put-targets --rule Rulename --targets "Id"="MyID","Arn"="arn:aws:events:region:$ReceiverAccountID:event-bus/default","RoleArn"="arn:aws:iam:${sender_account_id}:role/event-delivery-role"
  3. Di account penerima, jalankan perintah berikut untuk memberikan izin untuk akun di organisasi untuk mengirim peristiwa ke akun penerima:

    aws events put-permission --action events:PutEvents --statement-id Sid-For-Organization --principal \* --condition '{"Type" : "StringEquals", "Key": "aws:PrincipalOrgID", "Value": "SenderOrganizationID"}'

    Secara opsional, Anda juga dapat mencabut izin yang awalnya diberikan langsung ke akun pengirim:

    aws events remove-permission --statement-id Sid-for-SenderAccount