我想跨不同的 AWS 帳戶,使用 Amazon CloudWatch 警示調用 Amazon Simple Notification Service (Amazon SNS) 主題。
解決方法
**注意:**以下解決方法使用兩個帳戶。
使用帳戶 A 建立 CloudWatch 警示,並使用帳戶 B 建立 Amazon SNS 主題。接著,更新 SNS 主題的存取政策,以允許帳戶 A 的警示發佈訊息。
在帳戶 B 中建立 SNS 主題
完成以下步驟:
- 開啟 Amazon SNS console (Amazon SNS 主控台)。
- 在導覽窗格中,選擇 Topics (主題),然後選擇 Create topic (建立主題)。
- 在主題類型選擇 Standard (標準),然後提供主題名稱。
- 選擇 Create topic (建立主題),然後複製該主題的 Amazon Resource Name (ARN)。
- 在導覽窗格中,選擇 Subscriptions (訂閱),然後選擇 Create subscription (建立訂閱)。
- 在 Topic ARN (主題 ARN) 區段中新增主題的 ARN,然後選擇 Email (電子郵件) 作為通訊協定。
- 選擇 Create subscription (建立訂閱),然後檢查您的電子郵件以確認訂閱。
在帳戶 A 中建立 CloudWatch 警示
完成以下步驟:
- 開啟 CloudWatch console (CloudWatch 主控台)。
- 在導覽窗格中,選擇 Alarms (警示),然後選擇 Create alarm (建立警示)。
- 選取您的指標,然後提供閾值與比較參數的詳細資訊。
- 在 Configure Actions (設定動作) 的 Notifications (通知) 底下,選擇 Use topic ARN to notify other accounts (使用主題 ARN 通知其他帳戶),然後輸入來自帳戶 B 的主題 ARN。
- 建立警示名稱,然後選擇 Create alarm (建立警示)。
更新帳戶 B 中 SNS 主題的存取政策
當您更新帳戶 B 中 SNS 主題的存取政策時,這會允許警示發佈訊息。
完成以下步驟:
-
開啟 SNS console (SNS 主控台)。
-
在導覽窗格中,選擇 Topics (主題),然後選取主題。
-
選擇 Edit (編輯),然後將以下陳述式新增至政策中:
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "cloudwatch.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*"
},
"StringEquals": {
"aws:SourceAccount": "111122223333"
}
}
}]
}
**注意:**在前述政策中,請將範例值替換為您的值。
測試警示
若要測試警示,請根據指標資料點變更警示閾值,或執行 set-alarm-state 命令。當您變更警示閾值或警示狀態時,您會收到電子郵件通知。
相關資訊
允許任何 CloudWatch 警示發佈至不同帳戶中的主題
為什麼我沒有收到 CloudWatch 警示觸發的 SNS 通知?