运行由 Systems Manager Automation 支持的自动化操作 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Systems Manager Change Manager 不再向新客户开放。现有客户可以继续正常使用该服务。有关更多信息,请参阅 Amazon Systems Manager Change Manager 可用性变更

运行由 Systems Manager Automation 支持的自动化操作

在您运行自动化时,默认情况下,自动化将在启动该自动化的用户的上下文中运行。也就是说,例如,如果您的用户拥有管理员权限,则该自动化运行时也拥有管理员权限,并且对该自动化配置的资源拥有完全访问权限。作为最佳安全实践,建议使用配置有 AmazonSSMAutomationRole 托管式策略的 IAM 服务角色(在本例中也称为担任角色)运行自动化。您可能需要将其他 IAM policy 添加到您的担任角色,以使用各种运行手册。使用 IAM 服务角色运行自动化称为委托管理

如果使用服务角色,则允许对 Amazon 资源运行自动化,但运行自动化的用户对这些资源的访问受限(或无法访问)。例如,您可以配置一个服务角色,并将其与自动化配合使用以自动重启一个或多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。Automation 是 Amazon Systems Manager 中的一项工具。自动化会重启实例,但服务角色不会授予用户访问这些实例的权限。

可以在您运行自动化的运行时中指定服务角色,也可以创建自定义自动化运行手册,并直接在运行手册中指定服务角色。无论您是在运行时还是在运行手册中指定了服务角色,服务都会在所指定服务角色的上下文中运行。如果您未指定服务角色,则系统会在用户上下文中创建临时会话并运行自动化。

注意

对于预计运行时长超过 12 小时的自动化,必须指定服务角色。如果您在用户环境中启动了长时间运行的自动化,用户的临时会话会在 12 小时后过期。

委托管理可确保更高的安全性,还能更好地控制您的 Amazon 资源。它还能够增强审核体验,因为针对您的资源进行的操作是由集中服务角色执行的,而不是由多个 IAM 账户执行。

开始前的准备工作

在您完成以下过程之前,必须创建 IAM 服务角色并为 Automation(Amazon Systems Manager 中的一项工具)配置信任关系。有关更多信息,请参阅 任务 1:为自动化创建服务角色

以下过程介绍了如何使用 Systems Manager 控制台或您首选的命令行工具运行简单的自动化。

运行简单的自动化(控制台)

以下过程介绍了如何使用 Systems Manager 控制台运行简单的自动化。

运行简单的自动化
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

  2. 在导航窗格中,选择自动化,然后选择执行自动化

  3. 自动化文档列表中,请选择运行手册。在文档类别窗格中选择一个或多个选项,以便根据 SSM 文档的用途对其进行筛选。要查看您拥有的运行手册,请选择我拥有的选项卡。要查看与您的账户共享的运行手册,请选择与我共享选项卡。要查看所有运行手册,请选择所有文档选项卡。

    注意

    您可以通过选择运行手册名称来查看有关该手册的信息。

  4. 文档详细信息部分中,验证文档版本已设置为要运行的版本。系统包括以下版本选项:

    • 运行时的默认版本 – 如果定期更新自动化运行手册并分配新的默认版本,请选择此选项。

    • 运行时的最新版本 – 如果定期更新自动化运行手册并且想要运行最新更新的版本,请选择此选项。

    • 1(默认) – 选择此选项可执行文档的第一个版本,即默认版本。

  5. 选择下一步

  6. 执行模式部分中,选择简单执行

  7. 输入参数 部分中,指定所需的输入。或者,您也可以从 AutomationAssumeRole 列表选择一个 IAM 服务角色。

  8. (可选)选择一个 CloudWatch 警报以应用于您的自动化进行监控。要将 CloudWatch 警报附加到自动化,启动自动化的 IAM 主体必须具有 iam:createServiceLinkedRole 操作的权限。有关 CloudWatch 警报的更多信息,请参阅使用 Amazon CloudWatch 警报。请注意,如果您的警报激活,自动化将停止。如果使用 Amazon CloudTrail,您将在跟踪中看到 API 调用。

  9. 选择执行

控制台将显示自动化的状态。如果自动化无法运行,请参阅 Systems Manager 自动化故障排除

自动化执行完成后,您可以使用相同或修改后的参数重新运行该执行。有关更多信息,请参阅 重新运行自动化执行

运行简单的自动化(命令行)

以下过程介绍了如何使用 Amazon CLI(在 Linux 或 Windows 上)或 Amazon Tools for PowerShell 运行简单的自动化。

运行简单的自动化
  1. 安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本以及安装 Amazon Tools for PowerShell

  2. 运行以下命令以启动一个简单的自动化。将每个示例资源占位符替换为您自己的信息。

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

    以下是使用 AWS-RestartEC2Instance 运行手册重新启动指定 EC2 实例的示例。

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

    系统将返回类似于以下内容的信息。

    Linux & macOS
    {
        "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab"
    }
    Windows
    {
        "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab"
    }
    PowerShell
    4105a4fc-f944-11e6-9d32-0123456789ab
  3. 运行以下命令以检索自动化的状态。

    Linux & macOS
    aws ssm describe-automation-executions \ --filter "Key=ExecutionId,Values=4105a4fc-f944-11e6-9d32-0123456789ab"
    Windows
    aws ssm describe-automation-executions ^ --filter "Key=ExecutionId,Values=4105a4fc-f944-11e6-9d32-0123456789ab"
    PowerShell
    Get-SSMAutomationExecutionList | ` Where {$_.AutomationExecutionId -eq "4105a4fc-f944-11e6-9d32-0123456789ab"}

    系统将返回类似于以下内容的信息。

    Linux & macOS
    {
        "AutomationExecutionMetadataList": [
            {
                "AutomationExecutionStatus": "InProgress",
                "CurrentStepName": "stopInstances",
                "Outputs": {},
                "DocumentName": "AWS-RestartEC2Instance",
                "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab",
                "DocumentVersion": "1",
                "ResolvedTargets": {
                    "ParameterValues": [],
                    "Truncated": false
                },
                "AutomationType": "Local",
                "Mode": "Auto",
                "ExecutionStartTime": 1564600648.159,
                "CurrentAction": "aws:changeInstanceState",
                "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
                "LogFile": "",
                "Targets": []
            }
        ]
    }
    Windows
    {
        "AutomationExecutionMetadataList": [
            {
                "AutomationExecutionStatus": "InProgress",
                "CurrentStepName": "stopInstances",
                "Outputs": {},
                "DocumentName": "AWS-RestartEC2Instance",
                "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab",
                "DocumentVersion": "1",
                "ResolvedTargets": {
                    "ParameterValues": [],
                    "Truncated": false
                },
                "AutomationType": "Local",
                "Mode": "Auto",
                "ExecutionStartTime": 1564600648.159,
                "CurrentAction": "aws:changeInstanceState",
                "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
                "LogFile": "",
                "Targets": []
            }
        ]
    }
    PowerShell
    AutomationExecutionId       : 4105a4fc-f944-11e6-9d32-0123456789ab
    AutomationExecutionStatus   : InProgress
    AutomationType              : Local
    CurrentAction               : aws:changeInstanceState
    CurrentStepName             : startInstances
    DocumentName                : AWS-RestartEC2Instance
    DocumentVersion             : 1
    ExecutedBy                  : arn:aws:sts::123456789012:assumed-role/Administrator/Admin
    ExecutionEndTime            : 1/1/0001 12:00:00 AM
    ExecutionStartTime          : 7/31/2019 7:17:28 PM
    FailureMessage              : 
    LogFile                     : 
    MaxConcurrency              : 
    MaxErrors                   : 
    Mode                        : Auto
    Outputs                     : {}
    ParentAutomationExecutionId : 
    ResolvedTargets             : Amazon.SimpleSystemsManagement.Model.ResolvedTargets
    Target                      : 
    TargetMaps                  : {}
    TargetParameterName         : 
    Targets                     : {}