Menggunakan kebijakan berbasis sumber daya untuk Amazon EventBridge - Amazon EventBridge

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

Menggunakan kebijakan berbasis sumber daya untuk Amazon EventBridge

Ketika aturan berjalan EventBridge, semua target yang terkait dengan aturan dipanggil. Aturan dapat memanggil AWS Lambda fungsi, memublikasikan ke SNS topik Amazon, atau menyampaikan acara ke aliran Kinesis. Untuk melakukan API panggilan terhadap sumber daya yang Anda miliki, EventBridge memerlukan izin yang sesuai. Untuk sumber daya Lambda, AmazonSQS, SNS Amazon, dan Amazon CloudWatch Logs, EventBridge menggunakan kebijakan berbasis sumber daya. Untuk aliran Kinesis, EventBridge gunakan kebijakan berbasis identitas.

Anda menggunakan AWS CLI untuk menambahkan izin ke target Anda. Untuk informasi tentang cara menginstal dan mengkonfigurasi AWS CLI, lihat Menyiapkan dengan AWS Command Line Interface di Panduan AWS Command Line Interface Pengguna.

Izin Amazon API Gateway

Untuk memanggil titik akhir Amazon API Gateway Anda dengan menggunakan EventBridge aturan, tambahkan izin berikut ke kebijakan titik akhir API Gateway Anda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "execute-api:Invoke", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } }, "Resource": [ "execute-api:/stage/GET/api" ] } ] }

CloudWatch Izin log

Ketika CloudWatch Log adalah target aturan, EventBridge membuat aliran log, dan CloudWatch Log menyimpan teks dari peristiwa sebagai entri log. EventBridge Untuk memungkinkan membuat aliran log dan mencatat peristiwa, CloudWatch Log harus menyertakan kebijakan berbasis sumber daya yang memungkinkan EventBridge untuk menulis ke Log. CloudWatch

Jika Anda menggunakan AWS Management Console untuk menambahkan CloudWatch Log sebagai target aturan, kebijakan berbasis sumber daya akan dibuat secara otomatis. Jika Anda menggunakan AWS CLI untuk menambahkan target, dan kebijakan belum ada, Anda harus membuatnya.

Contoh berikut memungkinkan EventBridge untuk menulis ke semua grup log yang memiliki nama yang dimulai dengan/aws/events/. Jika Anda menggunakan kebijakan penamaan yang berbeda untuk jenis log ini, sesuaikan contoh yang sesuai.

{ "Statement": [ { "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Effect": "Allow", "Principal": { "Service": ["events.amazonaws.com", "delivery.logs.amazonaws.com"] }, "Resource": "arn:aws:logs:region:account:log-group:/aws/events/*:*", "Sid": "TrustEventsToStoreLogEvent" } ], "Version": "2012-10-17" }

Untuk informasi selengkapnya, lihat PutResourcePolicydi panduan API Referensi CloudWatch Log.

AWS Lambda izin

Untuk menjalankan AWS Lambda fungsi Anda dengan menggunakan EventBridge aturan, tambahkan izin berikut ke kebijakan fungsi Lambda Anda.

{ "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Principal": { "Service": "events.amazonaws.com" }, "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } }, "Sid": "InvokeLambdaFunction" }
Untuk menambahkan izin di atas yang memungkinkan EventBridge untuk memanggil fungsi Lambda menggunakan AWS CLI
  • Pada jendela perintah, masukkan perintah berikut.

    aws lambda add-permission --statement-id "InvokeLambdaFunction" \ --action "lambda:InvokeFunction" \ --principal "events.amazonaws.com" \ --function-name "arn:aws:lambda:region:account-id:function:function-name" \ --source-arn "arn:aws:events:region:account-id:rule/rule-name"

Untuk informasi selengkapnya tentang menyetel izin yang memungkinkan EventBridge untuk menjalankan fungsi Lambda, lihat dan AddPermissionMenggunakan Lambda dengan Acara Terjadwal di Panduan Pengembang.AWS Lambda

SNSIzin Amazon

Untuk memungkinkan EventBridge mempublikasikan ke SNS topik Amazon, gunakan perintah aws sns get-topic-attributes dan aws sns set-topic-attributes perintah.

catatan

Anda tidak dapat menggunakan Condition blok dalam kebijakan SNS topik Amazon untuk EventBridge.

Untuk menambahkan izin yang memungkinkan EventBridge untuk mempublikasikan topik SNS
  1. Untuk membuat daftar atribut SNS topik, gunakan perintah berikut.

    aws sns get-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name"

    Contoh berikut menunjukkan hasil dari SNS topik baru.

    { "Attributes": { "SubscriptionsConfirmed": "0", "DisplayName": "", "SubscriptionsDeleted": "0", "EffectiveDeliveryPolicy": "{\"http\":{\"defaultHealthyRetryPolicy\":{\"minDelayTarget\":20,\"maxDelayTarget\":20,\"numRetries\":3,\"numMaxDelayRetries\":0,\"numNoDelayRetries\":0,\"numMinDelayRetries\":0,\"backoffFunction\":\"linear\"},\"disableSubscriptionOverrides\":false}}", "Owner": "account-id", "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"account-id\"}}}]}", "TopicArn": "arn:aws:sns:region:account-id:topic-name", "SubscriptionsPending": "0" } }
  2. Gunakan konverter JSON to string untuk mengonversi pernyataan berikut menjadi string.

    { "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:region:account-id:topic-name" }

    Setelah Anda mengonversi pernyataan ke string, hasilnya seperti contoh berikut.

    {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}
  3. Tambahkan string yang Anda buat pada langkah sebelumnya ke "Statement"kumpulan di dalam "Policy" atribut.

  4. Gunakan aws sns set-topic-attributes perintah untuk menetapkan kebijakan baru.

    aws sns set-topic-attributes --topic-arn "arn:aws:sns:region:account-id:topic-name" \ --attribute-name Policy \ --attribute-value "{\"Version\":\"2012-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:GetTopicAttributes\",\"SNS:SetTopicAttributes\",\"SNS:AddPermission\",\"SNS:RemovePermission\",\"SNS:DeleteTopic\",\"SNS:Subscribe\",\"SNS:ListSubscriptionsByTopic\",\"SNS:Publish\"],\"Resource\":\"arn:aws:sns:region:account-id:topic-name\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"account-id\"}}}, {\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:region:account-id:topic-name\"}]}"

Untuk informasi selengkapnya, lihat SetTopicAttributestindakan di APIReferensi Layanan Pemberitahuan Sederhana Amazon.

SQSIzin Amazon

Untuk mengizinkan EventBridge aturan memanggil SQS antrian Amazon, gunakan perintah aws sqs get-queue-attributes danaws sqs set-queue-attributes.

Jika kebijakan untuk SQS antrian kosong, pertama-tama Anda harus membuat kebijakan, lalu menambahkan pernyataan izin ke dalamnya. SQSAntrian baru memiliki kebijakan kosong.

Jika SQS antrian sudah memiliki kebijakan, Anda perlu menyalin kebijakan asli dan menggabungkannya dengan pernyataan baru untuk menambahkan pernyataan izin ke dalamnya.

Untuk menambahkan izin yang mengaktifkan EventBridge aturan untuk memanggil antrian SQS
  1. Untuk daftar atribut SQS antrian. Pada jendela perintah, masukkan perintah berikut.

    aws sqs get-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attribute-names Policy
  2. Tambahkan pernyataan berikut.

    { "Sid": "AWSEvents_custom-eventbus-ack-sqs-rule_dlq_sqs-rule-target", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:region:account-id:queue-name", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:rule/bus-name/rule-name" } } }
  3. Gunakan konverter JSON to string untuk mengubah pernyataan sebelumnya menjadi string. Setelah Anda mengonversi kebijakan ke string, hasilnya terlihat seperti berikut.

    {\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}
  4. Buat file bernama set-queue-attributes.json dengan konten berikut.

    { "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"arn:aws:sqs:region:account-id:queue-name/SQSDefaultPolicy\",\"Statement\":[{\"Sid\": \"EventsToMyQueue\", \"Effect\": \"Allow\", \"Principal\": {\"Service\": \"events.amazonaws.com\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:region:account-id:queue-name\", \"Condition\": {\"ArnEquals\": {\"aws:SourceArn\": \"arn:aws:events:region:account-id:rule/rule-name\"}}}]}" }
  5. Menetapkan atribut kebijakan dengan menggunakan file set-queue-attributes.json yang baru saja dibuat sebagai input, seperti yang ditunjukkan dalam perintah berikut.

    aws sqs set-queue-attributes \ --queue-url https://sqs.region.amazonaws.com/account-id/queue-name \ --attributes file://set-queue-attributes.json

Untuk informasi selengkapnya, lihat Contoh SQS Kebijakan Amazon di Panduan Pengembang Layanan Antrian Sederhana Amazon.

EventBridge Spesifikasi pipa

EventBridge Pipa tidak mendukung kebijakan berbasis sumber daya dan tidak memiliki APIs yang mendukung kondisi kebijakan berbasis sumber daya.

Namun, jika Anda mengonfigurasi akses pipa melalui VPC titik akhir antarmuka, VPC titik akhir tersebut mendukung kebijakan sumber daya yang memungkinkan Anda mengelola akses ke EventBridge Pipe. APIs Untuk informasi selengkapnya, lihat Menggunakan Amazon EventBridge dengan titik VPC akhir Antarmuka