View a markdown version of this page

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, menerbitkan ke topik Amazon SNS, atau menyampaikan acara ke aliran Kinesis. Untuk melakukan panggilan API terhadap sumber daya yang Anda miliki, EventBridge perlu izin yang sesuai. Untuk sumber daya Amazon CloudWatch Logs, EventBridge gunakan kebijakan berbasis sumber daya. Untuk sumber daya Lambda, Amazon SNS, dan Amazon SQS, EventBridge dapat menggunakan peran eksekusi IAM atau kebijakan berbasis sumber daya. Untuk aliran Kinesis, gunakan EventBridge kebijakan berbasis identitas.

penting

Untuk target Amazon CloudWatch Logs, jangan tentukan a RoleArn dalam konfigurasi target. Untuk target Lambda, Amazon SNS, dan Amazon SQS, Anda dapat menggunakan peran eksekusi IAM atau kebijakan berbasis sumber daya. Jika Anda menentukan target Lambda, Amazon SNS, atau Amazon SQS, pastikan peran tersebut memiliki izin yang diperlukan (misalnya,, lambda:InvokeFunctionsns:Publish, atau). RoleArn sqs:SendMessage Jika tidak ada peran eksekusi yang dikonfigurasi, EventBridge gunakan kebijakan berbasis sumber daya pada sumber daya target.

Anda menggunakan AWS CLI untuk menambahkan izin ke target Anda. Untuk informasi tentang cara menginstal dan mengkonfigurasi AWS CLI, lihat Memulai Pengaturan 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.

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

CloudWatch Izin log

Ketika CloudWatch Log adalah target aturan, membuat EventBridge 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 CloudWatch Log.

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

Contoh kebijakan berbasis sumber daya 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 ARN sumber daya sesuai dengan itu.

{ "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:region:account-id:log-group:/aws/events/*:*" }
Untuk membuat kebijakan sumber daya untuk CloudWatch Log menggunakan AWS CLI
  • Pada jendela perintah, masukkan perintah berikut.

    aws logs put-resource-policy --policy-name EventBridgeToCWLogsPolicy \ --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["events.amazonaws.com","delivery.logs.amazonaws.com"]},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":"arn:aws:logs:region:account-id:log-group:/aws/events/*:*"}]}'

Untuk informasi selengkapnya, lihat PutResourcePolicy panduan Referensi API CloudWatch Logs.

AWS Lambda izin

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

catatan

Atau, Anda dapat mengonfigurasi peran eksekusi IAM pada target dengan lambda:InvokeFunction izin. Resource-based kebijakan diperlukan hanya jika tidak ada peran eksekusi yang dikonfigurasi pada target.

{ "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 memanggil fungsi Lambda, lihat AddPermission dan Menggunakan Lambda dengan Acara Terjadwal di Panduan Peng AWS Lambda embang.

Izin Amazon SNS

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

Untuk menambahkan izin yang memungkinkan EventBridge untuk menerbitkan topik SNS
  1. Untuk mencantumkan atribut topik SNS, gunakan perintah berikut.

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

    Contoh berikut menunjukkan hasil topik SNS 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:SourceAccount\":\"account-id\"}}}]}", "TopicArn": "arn:aws:sns:region:account-id:topic-name", "SubscriptionsPending": "0" } }
  2. Gunakan Konverter JSON ke string untuk mengonversi pernyataan berikut ke 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:SourceAccount\":\"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 SetTopicAttributes tindakan di Referensi API Layanan Pemberitahuan Sederhana Amazon.

Izin Amazon SQS

Untuk mengiz EventBridge inkan aturan memanggil antrian Amazon SQS, gunakan perintah aws sqs get-queue-attributes andaws sqs set-queue-attributes.

Jika kebijakan untuk antrean SQS kosong, Anda harus terlebih dahulu membuat kebijakan dan kemudian Anda dapat menambahkan pernyataan izin untuk itu. Antrean SQS baru memiliki kebijakan kosong.

Jika antrean SQS sudah memiliki kebijakan, Anda perlu menyalin kebijakan asli dan menggabungkannya dengan pernyataan baru untuk menambahkan pernyataan izin untuk itu.

Untuk menambahkan izin yang mengaktifkan EventBridge aturan untuk memanggil antrian SQS
  1. Untuk mencantumkan atribut antrean SQS. 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 ke string untuk mengonversi 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 lebih lanjut, lihat Amazon SQS Policy Examples di Panduan Developer Amazon Simple Queue Service.

EventBridge Spesifikasi pipa

EventBridge Pipes tidak mendukung kebijakan berbasis sumber daya dan tidak memiliki API yang mendukung kondisi kebijakan berbasis sumber daya.

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