Menggunakan kebijakan berbasis sumber daya untuk AmazonEventBridge - 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 AmazonEventBridge

Saat aturan berjalanEventBridge, semua target terkait dengan aturan dipanggil. Aturan dapat memanggil fungsi AWS Lambda, memublikasikan ke topik Amazon SNS, atau me-relay peristiwa tersebut ke aliran Kinesis. Untuk membuat panggilan API terhadap sumber daya yang Anda miliki,EventBridge perlu izin yang sesuai. Untuk sumber daya Lambda, Amazon SNS, Amazon SQS, dan AmazonCloudWatch 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 memasang dan mengonfigurasi AWS CLI, lihat Menyiapkan Pengaturan dengan AWS Command Line Interface dalam AWS Command Line Interface Panduan Pengguna.

Izin Amazon API Gateway

Untuk meminta titik akhir Amazon API Gateway Anda dengan menggunakanEventBridge aturan, tambahkan izin berikut untuk 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" ] } ] }

CloudWatchIzin log

SaatCloudWatch log menjadi target aturan,EventBridge buat pengaliran log, danCloudWatch log menyimpan teks dari peristiwa sebagai entri log. EventBridgeUntuk mengizinkan pengaliran log dan mencatat peristiwa,CloudWatch log harus menyertakan kebijakan berbasis sumber daya yang memungkinkanEventBridge untuk menulis keCloudWatch log.

Jika Anda menggunakanAWS Management Console untuk menambahkanCloudWatch 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 berikut memungkinkanEventBridge 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 ReferensiCloudWatch Logs API.

Izin AWS Lambda

Untuk mengaktifkanAWS Lambda fungsi Anda dengan menggunakanEventBridge aturan, tambahkan izin berikut untuk 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 mengaktifkanEventBridge untuk memanggil fungsi LambdaAWS 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 pengaturan izin yang memungkinkanEventBridge untuk menjalankan fungsi Lambda, lihat AddPermissiondan Menggunakan Lambda dengan Acara Terjadwal di PanduanAWS Lambda Pengembang.

Izin Amazon SNS

Untuk memungkinkanEventBridge untuk mempublikasikan ke topik Amazon SNS, gunakanaws sns get-topic-attributes danaws sns set-topic-attributes perintah.

catatan

Anda tidak dapat menggunakanCondition blok dalam kebijakan topik Amazon SNS untukEventBridge.

Untuk menambahkan izin yang memungkinkanEventBridge untuk memublikasikan 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:SourceOwner\":\"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: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 Amazon Simple Notification Service API Reference.

Izin Amazon SQS

Untuk mengizinkanEventBridge aturan menjalankan antrean Amazon SQS, gunakanaws sqs get-queue-attributes danaws sqs set-queue-attributes perintah.

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 mengaktifkanEventBridge aturan untuk memanggil antrean 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.

EventBridgePipa spesifik

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