教學課程:使用 Amazon 監控組織的重要變更 EventBridge - AWS Organizations

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使用 Amazon 監控組織的重要變更 EventBridge

本教學說明如何設定 Amazon EventBridge (以前稱為 Amazon CloudWatch 活動),以監控您的組織是否有變更。首先,您可以設定在使用者叫用特定規則時觸發的規則 AWS Organizations 操作。接下來,您配 EventBridge 置 Amazon 運行 AWS Lambda 在觸發規則時發揮作用,並且您SNS將 Amazon 配置為發送包含有關事件詳細信息的電子郵件。

下圖顯示教學的主要步驟。

Five-step process for creating and configuring AWS 服務, from trail creation to rule testing.

步驟 1:設定追蹤記錄與事件選擇器

在中建立一個稱為追蹤的記錄 AWS CloudTrail。 您可以將其設定為擷取所有API呼叫。

步驟 2:設定 Lambda 函數

創建一個 AWS Lambda 將事件詳細信息記錄到 S3 存儲桶的功能。

步驟 3:創建一個向訂閱者發送電子郵件的 Amazon SNS 主題

創建一個 Amazon SNS 主題,向其訂閱者發送電子郵件,然後訂閱自己的主題。

步驟 4:創建一個 Amazon EventBridge 規則

建立規則,告知 Amazon EventBridge 將指定API呼叫的詳細資訊傳遞給 Lambda 函數和SNS主題訂閱者。

步驟 5:測試您的 Amazon EventBridge 規則

藉由執行其中一項受監控的操作,來測試您的新規則。在本教學課程中,受監控的操作會建立組織單位 (OU)。您可以檢視 Lambda 函數建立的記錄項目,並檢視 Amazon SNS 傳送給訂閱者的電子郵件。

秘訣

您也可以使用此教學作為設定類似操作 (例如在帳戶建立完成時傳送電子郵件通知) 的指南。由於帳戶建立是非同步的操作,當它完成時,您預設不會收到通知。有關使用的更多信息 AWS CloudTrail 和 EventBridge Amazon AWS Organizations,請參閱登錄和監控 AWS Organizations

必要條件

本教學課程的假設如下:

  • 您可以登入 AWS Management Console 以組織中管理帳戶的IAM使用者身分。IAM使用者必須具有建立和設定登入 CloudTrail、Lambda 中的函數SNS、Amazon 中的主題以及 Amazon 中的規則的許可 EventBridge。如需有關授與權限的詳細資訊,請參閱IAM使用指南中的存取管理,或您要為其設定存取權的服務指南。

  • 您可以存取現有的 Amazon Simple Storage Service (Amazon S3) 儲存貯體 (或者您有建立儲存貯體的權限),以接收您在步驟 1 中設定的 CloudTrail 日誌。

重要

目前, AWS Organizations 僅在美國東部 (維吉尼亞北部) 區域託管 (儘管全球提供)。若要執行本教學課程中的步驟,您必須設定 AWS Management Console 以使用該區域。

步驟 1:設定追蹤記錄與事件選擇器

在此步驟中,您可以登入管理帳戶並在中設定記錄檔 (稱為追蹤) AWS CloudTrail。 您也可以在追蹤上設定事件選取器,以擷取所有讀取/寫入API呼叫,以便 Amazon EventBridge 可觸發呼叫。

若要建立追蹤記錄
  1. 登入至 AWS 以組織管理帳戶的管理員身分,然後在開啟 CloudTrail 主控台https://console.aws.amazon.com/cloudtrail/

  2. 在主控台右上角的導覽列中,選擇美國東部 (維吉尼亞北部) 區域。如果您選擇不同的地區, AWS Organizations 不會在 Amazon EventBridge 組態設定中顯示為選項,也 CloudTrail 不會擷取有關的資訊 AWS Organizations.

  3. 在導覽窗格中,選擇 Trails (追蹤記錄)。

  4. 選擇 Create trail (建立追蹤)。

  5. 針對 Trail name (追蹤名稱),輸入 My-Test-Trail

  6. 執行下列其中一個選項,以 CloudTrail 指定傳送記錄檔的位置:

    • 如果您需要建立儲存貯體,請選擇 Create new S3 bucket (建立新的 S3 儲存貯體),然後針對 Trail log bucket and folder (追蹤日誌儲存貯體和資料夾),輸入新儲存貯體的名稱。

      注意

      S3 儲存貯體名稱必須在「全域」必須是唯一的。

    • 如果您已經擁有儲存貯體,請選擇 Use existing S3 bucket (使用現有的 S3 儲存貯體),然後從 S3 bucket (S3 儲存貯體) 清單中選擇儲存貯體的名稱。

  7. 選擇 Next (下一步)

  8. Choose log events (選擇日誌事件) 頁面的 Management events (管理事件) 區段中,選擇 Read (讀取) 和 Write (寫入)。

  9. 選擇 Next (下一步)

  10. 檢閱選項,然後選擇 Create trail (建立追蹤)。

Amazon EventBridge 可讓您從多種不同的方式中選擇,在警示規則與來電相符時傳送提API醒。本教學課程示範兩種方法:叫用可記錄API呼叫的 Lambda 函數,並將資訊傳送至 Amazon SNS 主題,以傳送電子郵件或文字訊息給主題的訂閱者。在接下來的兩個步驟中,您將建立所需的元件:Lambda 函數和 Amazon SNS 主題。

步驟 2:設定 Lambda 函數

在此步驟中,您會建立 Lambda 函數,以記錄您稍後設定的 Amazon EventBridge 規則傳送給該API活動的活動。

若要建立記錄 Amazon EventBridge 事件的 Lambda 函數
  1. 打開 AWS Lambda 控制台位於https://console.aws.amazon.com/lambda/

  2. 如果您是初次使用 Lambda,請選擇歡迎頁面上的 Get Started Now (立即開始使用);否則請選擇 Create function (建立函數)。

  3. Create function (建立函數) 頁面上,選擇 Use a blueprint (使用藍圖)

  4. Blueprints (藍圖) 搜尋方塊中,針對篩選條件輸入 hello,並選擇 hello-world 藍圖。

  5. 選擇設定

  6. Basic information (基本資訊) 頁面上,執行以下作業:

    1. 對於 Lambda 函數名稱,在 Name (名稱) 文字方塊中輸入 LogOrganizationEvents

    2. 針對 Role (角色),選擇 Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)。此角色會授予許可給您的 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. 選擇建立函數

步驟 3:創建一個向訂閱者發送電子郵件的 Amazon SNS 主題

在此步驟中,您會建立 Amazon SNS 主題,將資訊以電子郵件傳送給其訂閱者。您可以將此主題設為稍後建立的 Amazon EventBridge 規則的目標。

若要建立 Amazon SNS 主題以傳送電子郵件給訂閱者
  1. 在打開 Amazon SNS 控制台https://console.aws.amazon.com/sns/v3/

  2. 在導覽窗格中,選擇 Topics (主題)

  3. 請選擇 Create new topic (建立新主題)。

    1. 針對 Topic name (主題名稱),輸入 OrganizationsCloudWatchTopic

    2. 針對 Display name (顯示名稱),輸入 OrgsCWEvnt

    3. 請選擇建立主題

  4. 現在您可以建立該主題的訂閱。選擇ARN您剛建立的主題。

  5. 選擇 Create subscription (建立訂閱)。

    1. Create subscription (建立訂閱) 頁面上,針對 Protocol (通訊協定) 選擇 Email (電子郵件)

    2. 針對 Endpoint (端點),輸入電子郵件地址。

    3. 選擇 Create subscription (建立訂閱)。 AWS 傳送電子郵件至您在上一個步驟中指定的電子郵件地址。請等待該電子郵件送達,然後選取電子郵件中的 Confirm subscription (確認訂閱) 連結,來確認您已成功收到電子郵件。

    4. 返回主控台並重新整理頁面。Pending confirmation (待確認) 訊息會關閉,改而顯示目前有效的訂閱 ID。

步驟 4:創建一個 Amazon EventBridge 規則

現在您的帳戶中存在所需的 Lambda 函數,您可以建立一個 Amazon EventBridge 規則,在符合規則中的條件時呼叫該函數。

若要建立 EventBridge 規則
  1. 在打開 Amazon EventBridge 控制台https://console.aws.amazon.com/events/

  2. 將主控台設定為 US East (N. Virginia) (美國東部 (維吉尼亞北部)) 區域,否則組織的相關資訊將不可用。在主控台右上角的導覽列中,選擇美國東部 (維吉尼亞北部) 區域。

  3. 如需建立規則的指示,請參閱 Amazon EventBridge 使用者指南 EventBridge中的開始使用 Amazon。

步驟 5:測試您的 Amazon EventBridge 規則

在此步驟中,您會建立組織單位 (OU) 並遵守 Amazon EventBridge 規則、產生日誌項目,然後傳送包含事件詳細資訊的電子郵件給自己。

AWS Management Console
建立組織單位 (OU)
  1. 打開 AWS Organizations 控制台 AWS 帳戶頁面

  2. 選擇核取方塊 Blue checkmark icon indicating confirmation or completion of a task. Root (根) OU,選擇 Actions (動作),然後在 Organizational unit (組織單位) 下,選擇 Create new (建立新的)。

  3. 針對 OU 的名稱,輸入 TestCWEOU,然後選擇 Create organizational unit (建立組織單位)

若要查看記 EventBridge 錄項目
  1. 在開啟 CloudWatch 主控台https://console.aws.amazon.com/cloudwatch/

  2. 在導覽頁面中,選擇 Logs (日誌)

  3. 在「記錄群組」下,選擇與您的 Lambda 函數相關聯的群組:/aws/lambda/ LogOrganizationEvents

  4. 每個群組包含一或多個串流,而今天應該會有一個群組。請選擇此群組。

  5. 檢視日誌。您應該會看到與以下內容相似的資料列。

    Log entries showing event reception with timestamp, version, and ID details.
  6. 選取項目的中間列,以查看已接收事件的全JSON文。您可以在輸出的requestParameters和部responseElements分中查看API請求的所有詳細信息。

    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. 檢查您的電子郵件帳戶是否有來自 O 的消息rgsCWEvnt(您的 Amazon SNS 主題的顯示名稱)。電子郵件內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 函數,並傳送電子郵件,其中包含關於事件的詳細資訊。