

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

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

# 使用 Amazon SNS 通知監控 Systems Manager 狀態變更
<a name="monitoring-sns-notifications"></a>

您可以將 Amazon Simple Notiﬁcation Service (Amazon SNS) 設定為傳送通知，這些通知與您使用 Run Command 或 Maintenance Windows ( AWS Systems Manager中的工具) 傳送的命令狀態相關。Amazon SNS 會協調和管理傳送和傳遞通知給已訂閱 Amazon SNS 主題的用戶端或端點。每當命令變更為新狀態或特定狀態時 (如「失敗」**或「逾時」**)，您都可以收到通知。當您將命令傳送至多個節點時，您都可以接收到傳送到特定節點之每個命令複本的通知。每個複本稱為*呼叫*。

Amazon SNS 可以使用 HTTP 或 HTTPS POST、電子郵件 (SMTP，純文字或 JSON 格式) 或發佈到 Amazon Simple Queue Service (Amazon SQS) 佇列訊息的方式，傳遞通知。如需詳細資訊，請參閱*《Amazon Simple Notification Service 開發人員指南》*中的[什麼是 Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/)。如需 Run Command 和 Maintenance Windows 提供之 Amazon SNS 通知中所含 JSON 資料結構的範例，請參閱 [的 Amazon SNS 通知範例 AWS Systems Manager](monitoring-sns-examples.md)。

**重要**  
記下以下重要資訊。  
不支援 Amazon Simple Notification Service FIFO 主題。
聊天應用程式中的 Amazon Q Developer 不支援透過 Amazon SNS 監控 Systems Manager。如果您想要在聊天應用程式中使用 Amazon Q Developer 監控 Systems Manager，您必須將其與 Amazon EventBridge 搭配使用。如需有關使用 EventBridge 監控 Systems Manager 的資訊，請參閱[使用 Amazon EventBridge 監控 Systems Manager](monitoring-eventbridge-events.md)。如需有關聊天應用程式中的 Amazon EventBridge 和 Amazon Q Developer 的資訊，請參閱 *Amazon Q Developer in chat applications Administrator Guide* 中的 [Tutorial: Creating an EventBridge rule that sends notifications to Amazon Q Developer in chat applications](https://docs.aws.amazon.com/chatbot/latest/adminguide/create-eventbridge-rule.html)。

## 設定 的 Amazon SNS 通知 AWS Systems Manager
<a name="monitoring-sns-configure"></a>

向維護時段註冊的 Run Command 和 Maintenance Windows 任務可以針對已進入下列狀態的命令任務傳送 Amazon SNS 通知。
+ 進行中
+ 成功
+ 失敗
+ 逾時
+ 已取消

如需導致命令進入這些其中一種狀態之條件的相關資訊，請參閱 [了解命令狀態](monitor-commands.md)。

**注意**  
使用 Run Command 傳送的命令也會報告 Canceling 和 Pending 狀態。Amazon SNS 通知不會擷取這些狀態。

### 命令摘要 Amazon SNS 通知
<a name="monitoring-sns-configure-summary"></a>

如果您在 Amazon SNS 通知的維護時段中設定 Run Command 或 Run Command 任務，Amazon SNS 會傳送包含以下資訊的摘要訊息。


****  

| 欄位 | Type | 說明 | 
| --- | --- | --- | 
| eventTime | String | 事件啟動的時間。此時間戳記非常重要，因為 Amazon SNS 不保證訊息交付的順序。範例：2016-04-26T13:15:30Z  | 
| documentName | String | 用來執行此命令之 SSM 文件名稱。 | 
| commandId | String | 在傳送命令後 Run Command 產生的 ID。 | 
| expiresAfter | Date | 如果已達到此時間但系統尚未開始執行命令，則系統不會執行該命令。 | 
| outputS3BucketName | String | Amazon Simple Storage Service (Amazon S3) 儲存貯體，命令執行的回應應存放的位置。 | 
| outputS3KeyPrefix | String | 儲存貯體中的 Amazon Simple Storage Service (Amazon S3) 目錄路徑，命令執行的回應應存放的位置。 | 
| requestedDateTime | String | 將請求傳送到此特定節點的時間和日期。 | 
| instanceIds | StringList | 被命令視為目標的節點。 只有在Run Command任務直接以執行個體 ID 為目標時，摘要訊息才會包含執行個體 ID。如果是使用標籤型目標鎖定來發出 Run Command 任務，則摘要訊息不會包含執行個體 ID。  | 
| status | String | 命令的命令狀態。 | 

### 以叫用為基礎的 Amazon SNS 通知
<a name="monitoring-sns-configure-invocation"></a>

如果您將命令傳送到多個節點，Amazon SNS 可以傳送與每個命令副本或叫用相關的訊息。此訊息包含下列資訊。


****  

| 欄位 | Type | 說明 | 
| --- | --- | --- | 
| eventTime | String | 事件啟動的時間。此時間戳記非常重要，因為 Amazon SNS 不保證訊息交付的順序。範例：2016-04-26T13:15:30Z  | 
| documentName | String | 用來執行此命令之 Systems Manager 文件 (SSM 文件) 名稱。 | 
| requestedDateTime | String | 將請求傳送到此特定節點的時間和日期。 | 
| commandId | String | 在傳送命令後 Run Command 產生的 ID。 | 
| instanceId | String | 被命令視為目標的執行個體。 | 
| status | String | 此呼叫的命令狀態。 | 

若要設定當命令變更狀態時的 Amazon SNS 通知，則須先完成下列任務。

**注意**  
如未針對維護時段設定 Amazon SNS 通知，則可略過本主題稍後的任務 5。

**Topics**
+ [命令摘要 Amazon SNS 通知](#monitoring-sns-configure-summary)
+ [以叫用為基礎的 Amazon SNS 通知](#monitoring-sns-configure-invocation)
+ [任務 1：建立並訂閱 Amazon SNS 主題](#monitoring-configure-sns)
+ [任務 2：為 Amazon SNS 通知建立 IAM 政策](#monitoring-iam-policy)
+ [任務 3：為 Amazon SNS 通知建立 IAM 角色](#monitoring-iam-notifications)
+ [任務 4：設定使用者存取](#monitoring-sns-passpolicy)
+ [任務 5：將 iam:PassRole 政策連接至維護時段角色](#monitoring-sns-passpolicy-mw)

### 任務 1：建立並訂閱 Amazon SNS 主題
<a name="monitoring-configure-sns"></a>

Amazon SNS *主題* 是一個通訊通道，向維護時段註冊的 Run Command 和 Run Command 任務使用此通道來傳送命令狀態的相關通知。Amazon SNS 支援不同的通訊協定，包括 HTTP/S、電子郵件和其他 AWS 服務 Amazon Simple Queue Service (Amazon SQS)。為了入門，我們建議您先從電子郵件通訊協定開始。如需建立主題的詳細資訊，請參閱*《Amazon Simple Notification Service 開發人員指南》*中的[建立 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)。

**注意**  
建立主題後，請複製或記下 **Topic ARN (主題 ARN)**。當您傳送設定為傳回狀態通知的命令時，您會指定此 ARN。

建立主題後，透過指定 **Endpoint (端點)** 來進行訂閱。如果您選擇電子郵件通訊協定，該端點是您想要從中接收到通知的電子郵件地址。如需如何訂閱主題的詳細資訊，請參閱*《Amazon Simple Notification Service 開發人員指南》*中的[訂閱 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)。

Amazon SNS 會從 *AWS 通知*傳送確認電子郵件到您所指定的電子郵件地址。開啟電子郵件，然後選擇 **Confirm subscription (確認訂閱)** 連結。

您會收到來自 的確認訊息 AWS。Amazon SNS 現在已設定為採用您指定的電子郵件地址，以電子郵件方式接收和傳送通知。

### 任務 2：為 Amazon SNS 通知建立 IAM 政策
<a name="monitoring-iam-policy"></a>

使用下列程序建立自訂 AWS Identity and Access Management (IAM) 政策，提供啟動 Amazon SNS 通知的許可。

**若要建立 Amazon SNS 通知的自訂 IAM 政策**

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇 **Policies (政策)**，然後選擇 **Create Policy (建立政策)**。(顯示 **Get Started** (開始使用) 按鈕時先選擇它，然後選擇 **Create Policy** (建立政策)。)

1. 選擇 **JSON** 標籤。

1. 根據 Amazon SNS 主題是否使用 AWS KMS 加密，將預設內容取代為下列其中一項：

------
#### [ SNS topic not encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{sns-topic-name}}"
           }
       ]
   }
   ```

------

   {{region}} 代表 AWS 區域 支援的 識別符 AWS Systems Manager，例如`us-east-2`美國東部 （俄亥俄） 區域。如需支援的 {{region}} 值的清單，請參閱《Amazon Web Services 一般參考》**中 [Systems Manager 服務端點](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)一節的**區域**欄位。

   {{{{account-id}}}} 代表 的 12 位數識別符 AWS 帳戶，格式為 `123456789012`。

   {{sns-topic-name}} 代表您想要用於發佈通知的 Amazon SNS 主題名稱。

------
#### [ SNS topic encrypted ]

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{sns-topic-name}}"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{kms-key-id}}"
           }
       ]
   }
   ```

------

   {{region}} 代表 AWS 區域 支援的 識別符 AWS Systems Manager，例如`us-east-2`美國東部 （俄亥俄） 區域。如需支援的 {{region}} 值的清單，請參閱《Amazon Web Services 一般參考》**中 [Systems Manager 服務端點](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region)一節的**區域**欄位。

   {{{{account-id}}}} 代表 的 12 位數識別符 AWS 帳戶，格式為 `123456789012`。

   {{sns-topic-name}} 代表您想要用於發佈通知的 Amazon SNS 主題名稱。

   {{kms-key-id}} 代表 中對稱加密 KMS 金鑰的 ID， AWS KMS 用於加密和解密主題，格式為 `1234abcd-12ab-34cd-56ef-12345EXAMPLE`。

**注意**  
使用 AWS KMS 加密需要付費。如需詳細資訊，請參閱 *AWS Key Management Service Developer Guide* 中的 [Managing Amazon SNS encryption keys and costs](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)。

------

1. 選擇下**一步：標籤**。

1. (選用) 新增一個或多個標籤鍵值組來組織、追蹤或控制對此政策的存取。

1. 選擇下**一步：檢閱**。

1. 在**檢閱政策**頁面上**名稱**中，輸入該內嵌政策的名稱。例如：**my-sns-publish-permissions**。

1. (選用) 在**說明**中輸入政策的說明。

1. 選擇**建立政策**。

### 任務 3：為 Amazon SNS 通知建立 IAM 角色
<a name="monitoring-iam-notifications"></a>

請遵循以下程序，為 Amazon SNS 通知建立 IAM 角色。Systems Manager 會使用此服務角色來啟動 Amazon SNS 通知。在後續的所有程序中，此角色就是所謂的 Amazon SNS IAM 角色。

**若要為 Amazon SNS 通知建立 IAM 服務角色**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 選擇 **AWS 服務** 角色類型，然後選擇 Systems Manager。

1. 選擇 Systems Manager 使用案例。然後選擇**下一步**。

1. 在 **Attached permissions policy (連接的許可政策)** 頁面上，選取您在任務 2 中建立之自訂政策名稱左側的核取方塊。例如：**my-sns-publish-permissions**。

1. (選用) 設定[許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。這是進階功能，可用於服務角色，而不是服務連結的角色。

   展開 **Permissions boundary** (許可界限) 區段，並選擇 **Use a permissions boundary to control the maximum role permissions** (使用許可界限來控制角色許可上限)。IAM 包含您帳戶中 AWS 受管和客戶受管政策的清單。選取用於許可界限的政策，或者選擇 **Create policy** (建立政策) 以開啟新的瀏覽器標籤，並從頭建立新的政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start)。建立政策後，請關閉該標籤並返回原始標籤，以選取要用於許可界限的政策。

1. 選擇**下一步**。

1. 如果可能，請輸入角色名稱或角色名稱後綴，以協助您識別此角色的用途。角色名稱在您的 AWS 帳戶內必須是獨一無二的。它們無法透過大小寫進行區分。例如，您無法建立名為 **PRODROLE** 和 **prodrole** 的角色。因為有各種實體可能會參照角色，所以您無法在建立角色之後編輯角色名稱。

1. (選用) 在 **Description** (說明) 中，輸入新角色的說明。

1. 在 **Step 1: Select trusted entities** (步驟 1：選取受信任的實體) 或者 **Step 2: Select permissions** (步驟 2：選取許可) 區段中選擇 **Edit** (編輯)，可編輯角色的使用案例和許可。

1. (選用) 藉由連接標籤作為鍵值對，將中繼資料新增至使用者。如需有關在 IAM 中使用標籤的詳細資訊，請參閱《IAM 使用者指南》**中的[標記 IAM 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 檢閱角色，然後選擇**建立角色**。

1. 選擇角色的名稱，然後複製或記下 **Role ARN** (角色 ARN) 值。當您傳送的命令設定為傳回 Amazon SNS 通知時，就會使用針對此角色的 Amazon Resource Name (ARN)。

1. **Summary** (摘要) 頁面隨即開啟。

### 任務 4：設定使用者存取
<a name="monitoring-sns-passpolicy"></a>

如果 IAM 實體 (使用者、角色或群組) 獲指派管理員許可，則該使用者或角色可以存取 Run Command 和 Maintenance Windows ( AWS Systems Manager中的工具)。

對於沒有管理員許可的實體，管理員必須將以下許可授予給 IAM 實體：
+ `AmazonSSMFullAccess` 受管政策或提供相當許可的政策。
+ 在 [任務 3：為 Amazon SNS 通知建立 IAM 角色](#monitoring-iam-notifications) 中建立之角色的 `iam:PassRole` 許可。例如：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::{{111122223333}}:role/{{sns-role-name}}",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ssm.amazonaws.com"
                }
            }
        }
    ]
}
```

------

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

**若要設定使用者存取權並將 `iam:PassRole` 政策連接至使用者帳戶**

1. 在 IAM 導覽窗格中，選擇 **Users** (使用者)，接著選擇要設定的使用者帳戶。

1. 在 **Permissions** (許可) 標籤，於政策清單中，確認 **AmazonSSMFullAccess** 政策已列出，或是有同等的政策能夠給予帳戶存取 Systems Manager 的許可。

1. 選擇**新增內嵌政策**。

1. 在 **Create policy (建立政策)** 頁面，選擇 **Visual editor (視覺化編輯器)** 標籤。

1. 選擇 **Choose a service** (選擇一個服務)，然後選擇 **IAM**。

1. 對於 **Actions** (動作)，在 **Filter actions** (篩選動作) 文字方塊中輸入 **PassRole**，接著選取 **PassRole** 旁的核取方塊。

1. 對於 **Resources** (資源)，確認已選取 **Specific** (特定)，接著選擇 **Add ARN** (新增 ARN)。

1. 在 **Specify ARN for role** (指定角色的 ARN) 欄位中，貼上您在任務 3 結尾複製的 Amazon SNS IAM 角色 ARN。系統會自動填入 **Account (帳戶)** 和 **Role name with path (角色名稱與路徑)** 欄位。

1. 選擇 **Add (新增)**。

1. 選擇 **Review policy** (檢閱政策)。

1. 在 **Review Policy** (檢閱政策) 頁面輸入名稱，接著選擇 **Create Policy** (建立政策)。

### 任務 5：將 iam:PassRole 政策連接至維護時段角色
<a name="monitoring-sns-passpolicy-mw"></a>

當您使用維護時段註冊 Run Command 任務時，您需要指定服務角色 Amazon Resource Name (ARN)。此服務角色是 Systems Manager 用來執行向維護時段註冊的任務。若要為已註冊的 Run Command 任務設定 Amazon SNS 通知，則須將 `iam:PassRole` 政策連接到指定的維護時段服務角色。如果您沒有打算為 Amazon SNS 通知設定已註冊的任務，則您可以略過此任務。

此 `iam:PassRole` 政策允許 Maintenance Windows 服務角色將在任務 3 中建立的 Amazon SNS IAM 角色中傳遞到 Amazon SNS 服務。以下程序說明如何將 `iam:PassRole` 政策連接至 Maintenance Windows 服務角色。

**注意**  
使用維護時段的自訂服務角色，傳送與已註冊 Run Command 任務相關的通知。如需相關資訊，請參閱[設定 Maintenance Windows](setting-up-maintenance-windows.md)。  
如果您需要制定用於維護時段任務的自訂服務角色，請參閱 [設定 Maintenance Windows](setting-up-maintenance-windows.md)。

**若要將 `iam:PassRole` 政策連接至 Maintenance Windows 角色。**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Roles** (角色) 並選取任務 3 中建立的 Amazon SNS IAM 角色。

1. 複製或記下 **Role ARN** (角色 ARN)，並返回 IAM 主控台的 **Roles** (角色) 區段。

1. 從 **Role name** (角色名稱) 清單中，選取您建立的自訂 Maintenance Windows 服務角色。

1. 在 **Permissions** (許可) 索引標籤中，驗證是否列出 `AmazonSSMMaintenanceWindowRole` 政策，或是否有同等的政策能夠將維護時段許可提供給 Systems Manager API。若否，則應選擇**新增許可、連接政策**，以進行連接。

1. 選擇 **Add permissions, Create inline policy** (新增許可，建立內嵌政策)。

1. 選擇 **Visual Editor** (視覺化編輯器) 標籤。

1. 針對 **Service** (服務)，選擇 **IAM** (IAM)。

1. 對於 **Actions** (動作)，在 **Filter actions** (篩選動作) 文字方塊中輸入 **PassRole**，接著選取 **PassRole** 旁的核取方塊。

1. 針對 **Resources (資源)**，選擇 **Specific (特定)**，然後選擇 **Add ARN (新增 ARN)**。

1. 在 **Specify ARN for role** (指定角色的 ARN) 方塊中，貼上在任務 3 中建立之 Amazon SNS IAM 角色的 ARN，然後選擇 **Add** (新增)。

1. 選擇**檢閱政策**。

1. 在**檢閱政策**頁面上，提供 `PassRole` 政策的名稱，然後選擇**建立政策**。