使用 Amazon SNS通知監控 Systems Manager 狀態變更 - AWS Systems Manager

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

使用 Amazon SNS通知監控 Systems Manager 狀態變更

注意

不支援 Amazon Simple Notification Service FIFO主題。

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

Amazon SNS可以將通知以 HTTPS HTTP或 的形式、POST電子郵件 (SMTP、純文字或JSON格式) 形式,或以訊息形式發佈到 Amazon Simple Queue Service (Amazon SQS) 佇列。如需詳細資訊,請參閱 Amazon Simple Notification Service 開發人員指南 中的什麼是 SNS Amazon。如需 Amazon SNS通知中包含JSON的資料結構範例,請參閱 Run Command 以及 Maintenance Windows,請參閱的 Amazon SNS通知範例 AWS Systems Manager

設定 的 Amazon SNS通知 AWS Systems Manager

Run Command 以及 Maintenance Windows 註冊到維護時段的任務可以為輸入下列狀態的命令任務傳送 Amazon SNS通知:

  • 進行中

  • Success (成功)

  • 失敗

  • 逾時

  • 已取消

如需導致命令進入這些其中一種狀態之條件的相關資訊,請參閱 了解命令狀態

注意

使用 傳送的命令 Run Command 也會報告取消和待定狀態。Amazon SNS通知不會擷取這些狀態。

命令摘要 Amazon SNS通知

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

欄位 Type 描述

eventTime

字串

事件啟動的時間。時間戳記很重要,因為 Amazon SNS不保證訊息交付順序。範例:2016-04-26T13:15:30Z

documentName

字串

用來執行此命令SSM的文件名稱。

commandId

字串

由 產生的 ID Run Command 傳送命令之後。

expiresAfter

日期

如果已達到此時間但系統尚未開始執行命令,則系統不會執行該命令。

outputS3BucketName

字串

Amazon Simple Storage Service (Amazon S3) 儲存貯體,命令執行的回應應存放的位置。

outputS3KeyPrefix

字串

儲存貯體中的 Amazon Simple Storage Service (Amazon S3) 目錄路徑,命令執行的回應應存放的位置。

requestedDateTime

字串

將請求傳送到此特定節點的時間和日期。

instanceIds

StringList

被命令視為目標的節點。

注意

執行個體IDs只有在 Run Command 任務目標執行個體IDs。IDs 如果 Run Command 任務是使用標籤型目標發出。

status

字串

命令的命令狀態。

以調用為基礎的 Amazon SNS通知

如果您將命令傳送至多個節點,Amazon SNS可以傳送有關命令的每個複製或調用的訊息。此訊息包含下列資訊。

欄位 Type 描述

eventTime

字串

事件啟動的時間。時間戳記很重要,因為 Amazon SNS不保證訊息交付順序。範例:2016-04-26T13:15:30Z

documentName

字串

用於執行此命令的 Systems Manager 文件 (SSM 文件) 名稱。

requestedDateTime

字串

將請求傳送到此特定節點的時間和日期。

commandId

字串

由 產生的 ID Run Command 傳送命令之後。

instanceId

字串

被命令視為目標的執行個體。

status

字串

此呼叫的命令狀態。

若要在命令變更狀態時設定 Amazon SNS通知,請完成下列任務。

注意

如果您未設定維護時段的 Amazon SNS通知,則可以在此主題稍後略過任務 5。

任務 1:建立和訂閱 Amazon SNS主題

Amazon SNS主題是 Run Command 以及 Run Command 已註冊至維護時段的任務,用於傳送命令狀態的通知。Amazon SNS支援不同的通訊協定,包括 HTTP/S、電子郵件和其他 AWS 服務 Amazon Simple Queue Service (Amazon SQS)。為了入門,我們建議您先從電子郵件通訊協定開始。如需有關如何建立主題的資訊,請參閱 Amazon Simple Notification Service 開發人員指南 中的建立 Amazon SNS主題

注意

建立主題後,請複製主題 或記下主題 ARN。當您傳送設定為傳回狀態通知的命令ARN時,請指定此選項。

建立主題後,透過指定 Endpoint (端點) 來進行訂閱。如果您選擇電子郵件通訊協定,該端點是您想要從中接收到通知的電子郵件地址。如需如何訂閱主題的詳細資訊,請參閱Amazon Simple Notification Service 開發人員指南中的訂閱 Amazon SNS主題

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

您將收到來自 的確認訊息 AWS。Amazon SNS 現在已設定為接收通知,並將通知作為電子郵件傳送至您指定的電子郵件地址。

任務 2:建立 Amazon SNS通知IAM的政策

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

為 Amazon SNS通知建立自訂IAM政策
  1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/

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

  3. 選擇 JSON 索引標籤。

  4. 將預設內容取代為以下內容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:region:account-id:sns-topic-name" } ] }

    region 代表 支援的 AWS 區域 識別符 AWS Systems Manager,例如us-east-2美國東部 (俄亥俄) 區域。如需支援的清單 region 值,請參閱 中 Systems Manager 服務端點中的區域Amazon Web Services 一般參考

    account-id 代表 的 12 位數識別碼 AWS 帳戶,格式為 123456789012

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

  5. 選擇下一步:標籤

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

  7. 選擇下一步:檢閱

  8. Review Policy (檢閱政策) 頁面上 Name (名稱)中,輸入該內嵌政策的名稱。例如:my-sns-publish-permissions

  9. (選用) Description (說明),輸入政策的說明。

  10. 選擇 建立政策

任務 3:建立 Amazon SNS通知IAM的角色

使用下列程序建立 Amazon SNS通知IAM的角色。Systems Manager 會使用此服務角色來啟動 Amazon SNS通知。在所有後續程序中,此角色稱為 Amazon SNSIAM角色。

為 Amazon SNS通知建立IAM服務角色
  1. 登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在IAM主控台的導覽窗格中,選擇角色 ,然後選擇建立角色

  3. 選擇 AWS 服務 角色類型,然後選擇 Systems Manager。

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

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

  6. (選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。

    展開 Permissions boundary (許可界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用許可界限來控制角色許可上限)。IAM 包含您帳戶中受 AWS 管和客戶受管政策的清單。選取用於許可界限的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱 IAM 使用者指南 中的建立IAM政策。在您建立政策後,關閉該標籤並返回您的原始標籤,以選取用於許可界限的政策。

  7. 選擇 Next (下一步)

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

  9. (選用) 在 Description (說明) 中,輸入新角色的說明。

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

  11. (選用) 藉由連接標籤作為鍵值對,將中繼資料新增至使用者。如需在 中使用標籤的詳細資訊IAM,請參閱 IAM 使用者指南 中的標記IAM資源

  12. 檢閱角色,然後選擇建立角色

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

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

任務 4:設定使用者存取

如果IAM實體 (使用者、角色或群組) 已指派管理員許可,則使用者或角色可以存取 Run Command 以及 Maintenance Windows, 的功能 AWS Systems Manager。

對於沒有管理員許可的實體,管理員必須將下列許可授予IAM實體:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/sns-role-name" } ] }

若要提供存取權,請新增權限至您的使用者、群組或角色:

若要設定使用者存取權並將 iam:PassRole 政策連接至使用者帳戶
  1. 在IAM導覽窗格中,選擇使用者 ,然後選擇您要設定的使用者帳戶。

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

  3. 選擇 Add inline policy (新增內嵌政策)

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

  5. 選擇選擇服務 ,然後選擇 IAM

  6. 對於動作 ,在篩選動作文字方塊中,輸入 PassRole,然後選擇 旁邊的核取方塊PassRole

  7. 針對資源 ,確認是否已選取特定,然後選擇新增 ARN

  8. ARN指定角色欄位中,貼上ARN您在任務 3 結尾複製的 Amazon SNSIAM角色。系統會自動填入 Account (帳戶)Role name with path (角色名稱與路徑) 欄位。

  9. 選擇 Add (新增)

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

  11. Review Policy (檢閱政策) 頁面輸入名稱,接著選擇 Create Policy (建立政策)。

任務 5:將 iam:PassRole政策連接至您的維護時段角色

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

iam:PassRole 政策允許 Maintenance Windows 服務角色,將任務 3 中建立的 Amazon SNSIAM角色傳遞給 Amazon SNS服務。下列程序說明如何將iam:PassRole政策連接至 Maintenance Windows 服務角色。

注意

使用維護時段的自訂服務角色,傳送與 相關的通知 Run Command 任務已註冊。如需相關資訊,請參閱 設定 Maintenance Windows

如果您需要制定用於維護時段任務的自訂服務角色,請參閱 設定 Maintenance Windows

iam:PassRole政策連接至您的 Maintenance Windows role
  1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在導覽窗格中,選擇角色,然後選取在任務 3 中建立的 Amazon SNSIAM角色。

  3. 複製或記下角色ARN,並返回IAM主控台的角色區段。

  4. 選取自訂 Maintenance Windows 您從角色名稱清單中建立的服務角色

  5. 許可索引標籤上,確認AmazonSSMMaintenanceWindowRole政策已列出,或存在類似政策,將維護時段許可授予 Systems Manager API。若否,則應選擇新增許可、連接政策,以進行連接。

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

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

  8. 針對服務 ,選擇 IAM

  9. 對於動作 ,在篩選動作文字方塊中,輸入 PassRole,然後選擇 旁邊的核取方塊PassRole

  10. 針對資源 ,選擇特定 ,然後選擇新增 ARN

  11. ARN指定角色方塊中,貼上在任務 3 中建立ARN的 Amazon SNSIAM角色的 ,然後選擇新增

  12. 選擇檢閱政策

  13. 檢閱政策頁面上,提供 PassRole 政策的名稱,然後選擇建立政策