本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用 Amazon EventBridge 監控您組織的重要變更
本教學課程說明如何設定 Amazon EventBridge、先前的 Amazon CloudWatch Events 來監控您組織的變更。首先設定規則,此規則會在使用者叫用特定 AWS Organizations 操作時觸發。接著,設定 Amazon EventBridge 在規則觸發時執行 AWS Lambda 函數,並設定 Amazon SNS 傳送電子郵件,內含關於此事件的詳細資訊。
下圖顯示教學的主要步驟。
- 步驟 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 Organizations 使用 AWS CloudTrail 和 Amazon EventBridge 的詳細資訊,請參閱 登錄和監控 AWS Organizations。
先決條件
本教學課程的假設如下:
-
您可以從組織中的管理帳戶,以 IAM 使用者的身分登入 AWS Management Console。IAM 使用者必須擁有許可,以在 CloudTrail 中建立日誌、在 Lambda 中建立函數、在 Amazon SNS 中建立主題,以及在 Amazon EventBridge 中建立規則,並進行設定。如需關於授與許可的詳細資訊,請參閱 IAM 使用者指南中的存取管理,或針對您想要設定其存取的服務,參閱該服務的指南。
-
您可以存取現有的 Amazon Simple Storage Service (Amazon S3) 儲存貯體 (或者您擁有建立儲存貯體的許可),來接收您在步驟 1 中所設定的 CloudTrail 日誌。
重要
目前,AWS Organizations 只在美國東部 (維吉尼亞北部) 區域中託管 (雖然全球皆可使用)。若要執行此教學課程中的步驟,您必須設定 AWS Management Console 使用該區域。
步驟 1:設定追蹤記錄與事件選擇器
在此步驟中,您會登入管理帳戶,並且在 中設定日誌 (稱為追蹤記錄AWS CloudTrail)。您也會設定針對追蹤的事件選擇器,以擷取所有讀取/寫入 API 呼叫,以便 Amazon EventBridge 具有要觸發的呼叫。
若要建立追蹤記錄
-
以組織管理帳戶管理員的身分登入 AWS,然後開啟位於 https://console.aws.amazon.com/cloudtrail/
的 CloudTrail 主控台。 -
在主控台右上角的導覽列中,選擇美國東部 (維吉尼亞北部) 區域。如果您選擇不同的區域,則在 Amazon EventBridge 的組態設定選項中不會出現 AWS Organizations,CloudTrail 也不會擷取關於 AWS Organizations 的資訊。
-
在導覽窗格中,選擇 Trails (追蹤記錄)。
-
選擇 Create trail (建立追蹤)。
-
針對 Trail name (追蹤名稱),輸入
My-Test-Trail
。 -
執行以下其中一個選項,指定 CloudTrail 交付其日誌的位置:
-
如果您需要建立儲存貯體,請選擇 Create new S3 bucket (建立新的 S3 儲存貯體),然後針對 Trail log bucket and folder (追蹤日誌儲存貯體和資料夾),輸入新儲存貯體的名稱。
注意
S3 儲存貯體名稱必須在「全域」必須是唯一的。
-
如果您已經擁有儲存貯體,請選擇 Use existing S3 bucket (使用現有的 S3 儲存貯體),然後從 S3 bucket (S3 儲存貯體) 清單中選擇儲存貯體的名稱。
-
-
選擇 Next (下一步)。
在 Choose log events (選擇日誌事件) 頁面的 Management events (管理事件) 區段中,選擇 Read (讀取) 和 Write (寫入)。
-
選擇 Next (下一步)。
-
檢閱選項,然後選擇 Create trail (建立追蹤)。
Amazon EventBridge 可讓您從幾種不同的方法中選擇其一,用來在警示規則符合傳入的 API 呼叫時傳送提醒。本教學示範兩種方法:叫用可以記錄 API 呼叫的 Lambda 函數,以及傳送資訊至 Amazon SNS 主題,而此主題會發送電子郵件或文字訊息給該主題的訂閱者。在接下來的兩個步驟中,會建立所需的元件:Lambda 函數和 Amazon SNS 主題。
步驟 2:設定 Lambda 函數
在此步驟中會建立 Lambda 函數,其中記錄根據 Amazon EventBridge 規則 (您稍後會進行設定) 傳送給該函數的 API 活動。
建立記錄 Amazon EventBridge 事件的 Lambda 函數
-
開啟位於 AWS Lambda 的 https://console.aws.amazon.com/lambda/
主控台。 -
如果您是初次使用 Lambda,請選擇歡迎頁面上的 Get Started Now (立即開始使用);否則請選擇 Create function (建立函數)。
-
在 Create function (建立函數) 頁面上,選擇 Use a blueprint (使用藍圖)。
-
從 Blueprints (藍圖) 搜尋方塊中,針對篩選條件輸入
hello
,並選擇 hello-world 藍圖。 -
選擇設定。
-
在 Basic information (基本資訊) 頁面上,執行以下作業:
-
對於 Lambda 函數名稱,在 Name (名稱) 文字方塊中輸入
LogOrganizationEvents
。 -
針對 Role (角色),選擇 Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)。此角色會授予許可給您的 Lambda 函數,讓函數存取所需的資訊和寫入其輸出日誌。
-
-
如下列範例所示,編輯 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 字串。 -
選擇 建立函數。
步驟 3:建立傳送電子郵件給訂閱者的 Amazon SNS 主題
在此步驟中,您會建立一個 Amazon SNS 主題,此主題會透過電子郵件來傳送資訊給其訂閱者。這會讓此主題成為之後所建立 Amazon EventBridge 規則的目標。
若要建立 Amazon SNS 主題來傳送電子郵件給訂閱者
-
在 https://console.aws.amazon.com/sns/v3/
開啟 Amazon SNS 主控台。 -
在導覽窗格中,選擇 Topics (主題)。
-
請選擇 Create new topic (建立新主題)。
-
針對 Topic name (主題名稱),輸入
OrganizationsCloudWatchTopic
。 -
針對 Display name (顯示名稱),輸入
OrgsCWEvnt
。 -
請選擇 建立主題 。
-
-
現在您可以建立該主題的訂閱。針對剛才所建立的主題,來選擇 ARN。
-
選擇建立訂閱。
-
在 Create subscription (建立訂閱) 頁面上,針對 Protocol (通訊協定) 選擇 Email (電子郵件)。
-
針對 Endpoint (端點),輸入電子郵件地址。
-
選擇 Create subscription (建立訂閱)。AWS 會傳送一封電子郵件到您在先前步驟中指定的電子郵件地址。請等待該電子郵件送達,然後選取電子郵件中的 Confirm subscription (確認訂閱) 連結,來確認您已成功收到電子郵件。
-
返回主控台並重新整理頁面。Pending confirmation (待確認) 訊息會關閉,改而顯示目前有效的訂閱 ID。
-
步驟 4:建立 Amazon EventBridge 規則
現在您帳戶中已經存在所需的 Lambda 函數,您可以建立 Amazon EventBridge 規則,以在規則中的條件滿足時叫用該函數。
若要建立 EventBridge 規則
-
在 https://console.aws.amazon.com/events/
開啟 Amazon EventBridge 主控台。 -
將主控台設定為 US East (N. Virginia) (美國東部 (維吉尼亞北部)) 區域,否則組織的相關資訊將不可用。在主控台右上角的導覽列中,選擇美國東部 (維吉尼亞北部) 區域。
如需有關建立規則的指示,請參閱 Amazon EventBridge user guide (《Amazon EventBridge 使用者指南》) 中的 Getting started with Amazon EventBridge (Amazon EventBridge 入門)。
步驟 5:測試 Amazon EventBridge 規則
在此步驟中,您會建立組織單位 (OU)、觀察 Amazon EventBridge 規則、產生日誌項目,並將電子郵件傳送給您自己,其中包含該事件的相關詳細資訊。
查看 EventBridge 日誌項目
-
在 https://console.aws.amazon.com/cloudwatch/
開啟 CloudWatch 主控台。 -
在導覽頁面中,選擇 Logs (日誌)。
-
在 Log Groups (日誌群組) 下方,選擇與您的 Lambda 函數:/aws/lambda/LogOrganizationEvents 關聯的群組。
-
每個群組包含一或多個串流,而今天應該會有一個群組。請選擇此群組。
-
檢視日誌。您應該會看到與以下內容相似的資料列。
-
選取項目的中間資料列,檢視所接收事件的完整 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" } }
-
檢查您的電子郵件帳戶,看看是否有來自 OrgsCWEvnt (您 Amazon SNS 主題的顯示名稱) 的訊息。電子郵件的內文中,包含了與先前步驟所示日誌記錄相同的 JSON 文字輸出。
清除:移除不再需要的資源
為了避免產生費用,您應該刪除在此教學中建立但不想保留的所有 AWS 資源。
清除您的 AWS 環境
-
使用 CloudTrail 主控台
,來刪除您在步驟 1 中所建立的名稱為 My-Test-Trail
的追蹤。 -
如果您在步驟 1 中建立了 Amazon S3 儲存貯體,則使用 Amazon S3 主控台
來刪除該儲存貯體。 -
使用 Lambda 主控台
,來刪除您在步驟 2 中所建立名稱為 LogOrganizationEvents
的函數。 -
使用Amazon SNS 主控台
,來刪除您在步驟 3 中所建立的名稱為 OrganizationsCloudWatchTopic
的 Amazon SNS 主題。 -
使用 CloudWatch 主控台
,刪除您在步驟 4 中建立的名為 OrgsMonitorRule
的 EventBridge 規則。 -
最後,使用 Organizations 主控台
,來刪除您在步驟 5 中所建立名稱為 TestCWEOU
的 OU。
到此為止。在本教學課程中,您設定了 EventBridge 來監控組織的變更。您設定了規則,此規則會在使用者叫用特定 AWS Organizations 操作時觸發。此規則會執行記錄事件的 Lambda 函數,並傳送電子郵件,其中包含關於事件的詳細資訊。