メニュー
Amazon CloudWatch Events
ユーザーガイド

AWS アカウント間のイベントの送受信

別の AWS アカウントとの間でイベントを送受信するように AWS アカウントを設定できます。これは、2 つのアカウントが同じ組織に属している、パートナーである組織に属している、または同様の関係を持っている場合に役立ちます。

イベントを送受信するようにアカウントを設定する場合は、イベントの送信先または受信元の AWS アカウントを指定できます。

全体の手順は次のとおりです。

  • デフォルトイベントバス受信側アカウントのアクセス許可を編集し、1 つ以上の指定されたアカウント (またはすべての AWS アカウント) が受信側アカウントにイベントを送信できるようにします。

  • 送信側アカウントで、受信側アカウントのデフォルトのイベントバスをターゲットとする 1 つ以上のルールを設定します。

  • 受信側アカウントで、送信側アカウントからのイベントに一致する 1 つ以上のルールを設定します。

受信側アカウントがデフォルトのイベントバスにアクセス権限を追加する AWS リージョンは、送信側アカウントが受信側アカウントにイベントを送信するためのルールを作成するリージョンと同じである必要があります。

1 つのアカウントから別のアカウントに送信されたイベントは、カスタムイベントとして送信側アカウントに課金されます。受信側アカウントには課金されません。CloudWatch イベント の料金の詳細については、Amazon CloudWatch 料金表を参照してください。

受信側アカウントは、送信側アカウントから受信したイベントを第三のアカウントに送信するルールを設定できます。ただし、それらのイベントは第三のアカウントには送信されません。

AWS アカウントで他の AWS アカウントからイベントを受信できるようにする

他のアカウントからイベントを受信するには、最初にアカウントのデフォルトのイベントバスでアクセス許可を編集する必要があります。デフォルトのイベントバスは、AWS のサービス、他の承認された AWS アカウント、および PutEvents コールからイベントを受け入れることができます。

デフォルトのイベントバスのアクセス許可を編集して、他の AWS アカウントにアクセス許可を付与するときは、アカウント ID でアカウントを指定できます。または、すべての AWS アカウントからイベントを受信する選択ができます。

警告

すべての AWS アカウントからイベントを受信することを選択した場合、他のアカウントから受信するイベントのみに一致するルールを慎重に作成してください。より安全なルールを作成するには、各ルールのイベントパターンに、account フィールドと、イベントの受信元の 1 つ以上のアカウントのアカウント ID が含まれるようにします。アカウントフィールドが含まれているイベントパターンを持つルールは、他のアカウントから送信されたイベントと一致しません。詳細については、「CloudWatch イベント のイベントパターン」を参照してください。

コンソールを使用して、アカウントで他の AWS アカウントからイベントを受信できるようにするには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Event Buses]、[Add Permission] を選択します。

  3. [Principal] に、イベントの受信元アカウントの 12 桁の AWS アカウント ID を入力します。他のすべての AWS アカウントからイベントを受信するには、[Everybody(*)] を選択します。

  4. [追加] を選択します。

AWS CLI を使用して、アカウントで他の AWS アカウントからイベントを受信するには

  1. 1 つの特定の AWS アカウントでイベントの送信を有効にするには、次のコマンドを実行します。

    aws events put-permission --action events:PutEvents --statement-id MySid --principal SenderAccountID

    他のすべての AWS アカウントでイベントを送信を有効にするには、次のコマンドを実行します。

    aws events put-permission --action events:PutEvents --statement-id MySid --principal \*
  2. デフォルトのイベントバスのアクセス許可を設定したら、オプションで describe-event-bus コマンドを使用してアクセス許可を確認できます。

    aws events describe-event-bus

別の AWS アカウントへのイベントの送信

別のアカウントにイベントを送信するには、別の AWS アカウントのデフォルトのイベントバスをターゲットとする CloudWatch イベント ルールを設定できます。その受信側アカウントのデフォルトのイベントバスも、アカウントからイベントを受信するように設定する必要があります。

コンソールを使用してアカウントから別の AWS アカウントにイベントを送信するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Events]、[Create Rule] の順に選択します。

  3. [Event Source] で、[Event Pattern] を選択し、他のアカウントに送信するサービス名とイベントタイプを選択します。

  4. [Add Target] を選択します。

  5. ドロップダウンリストで、[Event bus in another AWS account] を選択します。次に、[Account ID] で、イベントの送信先 AWS アカウントの 12 桁のアカウント ID を入力します。

  6. ページの下部で、[Configure Details] を選択します。

  7. ルールの名前と説明を入力し、[Create Rule] を選択します。

AWS CLI を使用して別の AWS アカウントにイベントを送信するには

  1. put-rule コマンドを使用して、他のアカウントに送信するイベントタイプに一致するルールを作成します。

  2. 他のアカウントのデフォルトのイベントバスを、ルールのターゲットとして追加します。

    aws events put-targets --rule NameOfRuleMatchingEventsToSend --targets "Id"="MyId","Arn"="arn:aws:events:region:$ReceiverAccountID:event-bus/default"

別の AWS アカウントからのイベントに一致するルールの作成

アカウントが他の AWS アカウントからイベントを受信するように設定されている場合、それらのイベントに一致するルールを作成できます。他のアカウントから受信するイベントに一致するルールのイベントパターンを設定します。

ルールのイベントパターンで Account で指定しない限り、新しいルールと既存のルールの両方を含めて、他のアカウントから受信するイベントに一致するアカウントのすべてのルールが、それらのイベントに基づいてトリガーされます。別のアカウントからイベントを受信し、自分のアカウントから生成されたときにそのイベントパターンのみでルールがトリガーされるようにするには、Account を追加し、自分のアカウント ID をルールのイベントパターンに指定する必要があります。

すべての AWS アカウントからイベントを受け入れるように AWS アカウントを設定する場合、アカウントの各 CloudWatch イベント ルールに Account に追加することを強くお勧めします。これにより、アカウントのルールで、不明な AWS アカウントからのイベントによるトリガーの発生を防止できます。ルールで Account フィールドを指定するときは、1 つ以上の AWS アカウントのアカウント ID をフィールドで指定できます。

コンソールを使用して、別のアカウントからのイベントに一致するルールを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、[Events]、[Create Rule] の順に選択します。

  3. [Event Source] で、[Event Pattern] を選択し、ルールで一致するサービス名とイベントタイプを選択します。

  4. [Event Pattern Preview] の近くにある [Edit] を選択します。

  5. 編集ウィンドウで、このイベントを送信する AWS アカウントのうち、どれがルールと一致するか指定する Account 行を追加します。たとえば、編集ウィンドウの元の表示が次のようであるとします。

    { "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }

    AWS アカウント 123456789012 および 111122223333 から送信された EBS ボリューム通知にルールを一致させるには、以下を追加します。

    { "account": [ "123456789012","111122223333" ], "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ] }
  6. イベントパターンを編集し、[Save] を選択します。

  7. 通常どおりルールの作成を終了し、アカウントで 1 つ以上のターゲットを設定します。

AWS CLI を使用して、別の AWS アカウントからのイベントに一致するルールを作成するには

  • put-rule コマンドを使用して、ルールのイベントパターンの Account フィールドでルールが一致する、他の AWS アカウントを指定します。次の例では、ルールは AWS アカウント 123456789012 および 111122223333 の Amazon EC2 インスタンスの状態変更に一致します。

    aws events put-rule --name "EC2InstanceStateChanges" --event-pattern "{\"account\":["123456789012", "111122223333"],\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}" --role-arn "arn:aws:iam::123456789012:role/MyRoleForThisRule"