チュートリアル: Amazon EventBridge を使用して、組織の重要な変更をモニタリングする - AWS Organizations

チュートリアル: Amazon EventBridge を使用して、組織の重要な変更をモニタリングする

このチュートリアルでは、組織の変更をモニタリングできるように Amazon EventBridge (旧 Amazon CloudWatch Events) を設定する方法を紹介します。まず、ユーザーが特定の AWS Organizations 操作を呼び出したときにトリガーされるルールを設定します。次に、ルールがトリガーされたときに AWS Lambda 関数を実行するように Amazon EventBridge を設定し、イベントに関する詳細を E メールで送信できるように Amazon SNS を設定します。

次の図は、チュートリアルの主なステップを示しています。

Five-step process for creating and configuring AWS のサービス, from trail creation to rule testing.

ステップ 1: 証跡およびイベントセレクターを設定する

で、証跡AWS CloudTrailと呼ばれるログを作成します。すべての API コールをキャプチャするように設定します。

ステップ 2: Lambda 関数を設定する

イベントに関する詳細を S3 バケットにログ記録する AWS Lambda 関数を作成します。

ステップ 3: 受信者に E メールを送信する Amazon SNS トピックを作成する

受信者に E メールを送信する Amazon SNS トピックを作成し、自分自身でトピックをサブスクライブします。

ステップ 4: Amazon EventBridge ルールを作成する

指定された API コールの詳細を Lambda 関数および SNS トピックのサブスクライバーに渡すよう Amazon EventBridge に指示するルールを作成します。

ステップ 5: Amazon EventBridge ルールをテストする

監視対象の操作の 1 つを実行して新しいルールをテストします。このチュートリアルでは、監視対象の操作で、組織単位 (OU) を作成しています。Lambda 関数が作成するログエントリを表示し、Amazon SNS が受信者に送信する E メールを表示します。

ヒント

このチュートリアルを、アカウントの作成が完了した際のメール通知を送信など、類似したオペレーションを設定するガイドとして使用することもできます。アカウントの作成は非同期オペレーションであるため、デフォルトでは完了時に通知されません。AWS CloudTrail の使用方法および AWS Organizations での Amazon EventBridge の詳細については、「AWS Organizations でのログ記録とモニタリング」を参照してください。

前提条件

このチュートリアルでは、次のことを前提としています。

  • 組織の管理アカウントの IAM ユーザーとして AWS Management Console にサインインできます。IAM ユーザーには、CloudTrail のログ、Lambda の関数、Amazon SNS のトピック、Amazon EventBridge のルールを作成および設定するためのアクセス許可が必要です。アクセス許可を付与する方法の詳細については、IAM ユーザーガイドの「アクセス管理」または、アクセスを設定するサービスのガイドを参照してください。

  • ステップ 1 で設定した CloudTrail ログを受信するための既存の Amazon Simple Storage Service (Amazon S3) バケットにアクセスできます (または、バケットを作成するアクセス許可があります)。

重要

現在、AWS Organizations は、米国東部 (バージニア北部) リージョン でホストされています (グローバルに利用可能です)。このチュートリアルのステップを実行するには、そのリージョンを使用するよう AWS Management Console を設定する必要があります。

ステップ 1: 証跡およびイベントセレクターを設定する

このステップでは、管理アカウントにサインインして、AWS CloudTrail でログ (証跡と呼ばれる) を設定します。また、Amazon EventBridge がトリガーを呼び出すように、証跡でイベントセレクターを設定し、すべての読み取り/書き込み API コールをキャプチャします。

追跡を作成するには
  1. 組織の管理アカウントの管理者として AWS にサインインし、https://console.aws.amazon.com/cloudtrail/ の CloudTrail コンソールを開きます。

  2. コンソールウィンドウの右上隅にあるナビゲーションバーで、米国東部 (バージニア北部) リージョンを選択します。他のリージョンを選択した場合、AWS Organizations が Amazon EventBridge 設定のオプションとして表示されず、CloudTrail は AWS Organizations に関する情報をキャプチャしません。

  3. ナビゲーションペインで、[Trails] (追跡) を選択します。

  4. [追跡の作成]を選択します。

  5. [Trail name] (証跡名) に、My-Test-Trail と入力します。

  6. CloudTrail がログを配信する場所を指定するには、次のいずれかのオプションを実行します。

    • バケットを作成する必要がある場合は、[Create a new S3 bucket] (新しい S3 バケットの作成) を選択し、[Trail log bucket and folder] (Trail ログバケットとフォルダ) に新しいバケットの名前を入力します。

      注記

      S3 バケット名は、グローバルに 一意である必要があります。

    • 既にバケットがある場合、[Use existing S3 bucket] (既存の S3 バケットを使用) を選択し、次に S3 バケット リストからバケット名を選択します。

  7. [Next] を選択します。

  8. [Choose log events] (ログイベントの選択) ページの [Management events] (管理イベント) セクションで、[Read] (読み取り) と [Write] (書き込み) を選択します。

  9. [Next] を選択します。

  10. 場所を確認して [Create function] (関数の作成) を選択します。

Amazon EventBridge では、アラームルールが着信 API コールと一致したときに、アラートを送信する複数の異なる方法から選択できます。このチュートリアルでは、2 つの方法について説明します。API コールをログに記録できる Lambda 関数を呼び出す方法、およびトピックの受信者へ E メールまたはテキストメッセージを送信する Amazon SNS トピックに情報を送信する方法です。次の 2 つのステップでは、必要なコンポーネントである Lambda 関数および Amazon SNS トピックを作成します。

ステップ 2: Lambda 関数を設定する

このステップでは、後で設定する Amazon EventBridge ルールによって送信される API アクティビティをログに記録する Lambda 関数を作成します。

Amazon EventBridge イベントをログに記録する Lambda 関数を作成するには
  1. https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。

  2. Lambda を初めて利用する場合は、ようこそページの [Get Started Now] (今すぐ始める) を選択するか、[Create function] (関数を作成) を選択します。

  3. [Create function] (関数の作成) ページで、[Blueprints] (設計図) を選択します。

  4. [設計図] 検索ボックスでは、フィルターに hello を入力し、[hello-world] 設計図を選択します。

  5. [設定] を選択します。

  6. [基本的な情報] ページでは、以下を実行します。

    1. [Name] (名前) テキストボックスに、Lambda 関数名として LogOrganizationEvents を入力します。

    2. [Role] で、[Create a new role with basic Lambda permissions] を選択します。このロールは、必要なデータにアクセスし、出力ログを書き込むために Lambda 関数にアクセス許可を付与します。

  7. 次の例に示すように、 Lambda 関数のコードを編集します。

    console.log('Loading function'); exports.handler = async (event, context) => { console.log('LogOrganizationsEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); return event.key1; // Echo back the first key value // throw new Error('Something went wrong'); };

    このサンプルコードでは、「LogOrganizationEvents」マーカー文字列の後にイベントを構成する JSON 文字列を続けてイベントをログに記録します。

  8. [Create function (関数の作成)] を選択します。

ステップ 3: 受信者に E メールを送信する Amazon SNS トピックを作成する

このステップでは、受信者に E メールで情報を送信する Amazon SNS トピックを作成します。このトピックを、後で作成する Amazon EventBridge ルールのターゲットにします。

受信者に E メールを送信する Amazon SNS トピックを作成するには
  1. https://console.aws.amazon.com/sns/v3/ で Amazon SNS コンソールを開きます。

  2. ナビゲーションペインで、[トピック] を選択します。

  3. [Create new topic] を選択します。

    1. [トピック名] に OrganizationsCloudWatchTopic と入力します。

    2. [Display name (表示名)] に OrgsCWEvnt と入力します。

    3. [Create topic] (トピックの作成) を選択します。

  4. トピックのサブスクリプションを作成できるようになりました。先ほど作成したトピックの ARN を選択します。

  5. [Create subscription] を選択します。

    1. [Create subscription] ページの [Protocol] で [Email] を選択します。

    2. [エンドポイント] に E メールアドレスを入力します。

    3. [Create subscription] を選択します。AWS は、前のステップで指定した E メールアドレスに E メールを送信します。E メールが送信されたら、[サブスクリプションを確認] リンクを選択して、E メールを正常に受信したことを確認します。

    4. コンソールに戻り、ページを更新します。[Pending confirmation] メッセージが表示されなくなり、現在有効なサブスクリプション ID に置き換えられます。

ステップ 4: Amazon EventBridge ルールを作成する

必要な Lambda 関数がアカウントに存在するようになったので、ルールの基準が満たされた場合にそのルールを呼び出す Amazon EventBridge ルールを作成します。

EventBridge ルールを作成するには
  1. https://console.aws.amazon.com/events/ で[Amazon EventBridge console] (Amazon EventBridge コンソール) を開きます。

  2. コンソールを米国東部 (バージニア北部)リージョンに設定しないと、Organizations に関する情報は利用できません。コンソールウィンドウの右上隅にあるナビゲーションバーで、米国東部 (バージニア北部) リージョンを選択します。

  3. ルールの作成手順については、「Amazon EventBridge ユーザーガイド」の「Getting started with Amazon EventBridge」(Amazon EventBridge の開始方法) を参照してください。

ステップ 5: Amazon EventBridge ルールをテストする

このステップでは、組織単位 (OU) を作成して Amazon EventBridge ルールを確認し、ログエントリを生成して、イベントに関する詳細を E メールで送信します。

AWS Management Console
OU を作成するには
  1. AWS Organizations コンソールで、[AWS アカウント] ページを開きます。

  2. [ Blue checkmark icon indicating confirmation or completion of a task. Root] (ルート) OU のチェックボックスをオンにし、[Action] (アクション) を選択してから、[Organizational unit] (組織単位) で [Create new] (新規作成) を選択します。

  3. OU の名前では、TestCWEOU と入力してから、[Create organizational unit (組織単位の作成)] を選択します。

EventBridge ログエントリを表示するには
  1. https://console.aws.amazon.com/cloudwatch/ にある CloudWatch コンソールを開きます。

  2. ナビゲーションページで [Logs] (ログ) を選択します。

  3. [Log Groups] (ロググループ) で、Lambda 関数 [/aws/lambda/LogOrganizationEvents] に関連付けられているグループを選択します。

  4. 各グループには 1 つ以上のストリームがあり、今日のための 1 つのグループがあります。これを選択します。

  5. ログを表示します。次のような行が表示されます。

    Log entries showing event reception with timestamp, version, and ID details.
  6. エントリの中央の行を選択すると、受信したイベントの完全な JSON テキストが表示されます。API リクエストのすべての詳細は、出力の requestParameters および responseElements で確認できます。

    2017-03-09T22:45:05.101Z 0999eb20-051a-11e7-a426-cddb46425f16 Received event: { "version": "0", "id": "123456-EXAMPLE-GUID-123456", "detail-type": "AWS API Call via CloudTrail", "source": "aws.organizations", "account": "123456789012", "time": "2017-03-09T22:44:26Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.04", "userIdentity": { ... }, "eventTime": "2017-03-09T22:44:26Z", "eventSource": "organizations.amazonaws.com", "eventName": "CreateOrganizationalUnit", "awsRegion": "us-east-1", "sourceIPAddress": "192.168.0.1", "userAgent": "AWS Organizations Console, aws-internal/3", "requestParameters": { "parentId": "r-exampleRootId", "name": "TestCWEOU" }, "responseElements": { "organizationalUnit": { "name": "TestCWEOU", "id": "ou-exampleRootId-exampleOUId", "arn": "arn:aws:organizations::1234567789012:ou/o-exampleOrgId/ou-exampleRootId-exampeOUId" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. E メールアカウントで、[OrgsCWEvnt] (Amazon SNS トピックの表示名) からのメッセージを確認します。E メールの本文には、前のステップで示されたログエントリと同じ JSON テキスト出力が含まれます。

クリーンアップ: 不要になったリソースを削除する

料金の発生を防ぐには、不要なこのチュートリアルの一部として作成した AWS リソースを削除する必要があります。

AWS 環境をクリーンアップするには
  1. CloudTrail コンソールを使用して、ステップ 1 で作成した My-Test-Trail という名前の証跡を削除します。

  2. ステップ 1 で Amazon S3 バケットを作成した場合は、Amazon S3 コンソールを使用して削除します。

  3. Lambda コンソールを使用して、ステップ 2 で作成した LogOrganizationEvents という名前の関数を削除します。

  4. Amazon SNS コンソールを使用して、ステップ 3 で作成した OrganizationsCloudWatchTopic という名前の Amazon SNS トピックを削除します。

  5. CloudWatch コンソールを使用して、ステップ 4 で作成した OrgsMonitorRule という名前の EventBridge ルールを削除します。

  6. 最後に、Organizations コンソールを使用して、ステップ 5 で作成した TestCWEOU という名前の OU を削除します。

これで完了です。このチュートリアルでは、組織の変更をモニタリングできるように EventBridge を設定しました。ユーザーが特定の AWS Organizations オペレーションを呼び出したときにトリガーされるルールを設定しました。ルールによって、イベントを記録した Lambda 関数が実行され、イベントに関する詳細を含む E メールが送信されました。