在警示變更時通知使用者 - Amazon CloudWatch

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

在警示變更時通知使用者

本節說明如何使用使用 AWS 者通知或 Amazon 簡單通知服務,讓使用者收到警示變更的通知。

設定 AWS 使用者通知

您可以使用使用AWS 者通知來設定傳遞管道,以接收 CloudWatch 警示狀態變更和組態變更事件的通知。當事件符合您指定的規則時,便會收到通知。您可以透過多個管道接收事件通知,包括電子郵件、AWS Chatbot 聊天通知或 AWS 主控台行動應用程式推送通知。您也可以在主控台通知中心查看通知。使用者通知支援彙總,可減少您在特定事件期間收到的通知數目。

您使用「 AWS 使用者通知」建立的通知組態不會計入您可以針對每個目標警示狀態設定的動作數目上限。當 AWS 使用者通知符合發送給 Amazon 的事件時 EventBridge,它會傳送帳戶和選定區域中所有警示的通知,除非您指定允許清單或拒絕清單特定警示或模式的進階篩選器。

下列進階篩選條件範例會在名為 ServerCpuTooHigh 的警示上比對從 OK 到 ALARM 的警示狀態變更。

{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }

您可以使用 EventBridge 事件中警示所發佈的任何屬性來建立篩選器。如需詳細資訊,請參閱 警報事件和 EventBridge

設定 Amazon SNS 通知

您可以使用 Amazon 簡易通知服務來傳送 application-to-application (A2A) 簡訊和 application-to-person (A2P) 簡訊,包括行動文字簡訊 (SMS) 和電子郵件訊息。如需詳細資訊,請參閱 Amazon SNS 事件目的地

對於警示可能發生的每個狀態,您可以設定警示以將訊息傳送至 SNS 主題。針對指定警示上的某個狀態設定的每個 Amazon SNS 主題都會計入您可為該警示和狀態設定的動作數目上限。您可以從帳戶中的任何警示傳送訊息至相同的 Amazon SNS 主題,並針對應用程式 (A2A) 和個人 (A2P) 消費者使用相同的 Amazon SNS 主題。由於此組態是在警示層級完成,因此只有您設定的警示會傳送訊息至選取的 Amazon SNS 主題。

首先,請建立主題,然後訂閱它。您可以選擇性將測試訊息發佈到主題。如需範例,請參閱使用設定 Amazon SNS 主題 AWS Management Console。或者,如需詳細資訊,請參閱 Amazon SNS 入門

或者,如果您打算使用建立 CloudWatch 警示,您可以略過此程序,因為您可以在建立警示時建立主題。 AWS Management Console

建立警示時,您可以針對 CloudWatch 警示進入的任何目標狀態新增動作。針對您要收到通知的狀態新增 Amazon SNS 通知,然後選取您在上一個步驟中建立的 Amazon SNS 主題,以在警示進入所選狀態時傳送電子郵件通知。

注意

建立 Amazon SNS 主題時,您可以選擇將其設為標準主題FIFO 主題。 CloudWatch 保證將所有警示通知發佈至這兩種類型的主題。但是,即使您使用 FIFO 主題,在極少數情況下也會按順序將通知 CloudWatch 發送到主題。如果您使用 FIFO 主題,則警示會將警示通知的訊息群組 ID 設定為警示 ARN 的雜湊。

防止混淆的副安全問題

混淆代理人問題屬於安全性議題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在中 AWS,跨服務模擬可能會導致混淆的副問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。

我們建議在資源政策中使用aws:SourceArnaws:SourceAccountaws:SourceOrgID、、和aws:SourceOrgPaths全域條件內容金鑰,以限制 Amazon SNS 為資源提供其他服務的許可。用於僅aws:SourceArn將一個資源與跨服務存取建立關聯。用於aws:SourceAccount讓該帳號中的任何資源與跨服務使用相關聯。用於aws:SourceOrgID允許組織內任何帳號的任何資源與跨服務使用相關聯。用於aws:SourceOrgPaths將 AWS Organizations 路徑中帳號的任何資源與跨服務使用相關聯。如需有關使用和瞭解路徑的詳細資訊,請參閱瞭解 AWS Organizations 實體路徑

防範混淆代理人問題的最有效方法是使用 aws:SourceArn 全域條件內容索引鍵,以及資源的完整 ARN。如果不知道資源的完整 ARN,或者如果您指定了多個資源,請使用 aws:SourceArn 全域內容條件索引鍵搭配萬用字元 (*) 來表示 ARN 的未知部分。例如 arn:aws:servicename:*:123456789012:*

如果 aws:SourceArn 值不包含帳戶 ID (例如 Amazon S3 儲存貯體 ARN),您必須同時使用 aws:SourceAccountaws:SourceArn 來限制許可。

若要大規模防範混淆代理人問題,請在資源型政策中使用 aws:SourceOrgIDaws:SourceOrgPaths 全域條件內容鍵和資源的組織 ID 或組織路徑。當您新增、移除或移動組織中的帳戶時,包含 aws:SourceOrgIDaws:SourceOrgPaths 鍵的政策將會自動包含正確的帳戶,您無需手動更新政策。

的值aws:SourceArn必須是傳送通知之警示的 ARN。

下列範例顯示如何在中使用aws:SourceArnaws:SourceAccount全域條件前後關聯鍵字來避免混淆的副問題。

{ "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" } } }] }

如果警示 ARN 包含任何非 ASCII 字元,請僅使用 aws:SourceAccount 全域條件鍵來限制許可。

使用設定 Amazon SNS 主題 AWS Management Console

首先,請建立主題,然後訂閱它。您可以選擇性將測試訊息發佈到主題。

建立 SNS 主題
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 在 Amazon SNS 儀表板上,在 Common actions (常見的動作) 下,選擇 Create Topic (建立主題)。

  3. Create new topic (建立新主題) 對話方塊中,針對 Topic name (主題名稱),輸入主題的名稱 (例如 my-topic)。

  4. 請選擇建立主題

  5. 複製下一個任務的 Topic ARN (主題 ARN) (例如,arn:aws:sns:us-east-1:111122223333:my-topic)。

若要訂閱 SNS 主題
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

  2. 在導覽面板中依序選擇 Subscriptions (訂閱) 與 Create subscription (建立訂閱)。

  3. Create subscription (建立訂閱) 對話方塊中,對於 Topic ARN (主題 ARN),貼上在之前工作所建立的主題 ARN。

  4. 對於通訊協定,選擇電子郵件

  5. 針對 Endpoint (端點),輸入您可以用來接收通知的電子郵件地址,然後選擇 Create subscription (建立訂閱)

  6. 在您的電子郵件應用程式中,開啟「 AWS 通知」中的訊息並確認您的訂閱。

    您的 Web 瀏覽器顯示自 Amazon SNS 的確認回覆。

若要將文字訊息發佈至 SNS 主題
  1. https://console.aws.amazon.com/sns/v3/home 開啟 Amazon SNS 主控台。

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

  3. Topics (主題) 頁面上,選取主題然後選擇 Publish to topic (發佈到主題)

  4. Publish a message (發佈訊息) 頁面中,針對 Subject (主旨),輸入訊息的主旨行,然後針對 Message (訊息),輸入簡短訊息。

  5. 選擇 Publish Message (發佈訊息)

  6. 檢查電子郵件以確認您已收到訊息。

使用設定 SNS 主題 AWS CLI

首先,您可以建立一個 SNS 主題,然後直接將訊息發佈到主題來測試您已正確設定。

設定 SNS 主題
  1. 使用 create-topic 命令建立主題,如下所示。

    aws sns create-topic --name my-topic

    Amazon SNS 會以下列格式傳回主題 ARN:

    { "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" }
  2. 使用 subscribe 命令來訂閱您的電子郵件地址至該主題。如果訂閱請求成功,您會收到一封確認電子郵件訊息。

    aws sns subscribe --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic --protocol email --notification-endpoint my-email-address

    Amazon SNS 傳回下列回應:

    { "SubscriptionArn": "pending confirmation" }
  3. 在您的電子郵件應用程式中,開啟「 AWS 通知」中的訊息並確認您的訂閱。

    您的 Web 瀏覽器顯示自 Amazon Simple Notification Service 的確認回覆。

  4. 使用list-subscriptions-by-topic命令檢查訂閱。

    aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic

    Amazon SNS 傳回下列回應:

    { "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] }
  5. (選用) 使用 publish 命令將測試訊息發佈到該主題。

    aws sns publish --message "Verification" --topic arn:aws:sns:us-east-1:111122223333:my-topic

    Amazon SNS 傳回下列回應:

    { "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" }
  6. 檢查電子郵件以確認您已收到訊息。