逐步執行自動化 - AWS Systems Manager

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

逐步執行自動化

下列程序說明如何使用 AWS Systems Manager 主控台和 AWS Command Line Interface (AWS CLI) 使用手動執行模式執行自動化操作。透過使用手動執行模式,自動化開始在等待狀態中開始並在每個步驟之間的等待狀態中暫停。這讓您能夠控制自動化的進行,在您需要檢閱每個步驟的結果再繼續時很有用。

自動化會在目前的使用者內容中執行。這意味著,你不需要配置額外的IAM權限,只要你有使用 runbook 的權限,以及所調用的 runbook 的任何動作。如果您在中具有管理員權限IAM,則您已擁有執行此自動化操作的權限。

逐步執行自動化 (主控台)

以下程序會示範如何使用 Systems Manager 主控台逐步手動執行自動化。

逐步執行自動化
  1. 在開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Automation (自動化),接著選擇 Execute automation (執行自動化)

  3. Automation document (自動化文件)清單中,選擇 Runbook。在 [文件類別] 窗格中選擇一或多個選項,以根據SSM文件用途篩選文件。若要檢視您擁有的 Runbook,請選擇 Owned by me (我所擁有的) 索引標籤。若要檢視與您帳戶共用的 Runbook,請選擇 Shared with me (與我共用的) 索引標籤。若要檢視所有 Runbook,請選擇 All documents (所有文件) 索引標籤。

    注意

    您可以選擇 Runbook 名稱檢視 Runbook 資訊。

  4. Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設定為您想要執行的版本。系統包括以下版本選項:

    • 執行期的預設版本:如果 Automation 執行手冊會定期更新且已指派新的預設版本,則請選擇此選項。

    • 執行期的最新版本:如果 Automation 執行手冊會定期更新,而您想要執行最近更新的版本,請選擇此選項。

    • 1 (預設):選擇此選項以執行文件的第一個版本,也是預設版本。

  5. 選擇 Next (下一步)

  6. Execution Mode (執行模式) 部分,選擇 Manual execution (手動執行)

  7. Input parameters (輸入參數) 部分,指定所需的輸入。或者,您可以從AutomationAssumeRole清單中選擇IAM服務角色。

  8. 選擇 Execute (執行)

  9. 準備好開始自動化的第一步時,選擇 Execute this step (執行此步驟)。自動化會繼續進行步驟一,並在執行您於本程序步驟 3 中所選的 Runbook 指定的任何後續步驟之前暫停。如果 Runbook 有多個步驟,您必須為每個步驟選擇 Execute this step (執行此步驟),自動化才會繼續。每次您選擇 Execute this step (執行此步驟) 時,動作便會執行。

    注意

    主控台會顯示自動化的狀態。若自動化無法執行步驟,請參閱 故障診斷 Systems Manager Automation

  10. 在您完成 Runbook 指定的所有步驟後,請選擇 Complete and view results (完成並檢視結果),以完成自動化並檢視結果。

逐步執行自動化 (命令列)

下列程序說明如何使用 AWS CLI (在 Linux macOS、或 Windows 上) 或 AWS Tools for PowerShell 逐步手動執行自動化。

逐步執行自動化
  1. 安裝和配置 AWS CLI 或 AWS Tools for PowerShell,如果您尚未安裝。

    如需相關資訊,請參閱安裝或更新 AWS CLI的最新版本安裝 AWS Tools for PowerShell

  2. 執行以下命令來啟動手動自動化。替換每個 example resource placeholder 使用您自己的信息。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name runbook name \ --mode Interactive \ --parameters runbook parameters
    Windows
    aws ssm start-automation-execution ^ --document-name runbook name ^ --mode Interactive ^ --parameters runbook parameters
    PowerShell
    Start-SSMAutomationExecution ` -DocumentName runbook name ` -Mode Interactive ` -Parameter runbook parameters

    下面是使用 runbook AWS-RestartEC2Instance 重新啟動指定的EC2實例的例子。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name "AWS-RestartEC2Instance" \ --mode Interactive \ --parameters "InstanceId=i-02573cafcfEXAMPLE"
    Windows
    aws ssm start-automation-execution ^ --document-name "AWS-RestartEC2Instance" ^ --mode Interactive ^ --parameters "InstanceId=i-02573cafcfEXAMPLE"
    PowerShell
    Start-SSMAutomationExecution ` -DocumentName AWS-RestartEC2Instance ` -Mode Interactive -Parameter @{"InstanceId"="i-02573cafcfEXAMPLE"}

    系統會傳回相關資訊,如下所示。

    Linux & macOS
    {
        "AutomationExecutionId": "ba9cd881-1b36-4d31-a698-0123456789ab"
    }
    Windows
    {
        "AutomationExecutionId": "ba9cd881-1b36-4d31-a698-0123456789ab"
    }
    PowerShell
    ba9cd881-1b36-4d31-a698-0123456789ab
  3. 當您準備好開始自動化的第一步時,請執行以下命令。替換每個 example resource placeholder 使用您自己的信息。自動化會繼續進行步驟一,並在執行您於本程序步驟 1 中所選的 Runbook 指定的任何後續步驟之前暫停。若 Runbook 有多個步驟,您必須為每個步驟執行以下命令,自動化才會繼續。

    Linux & macOS
    aws ssm send-automation-signal \ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab \ --signal-type StartStep \ --payload StepName="stopInstances"
    Windows
    aws ssm send-automation-signal ^ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab ^ --signal-type StartStep ^ --payload StepName="stopInstances"
    PowerShell
    Send-SSMAutomationSignal ` -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab ` -SignalType StartStep -Payload @{"StepName"="stopInstances"}

    如果命令成功,則無輸出訊息。

  4. 執行以下命令來擷取自動化中每個步驟的執行狀態。

    Linux & macOS
    aws ssm describe-automation-step-executions \ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab
    Windows
    aws ssm describe-automation-step-executions ^ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab
    PowerShell
    Get-SSMAutomationStepExecution ` -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab

    系統會傳回相關資訊,如下所示。

    Linux & macOS
    {
        "StepExecutions": [
            {
                "StepName": "stopInstances",
                "Action": "aws:changeInstanceState",
                "ExecutionStartTime": 1557167178.42,
                "ExecutionEndTime": 1557167220.617,
                "StepStatus": "Success",
                "Inputs": {
                    "DesiredState": "\"stopped\"",
                    "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
                },
                "Outputs": {
                    "InstanceStates": [
                        "stopped"
                    ]
                },
                "StepExecutionId": "654243ba-71e3-4771-b04f-0123456789ab",
                "OverriddenParameters": {},
                "ValidNextSteps": [
                    "startInstances"
                ]
            },
            {
                "StepName": "startInstances",
                "Action": "aws:changeInstanceState",
                "ExecutionStartTime": 1557167273.754,
                "ExecutionEndTime": 1557167480.73,
                "StepStatus": "Success",
                "Inputs": {
                    "DesiredState": "\"running\"",
                    "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
                },
                "Outputs": {
                    "InstanceStates": [
                        "running"
                    ]
                },
                "StepExecutionId": "8a4a1e0d-dc3e-4039-a599-0123456789ab",
                "OverriddenParameters": {}
            }
        ]
    }
    Windows
    {
        "StepExecutions": [
            {
                "StepName": "stopInstances",
                "Action": "aws:changeInstanceState",
                "ExecutionStartTime": 1557167178.42,
                "ExecutionEndTime": 1557167220.617,
                "StepStatus": "Success",
                "Inputs": {
                    "DesiredState": "\"stopped\"",
                    "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
                },
                "Outputs": {
                    "InstanceStates": [
                        "stopped"
                    ]
                },
                "StepExecutionId": "654243ba-71e3-4771-b04f-0123456789ab",
                "OverriddenParameters": {},
                "ValidNextSteps": [
                    "startInstances"
                ]
            },
            {
                "StepName": "startInstances",
                "Action": "aws:changeInstanceState",
                "ExecutionStartTime": 1557167273.754,
                "ExecutionEndTime": 1557167480.73,
                "StepStatus": "Success",
                "Inputs": {
                    "DesiredState": "\"running\"",
                    "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
                },
                "Outputs": {
                    "InstanceStates": [
                        "running"
                    ]
                },
                "StepExecutionId": "8a4a1e0d-dc3e-4039-a599-0123456789ab",
                "OverriddenParameters": {}
            }
        ]
    }
    PowerShell
    Action: aws:changeInstanceState
    ExecutionEndTime     : 5/6/2019 19:45:46
    ExecutionStartTime   : 5/6/2019 19:45:03
    FailureDetails       : 
    FailureMessage       : 
    Inputs               : {[DesiredState, "stopped"], [InstanceIds, ["i-02573cafcfEXAMPLE"]]}
    IsCritical           : False
    IsEnd                : False
    MaxAttempts          : 0
    NextStep             : 
    OnFailure            : 
    Outputs              : {[InstanceStates, Amazon.Runtime.Internal.Util.AlwaysSendList`1[System.String]]}
    OverriddenParameters : {}
    Response             : 
    ResponseCode         : 
    StepExecutionId      : 8fcc9641-24b7-40b3-a9be-0123456789ab
    StepName             : stopInstances
    StepStatus           : Success
    TimeoutSeconds       : 0
    ValidNextSteps       : {startInstances}
  5. 在所選擇 Runbook 中指定的所有步驟皆完成後,執行以下命令來完成自動化。替換每個 example resource placeholder 使用您自己的信息。

    Linux & macOS
    aws ssm stop-automation-execution \ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab \ --type Complete
    Windows
    aws ssm stop-automation-execution ^ --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab ^ --type Complete
    PowerShell
    Stop-SSMAutomationExecution ` -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab ` -Type Complete

    如果命令成功,則無輸出訊息。