翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon でのリソースベースのポリシーの使用 EventBridge
ルールが で実行されると EventBridge、ルールに関連付けられたすべてのターゲットが呼び出されます。ルールは、 AWS Lambda 関数を呼び出したり、Amazon SNS トピックに発行したり、イベントを Kinesis ストリームに中継したりできます。所有しているリソースに対して API コールを行うには、 に適切なアクセス許可 EventBridge が必要です。Lambda、Amazon SNSAmazon SQS、および Amazon CloudWatch Logs リソースの場合、 はリソースベースのポリシー EventBridge を使用します。Kinesis ストリームの場合、アイデンティティベースのポリシー EventBridge を使用します。
を使用して AWS CLI 、ターゲットにアクセス許可を追加します。をインストールして設定する方法については AWS CLI、「 ユーザーガイド」の「 のセットアップ AWS Command Line InterfaceAWS Command Line Interface 」を参照してください。
トピック
Amazon API Gateway のアクセス許可
EventBridge ルールを使用して Amazon API Gateway エンドポイントを呼び出すには、API Gateway エンドポイントのポリシーに次のアクセス許可を追加します。
{ "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 ログのアクセス許可
CloudWatch ログがルールのターゲットである場合、 はログストリーム EventBridge を作成し、 CloudWatch ログはイベントからのテキストをログエントリとして保存します。 EventBridge がログストリームを作成し、イベントをログに記録するには、 CloudWatch が ログに書き込むことができるリソースベースのポリシーを CloudWatch EventBridge ログに含める必要があります。
を使用してルールのターゲットとして CloudWatch ログ AWS Management Console を追加すると、リソースベースのポリシーが自動的に作成されます。を使用してターゲット AWS CLI を追加し、ポリシーがまだ存在しない場合は、作成する必要があります。
次の例では EventBridge 、 が で始まる名前を持つすべてのロググループに書き込むことを許可します/aws/events/
。これらのタイプのログに別の命名ポリシーを使用する場合は、それに応じて例を調整します。
{ "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" }
詳細については、「 Logs API リファレンスガイドPutResourcePolicy」の「」を参照してください。 CloudWatch
AWS Lambda アクセス許可
EventBridge ルールを使用して AWS Lambda 関数を呼び出すには、Lambda 関数のポリシーに次のアクセス許可を追加します。
{ "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" }
を使用して Lambda 関数を呼び出す EventBridge ために を有効にする上記のアクセス許可を追加するには AWS CLI
-
コマンドプロンプトで、次のコマンドを入力します。
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
"
が Lambda 関数 EventBridge を呼び出すためのアクセス許可の設定の詳細については、「」のAddPermission「」および「スケジュールされたイベントで Lambda を使用するAWS Lambda 」を参照してください。
Amazon SNS のアクセス許可
EventBridge が Amazon SNS トピックに発行できるようにするには、 コマンドaws sns get-topic-attributes
と aws sns set-topic-attributes
コマンドを使用します。
注記
の Amazon SNS トピックポリシーで Condition
ブロックを使用することはできません EventBridge。
が SNS トピックを発行 EventBridge できるようにするアクセス許可を追加するには
-
SNS トピックの属性を一覧表示するには、次のコマンドを使用します。
aws sns get-topic-attributes --topic-arn "arn:aws:sns:
region
:account-id
:topic-name
"次の例は、新しい SNS トピックの結果を示しています。
{ "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" } } -
JSON から文字列へのコンバーター
を使用して、次のステートメントを文字列に変換します。 { "Sid": "PublishEventsToMyTopic", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:
region
:account-id
:topic-name
" }文字列に変換したステートメントは、次の例のようになります。
{\"Sid\":\"PublishEventsToMyTopic\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"sns:Publish\",\"Resource\":\"arn:aws:sns:
region
:account-id
:topic-name
\"} -
前のステップで作成した文字列を、
"Policy"
属性の中の"Statement"
コレクションに追加します。 -
新しいポリシーを設定するには、
aws sns set-topic-attributes
コマンドを使用します。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
\"}]}"
詳細については、「Amazon Simple Notification Service API リファレンス」の「 SetTopicAttributesアクション」を参照してください。
Amazon SQS のアクセス許可
EventBridge ルールが Amazon SQS キューを呼び出せるようにするには、 コマンドaws sqs get-queue-attributes
と aws sqs set-queue-attributes
コマンドを使用します。
SQS キューのポリシーが空の場合は、まずポリシーを作成してから、それに許可ステートメントを追加する必要があります。新しい SQS キューには空のポリシーがあります。
SQS キューに既にポリシーがある場合は、元のポリシーをコピーして、新しいステートメントと組み合わせ、そこに許可ステートメントを追加する必要があります。
EventBridge ルールが SQS キューを呼び出すことを有効にするアクセス許可を追加するには
-
SQS キューの属性を一覧表示するには、コマンドプロンプトで、次のコマンドを入力します。
aws sqs get-queue-attributes \ --queue-url https://sqs.
region
.amazonaws.com/account-id
/queue-name
\ --attribute-names Policy -
次のステートメントを追加します。
{ "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
" } } } -
JSON から文字列へのコンバーター
を使用して、上のステートメントを文字列に変換します。文字列に変換したポリシーは、次のようになります。 {\"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
\"}} -
set-queue-attributes.json
というファイルを次の内容で作成します。{ "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
\"}}}]}" } -
次のコマンドに示すように、先ほど作成した
set-queue-attributes.json
ファイルを入力として使用して、ポリシー属性を設定します。aws sqs set-queue-attributes \ --queue-url https://sqs.
region
.amazonaws.com/account-id
/queue-name
\ --attributes file://set-queue-attributes.json
詳細については、『Amazon Simple Queue サービスデベロッパーガイド』の「Amazon SQS ポリシーの例」を参照してください。
EventBridge パイプの詳細
EventBridge Pipes はリソースベースのポリシーをサポートしておらず、リソースベースのポリシー条件をサポートする APIs はありません。
ただし、インターフェイス VPC エンドポイントを介してパイプアクセスを設定すると、その VPC エンドポイントは、パイプ APIs EventBridge へのアクセスを管理できるリソースポリシーをサポートします。詳細については、「インターフェイス VPC エンドポイント EventBridge での Amazon の使用 」を参照してください。