別の AWS アカウントまたは AWS リージョンにイベントを送信しても、Amazon EventBridge の宛先でイベントルールが開始されません。
簡単な説明
次の原因で、イベントを複数のアカウントまたはリージョンに発行できない場合があります。
- ソースアカウントのイベントルールが開始されなかったか、ターゲットの呼び出しが失敗した。
- ソースアカウントまたは組織に正しいアクセス許可が欠けている。
- 宛先アカウントのイベントルールが開始されなかったか、ターゲットの呼び出しが失敗した。
失敗した呼び出しのエラーコードを取得するには、デッドレターキュー (DLQ) を使用します。詳細については、「EventBridge の再試行設定を変更し、失敗した呼び出しに対して DLQ を使用する方法を教えてください」を参照してください。
解決策
ソースアカウントのイベントルールが開始されなかったか、ターゲットの呼び出しが失敗した
EventBridge は、ソースアカウントがイベントルールを開始してターゲットを呼び出した場合にのみ、複数アカウントにイベントを発行します。
EventBridge のパターンが受信イベントと一致したときに、EventBridge はルールを開始します。パターンが一致した場合、EventBridge は一致したイベントに対応する TriggeredRules メトリクスに 1 という値を送信します。EventBridge メトリクスの詳細については、「Monitoring Amazon EventBridge」(Amazon EventBridge のモニタリング) を参照してください。
EventBridge がルールを開始した場合は、対応するルールの Invocations メトリクスを参照し、EventBridge がターゲットを呼び出したことを確認します。Invocations メトリクスは、EventBridge がターゲットの呼び出しを試行したことのみを示します。このメトリクスでは、呼び出しの完了は確認できません。
ターゲット呼び出しの完了ステータスを確認するには、対応するルールの FailedInvocations メトリクスを参照します。FailedInvocations メトリクスにはデータポイントがなく、Invocations メトリクスには対応するデータポイントがある場合、EventBridge によりターゲットが正常に呼び出されたことを示します。
宛先アカウントのイベントバスに必要なアクセス許可が欠けていると、呼び出しが失敗する可能性があります。ソースアカウントルールのターゲットに対する AWS Identity and Access Management (IAM) アクセス許可が不十分な場合にも、呼び出しが失敗する可能性があります。
ソースアカウントまたは組織に正しいアクセス許可が欠けている
他のアカウントや AWS Organizations からイベントを受信するには、ソースアカウントにイベントを送信するためのアクセス許可が必要です。イベントバスにアタッチされているリソースベースのポリシーで、ソースアカウントに適切なアクセス許可を付与していることを確認します。
正しい権限を持つポリシーの例:
{ "Version": "2012-10-17",
"Statement": [{
"Sid": "WebStoreCrossAccountPublish",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SOURCE-ACC-ID:root"
},
"Action": "events:PutEvents",
"Resource": "arn:aws:events:REGION:DESTINATION-ACC-ID:event-bus/destination-account-bus-name"
}]
}
注: SOURCE-ACC-ID をソースアカウントの ID に、DESTINATION-ACC-ID を宛先アカウントの ID に置き換えてください。また、REGION を宛先アカウントのリージョンに、destination-account-bus-name を宛先アカウントのバス名に置き換えてください。
ルールのターゲットがイベントバスの場合は、IAM ロールを使用し、別のアカウントまたはリージョンにイベントを送信するためのアクセス許可を付与します。次のリソースベースのポリシーを IAM ロールにアタッチします。
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "ActionsForResource",
"Effect": "Allow",
"Action": [
"events:PutEvents"
],
"Resource": [
"arn:aws:events:REGION:DESTINATION-ACC-ID:event-bus/DESTINATION-ACCOUNT-BUS-NAME"
]
}
]
}
注: DESTINATION-ACC-ID を宛先アカウントの ID に置き換えてください。また、REGION を宛先アカウントのリージョンに、DESTINATION-ACCOUNT-BUS-NAME を宛先アカウントのバス名に置き換えてください。
そうすることで、ソースアカウントは宛先アカウントのイベントバスに PutEvents API コールを実行できるようになります。
PutTargets を使用してルールのターゲットを手動で作成し、イベントバスへの組織全体のアクセス許可を設定する場合は、IAM ロールを指定します。
必要な IAM アクセス許可の詳細については、「Grant permissions to allow events from other AWS accounts」(他の AWS アカウントからのイベントを許可するアクセス許可を付与する) および「Permissions for event buses in Amazon EventBridge」(Amazon EventBridge におけるイベントバス用のアクセス許可) を参照してください。
宛先アカウントのイベントルールが開始されなかったか、ターゲットの呼び出しが失敗した
宛先アカウントのイベントバスにイベントを公開する場合、宛先アカウントで送信者アカウントからのイベントと一致するルールを設定します。
ルールのパターンが、そのルールを開始する受信イベントと一致していることを確認するには、宛先アカウントのルールメトリクスを確認します。ターゲットの呼び出しが成功したことを確認します。EventBridge メトリクスの詳細については、「Monitoring Amazon EventBridge」(Amazon EventBridge のモニタリング) を参照してください。