本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 可以 HTTP 或 HTTPS POST電子郵件 (SMTP、純文字或 JSON 格式) 或 Amazon Simple Queue Service (Amazon SQS) 佇列發佈的訊息形式傳送通知。如需詳細資訊,請參閱 Amazon Simple Notification Service 開發人員指南中的什麼是 Amazon SNS。 如需 Amazon JSON 通知中包含的 SNS 資料結構範例,請參閱: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 SNS 會從 AWS Notifications 傳送確認電子郵件到您指定的電子郵件地址。開啟電子郵件,然後選擇 Confirm subscription (確認訂閱) 連結。
您會收到來自 的確認訊息 AWS。Amazon SNS 現在設定為接收通知,並以電子郵件的形式將通知傳送至您指定的電子郵件地址。
任務 2:建立 Amazon IAM 通知的 SNS 政策
使用下列程序建立自訂 AWS Identity and Access Management (IAM) 政策,提供啟動 Amazon SNS 通知的許可。
為 Amazon IAM 通知建立自訂 SNS 政策
在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在導覽窗格中,選擇 Policies (政策),然後選擇 Create Policy (建立政策)。(顯示 Get Started (開始使用) 按鈕時先選擇它,然後選擇 Create Policy (建立政策)。)
-
選擇 JSON 索引標籤。
-
將預設內容取代為以下內容。
{ "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 一般參考。
代表 的 12 位數識別碼 AWS 帳戶,格式為account-id
123456789012
。sns-topic-name
代表您要用於發佈通知的 Amazon SNS 主題名稱。 -
選擇下一步:標籤。
-
(選用) 新增一個或多個標籤鍵值組來組織、追蹤或控制對此政策的存取。
-
選擇下一步:檢閱。
-
在 Review Policy (檢閱政策) 頁面上 Name (名稱)中,輸入該內嵌政策的名稱。例如:
my-sns-publish-permissions
。 -
(選用) Description (說明),輸入政策的說明。
-
選擇 建立政策。
任務 3:建立 Amazon IAM 通知的 SNS 角色
使用下列程序建立 Amazon IAM 通知的 SNS 角色。Systems Manager 會使用此服務角色來啟動 Amazon SNS 通知。在所有後續程序中,此角色稱為 Amazon SNS IAM角色。
為 Amazon IAM 通知建立 SNS 服務角色
登入 AWS Management Console 並在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色。
-
選擇 AWS 服務 角色類型,然後選擇 Systems Manager。
-
選擇 Systems Manager 使用案例。然後選擇下一步。
-
在 Attached permissions policy (連接的許可政策) 頁面上,選取您在任務 2 中建立之自訂政策名稱左側的核取方塊。例如:
my-sns-publish-permissions
。 -
(選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。
展開 Permissions boundary (許可界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用許可界限來控制角色許可上限)。IAM 包含您帳戶中的受 AWS 管和客戶受管政策清單。選取用於許可界限的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱 IAM 使用者指南中的建立 Word 政策。 IAM 在您建立政策後,關閉該標籤並返回您的原始標籤,以選取用於許可界限的政策。
-
選擇 Next (下一步)。
-
如果可能,請輸入角色名稱或角色名稱後綴,以協助您識別此角色的用途。角色名稱在您的 AWS 帳戶內必須是獨一無二的。它們無法透過大小寫進行區分。例如,您無法建立名為
PRODROLE
和prodrole
的角色。因為有各種實體可能會參照角色,所以您無法在建立角色之後編輯角色名稱。 -
(選用) 在 Description (說明) 中,輸入新角色的說明。
-
在 Step 1: Select trusted entities (步驟 1:選取受信任的實體) 或者 Step 2: Select permissions (步驟 2:選取許可) 區段中選擇 Edit (編輯),可編輯角色的使用案例和許可。
-
(選用) 藉由連接標籤作為鍵值對,將中繼資料新增至使用者。如需在 IAM 中使用標籤的詳細資訊,請參閱 IAM 使用者指南中的標記 Word 資源。 IAM
-
檢閱角色,然後選擇建立角色。
-
選擇角色的名稱,然後複製或記下角色ARN值。當您傳送設定為傳回 Amazon ARN 通知的命令時,會使用角色的此 Amazon Resource Name (SNS)。
-
Summary (摘要) 頁面隨即開啟。
任務 4:設定使用者存取
如果 IAM 實體 (使用者、角色或群組) 已指派管理員許可,則使用者或角色可以存取 Run Command 以及 Maintenance Windows、 的功能 AWS Systems Manager。
對於沒有管理員許可的實體,管理員必須將下列許可授予 IAM 實體:
-
AmazonSSMFullAccess
受管政策或提供相當許可的政策。 -
在 任務 3:建立 Amazon IAM 通知的 SNS 角色 中建立之角色的
iam:PassRole
許可。例如:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/sns-role-name
" } ] }
若要提供存取權,請新增權限至您的使用者、群組或角色:
-
中的使用者和群組 AWS IAM Identity Center:
建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。
-
透過身分提供者在 IAM 中管理的使用者:
建立聯合身分的角色。請遵循 IAM 使用者指南中為第三方身分提供者 (聯合) 建立角色的指示。
-
IAM 使用者:
-
建立您的使用者可擔任的角色。請遵循 IAM 使用者指南中為 Word 使用者建立角色的指示。 IAM
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。遵循 Word 使用者指南中將許可新增至使用者 (主控台) 的指示。 IAM
-
若要設定使用者存取權並將 iam:PassRole
政策連接至使用者帳戶
-
在 IAM 導覽窗格中,選擇使用者,然後選擇您要設定的使用者帳戶。
-
在 Permissions (許可) 標籤,於政策清單中,確認
AmazonSSMFullAccess
政策已列出,或是有同等的政策能夠給予帳戶存取 Systems Manager 的許可。 -
選擇 Add inline policy (新增內嵌政策)。
-
在 Create policy (建立政策) 頁面,選擇 Visual editor (視覺化編輯器) 標籤。
-
選擇選擇服務,然後選擇 IAM。
-
對於動作,在篩選動作文字方塊中,輸入
PassRole
,然後選擇 PassRole 旁的核取方塊。 -
對於資源,請確認是否已選取特定,然後選擇新增 ARN。
-
在為角色指定 ARN 欄位中,貼上您在任務 3 結尾複製的 Amazon SNS IAM 角色 ARN。系統會自動填入 Account (帳戶) 和 Role name with path (角色名稱與路徑) 欄位。
-
選擇 Add (新增)。
-
選擇 Review policy (檢閱政策)。
-
在 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 SNS IAM角色傳遞至 Amazon SNS 服務。下列程序說明如何將iam:PassRole
政策連接至 Maintenance Windows 服務角色。
注意
使用維護時段的自訂服務角色,傳送與 相關的通知 Run Command 任務已註冊。如需相關資訊,請參閱 設定 Maintenance Windows。
如果您需要制定用於維護時段任務的自訂服務角色,請參閱 設定 Maintenance Windows。
將 iam:PassRole
政策連接至您的 Maintenance Windows role
-
在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在導覽窗格中,選擇角色,然後選取在任務 3 中建立的 Amazon SNS IAM角色。
-
複製或記下角色ARN,並返回 IAM 主控台的角色區段。
-
選取自訂 Maintenance Windows 您從角色名稱清單中建立的服務角色。
-
在許可索引標籤上,確認
AmazonSSMMaintenanceWindowRole
政策已列出,或有類似的政策,可授予 Systems Manager API 維護時段的許可。若否,則應選擇新增許可、連接政策,以進行連接。 -
選擇 Add permissions, Create inline policy (新增許可,建立內嵌政策)。
-
選擇 Visual Editor (視覺化編輯器) 標籤。
-
針對服務,選擇 IAM。
-
對於動作,在篩選動作文字方塊中,輸入
PassRole
,然後選擇 PassRole 旁的核取方塊。 -
針對資源,選擇特定,然後選擇新增 ARN。
-
在指定角色的 ARN 方塊中,貼上在任務 3 中建立ARN的 Amazon SNS 角色的 IAM,然後選擇新增。
-
選擇檢閱政策。
-
在檢閱政策頁面上,提供
PassRole
政策的名稱,然後選擇建立政策。