本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 AWS Step Functions 同步執行 AWS Systems Manager Automation 任務
創建者埃利·埃爾庫里(AWS)
環境:生產 | 技術:無伺服器 DevOps;終端使用者運算;營運 | |
AWS 服務:AWS Step Functions;AWS Systems Manager |
Summary
此模式說明如何 AWS Step Functions 與整合 AWS Systems Manager。它會使用 AWS SDK 服務整合,以狀態機器工作流程的工作權杖呼叫 Systems Manager startAutomationExecutionAPI,並暫停直到權杖傳回成功或失敗呼叫為止。為了示範整合,此模式會在或文件周圍實作自動化文件 (runbook) 包裝函式,並使.waitForTaskToken
用同步呼叫AWS-RunShellScript
AWS-RunShellScript
或AWS-RunPowerShellScript
。AWS-RunPowerShellScript
如需有關 Step Functions 中 AWS SDK 服務整合的詳細資訊,請參閱開AWS Step Functions 發人員指南。
Step Functions 是一種低程式碼的視覺化工作流程服務,您可以使用服務來建置分散式應用程式、自動化 IT 和商 AWS 務程序,以及建置資料和機器學習管道。工作流程可管理失敗、重試、平行化、服務整合和可觀察性,因此您可以專注於更高價值的商務邏輯。
具備自動化功能,可簡化常見的 AWS Systems Manager維護、部署和修復任務, AWS 服務 例如亞馬遜彈性運算雲端 (Amazon EC2)、Amazon Relational Database Service 服務 (Amazon RDS)、Amazon Redshift 和亞馬遜簡單儲存服務 (Amazon S3)。自動化可讓您精細控制自動化作業的並行性。例如,您可以指定要同時鎖定多少資源,以及在停止自動化操作之前可能會發生多少錯誤。
如需實作詳細資訊,包括 runbook 步驟、參數和範例,請參閱其他資訊一節。
先決條件和限制
先決條件
活躍 AWS 帳戶
AWS Identity and Access Management (IAM) 存取 Step Functions 和 Systems Manager 的許可
在執行個體上安裝了系統管理員代理程式 (SSM 代理程式) 的 EC2 執行個體
Systems Manager 的 IAM 執行個體設定檔,附加至您計劃執行工作流程簿的執行個體
具有下列 IAM 許可 (遵循最低權限原則) 的 Step Functions 角色:
{ "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": "*" }
產品版本
SSM 文件結構描述版本 0.3 或更新版本
SSM 代理程式版本 2.3.672.0 或更新版本
架構
目標技術堆疊
AWS Step Functions
AWS Systems Manager 自動化
目標架構
自動化和規模
此 AWS CloudFormation 模式提供可用於在多個執行個體上部署 Runbook 的範本。(請參閱 GitHub Step Functions 和 Systems Manager 實現
存儲庫。)
工具
AWS 服務
AWS CloudFormation協助您設定 AWS 資源、快速且一致地佈建資源,以及跨區域的整個生命週期進 AWS 帳戶 行管理。
AWS Identity and Access Management (IAM) 透過控制經驗證和授權使用 AWS 資源的人員,協助您安全地管理對資源的存取。
AWS Step Functions是一項無伺服器協調服務,可協助您結合 AWS Lambda 功能與其他功能, AWS 服務 以建置關鍵業務應用程式。
AWS Systems Manager協助您管理在 AWS 雲端. 它可簡化應用程式和資源管理、縮短偵測和解決作業問題的時間,並協助您大規模安全地管理 AWS 資源。
Code
此模式的代碼在 GitHub Step Functions 和 Systems Manager 實現
史诗
任務 | 描述 | 所需技能 |
---|---|---|
下載 CloudFormation 範本。 | 從 GitHub 存放庫的資 | AWS DevOps |
創建手冊。 | 登入 AWS Management Console、開啟AWS CloudFormation 主控台 該 CloudFormation 模板部署了三種資源:
| AWS DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
創建一個測試狀態機器。 | 按照開AWS Step Functions 發人員指南中的說明創建和運行狀態機器。對於定義,請使用下面的代碼。請務必使用您帳戶中啟用系統管理員之有效執行個體的 ID 來更新該
此代碼調用 runbook 來運行演示
工作會將「這是執行自動化 waitForTask Token 的測試」寫入 如果您想要呼叫
| AWS DevOps |
更新狀態機器的 IAM 角色。 | 上一個步驟會自動為狀態機器建立專用的 IAM 角色。但是,它不會授予調用 runbook 的權限。透過新增下列權限來更新角色:
| AWS DevOps |
驗證同步呼叫。 | 執行狀態機,以驗證 Step Functions 和 Systems Manager 自動化之間的同步呼叫。 如需範例輸出,請參閱其他資訊一節。 | AWS DevOps |
相關資源
使用任務令牌等待回調(AWS Step Functions 開發人員指南,服務集成模式)
AWS Systems Manager 自動化 (AWS Systems Manager 使用者指南)
其他資訊
實施細節
此 CloudFormation 模式提供了部署兩個 Systems Manager 手冊的範本:
SfnRunCommandByInstanceIds
使用執行個體 ID 執行AWS-RunShellScript
或AWS-RunPowerShellScript
命令。SfnRunCommandByTargets
使用目標執行AWS-RunShellScript
或AWS-RunPowerShellScript
命令。
每個 runbook 實現四個步驟來實現使用步驟函數中的.waitForTaskToken
選項時,同步調用。
Step (步驟) | Action | Description |
1 |
| 檢查 |
2 |
| 接受數個輸入並執行 |
3 |
| 中止或取消步驟 2 時執行。它調用 Step Functions 數 send_task_failure |
4 |
| 當步驟 2 成功時執行。它調用 Step Functions send_task_success |
手冊參數
SfnRunCommandByInstanceIds
手冊:
參數名稱 | 類型 | 選擇性或必要 | Description |
| 字串 | 必要 | 用來決定是否要 |
| Integer | 選用 | 等待命令傳遞至執行個體上 SSM 代理程式的時間 (秒)。此參數的最小值為 30 (0.5 分鐘),最大值為 2592000 (720 小時)。 |
| 字串 | 選用 | 指令在被視為失敗之前完成的時間 (以秒為單位)。預設值為 3600 (1 小時)。最大值為一七二八百(48 小時)。 |
| 字串 | 選用 | 在您的執行個體上的工作目錄路徑。 |
| StringList | 必要 | 要執行的殼層指令碼或命令。 |
| StringList | 必要 | 您要在其中執行命令的執行個體 ID。 |
| 字串 | 必要 | 用於回呼回應的工作 Token。 |
SfnRunCommandByTargets
手冊:
名稱 | 類型 | 選擇性或必要 | Description |
| 字串 | 必要 | 用來決定是否要 |
| Integer | 選用 | 等待命令傳遞至執行個體上 SSM 代理程式的時間 (秒)。此參數的最小值為 30 (0.5 分鐘),最大值為 2592000 (720 小時)。 |
| Integer | 選用 | 指令在被視為失敗之前完成的時間 (以秒為單位)。預設值為 3600 (1 小時)。最大值為一七二八百(48 小時)。 |
| 字串 | 選用 | 在您的執行個體上的工作目錄路徑。 |
| StringList | 必要 | 要執行的殼層指令碼或命令。 |
| MapList | 必要 | 搜尋準則陣列,可使用您指定的索引鍵值配對來識別執行個體。例如: |
| 字串 | 必要 | 用於回呼回應的工作 Token。 |
範例輸出
下表提供了從 step 函數的示例輸出。它顯示步驟 5(TaskSubmitted
)和步驟 6(TaskSucceeded
)之間的總運行時間超過 100 秒。這表明 step 函數在移動到工作流程中的下一個任務之前等待sleep 100
命令完成。
ID | 類型 | Step (步驟) | Resource | 經過時間 (毫秒) | Timestamp |
1 |
| - | 0 | 二 ○ 二二二年三月十一日下午五十五時三十三分 | |
2 |
|
| - | 40 | 二 ○ 二二二年三月十一日下午五十五時三十四分 |
3 |
|
| - | 40 | 二 ○ 二二二年三月十一日下午五十五時三十四分 |
4 |
|
| - | 154 | 二 ○ 二二二年三月十一日下午五時五十四分 |
5 |
|
| - | 657 | 二 ○ 二二二年三月十一日下午五時五十分 |
6 |
|
| - | 103835 | 二 ○ 二二二年三月十一日下午五時二十八分 |
7 |
|
| - | 103860 | 二 ○ 二二二年三月十一日下午五時二十六分 |
8 |
| - | 103897 | 二 ○ 二二二年三月十一日下午五時二十分 |