

• 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` 政策的名稱，然後選擇**建立政策**。

# 的 Amazon SNS 通知範例 AWS Systems Manager
<a name="monitoring-sns-examples"></a>

您可以將 Amazon Simple Notiﬁcation Service (Amazon SNS) 設定為傳送通知，這些通知與您使用 Run Command 或 Maintenance Windows ( AWS Systems Manager中的工具) 傳送的命令狀態相關。

**注意**  
本指南不會談論如何為 Run Command 或 Maintenance Windows 設定通知。如需將 Run Command 或 Maintenance Windows 設定為傳送與命令狀態相關之 Amazon SNS 通知的詳細資訊，請參閱 [設定 的 Amazon SNS 通知 AWS Systems Manager](monitoring-sns-notifications.md#monitoring-sns-configure)。

以下範例示範在為 Run Command 或 Maintenance Windows 進行設定時，Amazon SNS 通知傳回的 JSON 輸出結構。

**使用執行個體 ID 的目標鎖定時命令摘要訊息的範例 JSON 輸出**

```
{
    "commandId": "a8c7e76f-15f1-4c33-9052-0123456789ab",
    "documentName": "AWS-RunPowerShellScript",
    "instanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef0"
    ],
    "requestedDateTime": "2019-04-25T17:57:09.17Z",
    "expiresAfter": "2019-04-25T19:07:09.17Z",
    "outputS3BucketName": "amzn-s3-demo-bucket",
    "outputS3KeyPrefix": "runcommand",
    "status": "InProgress",
    "eventTime": "2019-04-25T17:57:09.236Z"
}
```

**使用以標籤為基礎之目標鎖定時的命令摘要訊息範例 JSON 輸出**

```
{
    "commandId": "9e92c686-ddc7-4827-b040-0123456789ab",
    "documentName": "AWS-RunPowerShellScript",
    "instanceIds": [],
    "requestedDateTime": "2019-04-25T18:01:03.888Z",
    "expiresAfter": "2019-04-25T19:11:03.888Z",
    "outputS3BucketName": "",
    "outputS3KeyPrefix": "",
    "status": "InProgress",
    "eventTime": "2019-04-25T18:01:05.825Z"
}
```

**叫用訊息的範例 JSON 輸出**

```
{
    "commandId": "ceb96b84-16aa-4540-91e3-925a9a278b8c",
    "documentName": "AWS-RunPowerShellScript",
    "instanceId": "i-1234567890abcdef0",
    "requestedDateTime": "2019-04-25T18:06:05.032Z",
    "status": "InProgress",
    "eventTime": "2019-04-25T18:06:05.099Z"
}
```

# 使用Run Command傳送命令以傳回狀態通知
<a name="monitoring-sns-rc-send"></a>

下列程序示範如何使用 AWS Command Line Interface (AWS CLI) 或 AWS Systems Manager 主控台，透過 AWS Systems Manager中設定為傳回狀態通知Run Command的工具 傳送命令。

## 傳送Run Command以傳回通知 (主控台)
<a name="monitoring-sns-rc-send-console"></a>

請使用下列程序，透過已設定為使用 Systems Manager 主控台傳回狀態通知的 Run Command 來傳送命令。

**傳送命令以傳回通知 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Run Command**。

1. 選擇**執行命令**。

1. 在 **Command document** (命令文件) 清單中，選擇 Systems Manager 文件。

1. 在 **Command parameters (命令參數)** 區段，指定所需的參數值。

1. 在 **Targets** (目標) 區段中，透過手動指定標籤、選取執行個體或邊緣裝置，或指定資源群組，選擇您要執行這項操作的受管節點。
**提示**  
如果您預期看到的受管節點未列出，請參閱 [疑難排解受管節點的可用性](fleet-manager-troubleshooting-managed-nodes.md) 以取得疑難排解秘訣。

1. 對於**其他參數**：
   + 在 **Comment** (註解) 中，輸入此命令的相關資訊。
   + 在**逾時 (秒)** 中，指定在命令執行全面失敗之前，系統要等候的秒數。

1. 對於 **Rate control** (速率控制)：
   + 在**並行**中，指定可同時執行命令的受管節點數目或百分比。
**注意**  
如果您透過指定套用至受管節點的標籤或指定 AWS 資源群組來選取目標，而且不確定目標的受管節點數量，則透過指定百分比來限制可同時執行文件的目標數量。
   + 在 **Error threshold** (錯誤閾值) 中，指定在特定數目或百分比之節點上的命令失敗之後，停止在其他受管節點上執行命令。例如，如果您指定三個錯誤，則 Systems Manager 會在收到第四個錯誤時停止傳送命令。仍在處理命令的受管節點也可能會傳送錯誤。

1. (選用) 針對**輸出選項**，若要將命令輸出儲存至檔案，請選取**將命令輸出寫入至 S3 儲存貯體**方塊。在方塊中輸入儲存貯體和字首 (資料夾) 名稱。
**注意**  
授予能力以將資料寫入至 S3 儲存貯體的 S3 許可，會是指派給執行個體之執行個體設定檔 (適用於 EC2 執行個體) 或 IAM 服務角色 (啟用混合模式的機器) 的許可，而不是執行此任務之 IAM 使用者的許可。如需詳細資訊，請參閱[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)或[建立混合環境的 IAM 服務角色](hybrid-multicloud-service-role.md)。此外，若指定的 S3 儲存貯體位於不同的 AWS 帳戶內，請確保與受管節點相關聯的執行個體設定檔或 IAM 服務角色是否具有寫入該儲存貯體的必要許可。

1. 在 **SNS Notifications (SNS 通知)** 區段，選擇 **Enable SNS notifications (啟用 SNS 通知)**。

1. 對於 **IAM role** (IAM 角色，選擇您在 [使用 Amazon SNS 通知監控 Systems Manager 狀態變更](monitoring-sns-notifications.md) 的任務 3 中建立的 Amazon SNS IAM 角色 ARN。

1. 對於 **SNS topic** (SNS 主題)，輸入要使用的 Amazon SNS 主題 ARN。

1. 對於 **Event notifications** (事件通知)，選擇您要接收通知的事件。

1. 對於 **Change notifications** (變更通知)，選擇僅接收命令摘要的通知 (**Command status changes** (命令狀態變更))，或是傳送到多個節點的每個命令副本 (**Command status on each instance changes** (每個執行個體的命令狀態變更))。

1. 選擇**執行**。

1. 檢查從 Amazon SNS 所寄來的電子郵信通知訊息並開啟此電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送電子郵件訊息。

## 傳送Run Command以傳回通知 (CLI)
<a name="monitoring-sns-rc-send-cli"></a>

請使用下列程序，透過已設定為使用 AWS CLI傳回狀態通知的 Run Command 來傳送命令。

**傳送會傳回通知的命令 (CLI)**

1. 開啟 AWS CLI。

1. 在以下命令中指定要根據受管節點 ID 來作為目標的參數。

   ```
   aws ssm send-command --instance-ids "ID-1, ID-2" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

   以下是範例。

   ```
   aws ssm send-command --instance-ids "i-02573cafcfEXAMPLE, i-0471e04240EXAMPLE" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

**替代命令**  
在以下命令中指定要使用標籤來將受管執行個體作為目標的參數。

   ```
   aws ssm send-command --targets "Key=tag:TagName,Values=TagKey" --document-name "Name" --parameters '{"commands":["input"]}' --service-role "SNSRoleARN" --notification-config '{"NotificationArn":"SNSTopicName","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

   以下是範例。

   ```
   aws ssm send-command --targets "Key=tag:Environment,Values=Dev" --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["Get-Process"]}' --service-role "arn:aws:iam::111122223333:role/SNS_Role" --notification-config '{"NotificationArn":"arn:aws:sns:us-east-1:111122223333:SNSTopic","NotificationEvents":["All"],"NotificationType":"Command"}'
   ```

1. 按 **Enter**。

1. 檢查從 Amazon SNS 所寄來的電子郵信通知訊息並開啟此電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送電子郵件訊息。

如需詳細資訊，請參閱 *AWS CLI 命令參考*中的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html)。

# 使用維護時段傳送命令以傳回狀態通知
<a name="monitoring-sns-mw-register"></a>

下列程序說明如何使用 AWS Systems Manager 主控台或 AWS Command Line Interface (AWS CLI) 向維護時段註冊Run Command任務。 Run Command 是 中的工具 AWS Systems Manager。此程序也說明如何將 Run Command 任務設定為傳回狀態通知。

**開始之前**  
如果您尚未建立維護時段或註冊目標，請參閱[使用主控台建立和管理維護時段](sysman-maintenance-working.md)，以了解如何建立維護時段和註冊目標的步驟。

若要接收來自 Amazon Simple Notification Service (Amazon SNS) 服務的通知，您必須將 `iam:PassRole` 政策連接到已註冊任務中指定的 Maintenance Windows 服務角色。如果您尚未將 `iam:PassRole` 許可新增至 Maintenance Windows 服務角色，請參閱 [任務 5：將 iam:PassRole 政策連接至維護時段角色](monitoring-sns-notifications.md#monitoring-sns-passpolicy-mw)。

## 向維護時段註冊Run Command任務以傳回通知 (主控台)
<a name="monitoring-sns-mw-register-console"></a>

使用下列程序註冊 Run Command 任務，它已設定為使用 Systems Manager 主控台向您的維護時段傳回狀態通知。

**向維護時段註冊Run Command任務以傳回通知 (主控台)**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Maintenance Windows**。

1. 選取您要為已設定為傳送 Amazon Simple Notification Service (Amazon SNS) 通知的 Run Command 任務進行註冊的維護時段。

1. 選擇 **Actions** (動作)，然後選擇 **Register Run command task** (註冊執行命令任務)。

1. (選用) 在 **Name** (名稱) 欄位中，輸入任務的名稱。

1. (選用) 在 **Description** (描述) 欄位中，輸入描述。

1. 對於 **Command document** (命令文件)，選擇一個命令文件。

1. 對於 **Task priority (任務優先順序)**，請指定此任務的優先順序。零 (`0`) 是最高的優先順序。維護時段中的任務會依優先順序排程。具有相同優先順序的任務會排程平行處理。

1. 在 **Targets** (目標) 區段中，選取已註冊的目標群組或選取未註冊的目標。

1. 對於**速率控制**：
   + 在**並行**中，指定可同時執行命令的受管節點數目或百分比。
**注意**  
如果您透過指定套用至受管節點的標籤或指定 AWS 資源群組來選取目標，而且不確定目標的受管節點數量，則透過指定百分比來限制可同時執行文件的目標數量。
   + 在 **Error threshold** (錯誤閾值) 中，指定在特定數目或百分比之節點上的命令失敗之後，停止在其他受管節點上執行命令。例如，如果您指定三個錯誤，則 Systems Manager 會在收到第四個錯誤時停止傳送命令。仍在處理命令的受管節點也可能會傳送錯誤。

1. 在 **IAM service role** (IAM 服務角色) 區域中，選擇具有 SNS 角色 `iam:PassRole` 許可的 Maintenance Windows 服務角色。
**注意**  
將 `iam:PassRole` 許可新增至 Maintenance Windows 角色，以允許 Systems Manager 將 SNS 角色 傳遞至 Amazon SNS。如果您尚未新增 `iam:PassRole` 許可，請參閱[使用 Amazon SNS 通知監控 Systems Manager 狀態變更](monitoring-sns-notifications.md)主題中的任務 5。

1. (選用) 針對**輸出選項**，若要將命令輸出儲存至檔案，請選取**啟用將輸出寫入 S3** 方塊。在方塊中輸入儲存貯體和字首 (資料夾) 名稱。
**注意**  
授予能力以將資料寫入至 S3 儲存貯體的 S3 許可，會是指派給受管節點之執行個體設定檔的許可，而不是執行此任務之 IAM 使用者的許可。如需詳細資訊，請參閱[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)或[建立混合環境的 IAM 服務角色](hybrid-multicloud-service-role.md)。此外，若指定的 S3 儲存貯體位於不同的 AWS 帳戶內，請驗證與受管節點相關聯的執行個體設定檔或 IAM 服務角色是否具有寫入該儲存貯體的必要許可。

1. 在 **SNS notifications** (SNS 通知) 區段中，執行以下操作：
   + 選擇 **Enable SNS Notifications** (啟用 SNS 通知)。
   + 對於 **IAM role** (IAM 角色)，選擇您在 [使用 Amazon SNS 通知監控 Systems Manager 狀態變更](monitoring-sns-notifications.md) 中的任務 3 中建立的 Amazon SNS IAM 角色 Amazon Resource Name (ARN)，以啟動 Amazon SNS。
   + 對於 **SNS topic** (SNS 主題)，輸入要使用的 Amazon SNS 主題 ARN。
   + 對於 **Event type** (事件類型)，選擇您要接收通知的事件。
   + 對於 **Notification type** (通知類型)，選擇是要接收傳送到多個節點 (叫用) 的每個命令複本的通知，還是接收命令摘要的通知。

1. 在 **Parameters** (參數) 區段，根據您選擇的命令文件輸入所需的參數。

1. 選擇 **Register run command task** (註冊執行命令任務)。

1. 在下一次執行維護時段後，請檢查您的電子郵件是否有來自 Amazon SNS 的訊息並開啟該電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送該電子郵件訊息。

## 向維護時段註冊Run Command任務以傳回通知 (CLI)
<a name="monitoring-sns-mw-register-cli"></a>

使用下列程序，來註冊已設定為使用 AWS CLI向維護時段傳回狀態通知的 Run Command 任務。

**向會傳回通知的維護時段註冊 Run Command 任務 (CLI)**
**注意**  
為了更有效地管理任務選項，這個程序會將命令選項 `--cli-input-json` 與在 JSON 檔案中存放的選項值搭配使用。

1. 在本機電腦上，建立名為 `RunCommandTask.json` 的檔案。

1. 將以下內容貼到 檔案。

   ```
   {
       "Name": "Name",
       "Description": "Description",
       "WindowId": "mw-0c50858d01EXAMPLE",
       "ServiceRoleArn": "arn:aws:iam::account-id:role/MaintenanceWindowIAMRole",
       "MaxConcurrency": "1",
       "MaxErrors": "1",
       "Priority": 3,
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
               ]
           }
       ],
       "TaskType": "RUN_COMMAND",
       "TaskArn": "CommandDocumentName",
       "TaskInvocationParameters": {
           "RunCommand": {
               "Comment": "Comment",
               "TimeoutSeconds": 3600,
               "NotificationConfig": {
                   "NotificationArn": "arn:aws:sns:region:account-id:SNSTopicName",
                   "NotificationEvents": [
                       "All"
                   ],
                   "NotificationType": "Command"
               },
               "ServiceRoleArn": "arn:aws:iam::account-id:role/SNSIAMRole"
           }
       }
   }
   ```

1. 將範例值取代為您自有資源的相關資訊。

   如果您想要使用在這個範例中省略的選項，也可以將其恢復。例如，您可以將命令輸出儲存到 S3 儲存貯體。

   如需詳細資訊，請參閱《AWS CLI 命令參考》**中的 [https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)。

1. 儲存檔案。

1. 在檔案儲存所在之本機電腦上的目錄中，執行下列命令。

   ```
   aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
   ```
**重要**  
請確認在檔案名稱之前包含 `file://`。這是此命令必要項目。

   如果成功，此命令會傳回類似如下的資訊。

   ```
   {
       "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
   }
   ```

1. 在下一次執行維護時段後，請檢查您的電子郵件是否有來自 Amazon SNS 的訊息並開啟該電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送該電子郵件訊息。

如需透過命令列向維護時段註冊任務的詳細資訊，請參閱[向維護時段註冊任務](mw-cli-tutorial-tasks.md)。