通过使用 IAM 服务角色运行自动化 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

通过使用 IAM 服务角色运行自动化

以下过程介绍了如何使用 Amazon Systems Manager 控制台和 Amazon Command Line Interface(Amazon CLI) 来运行使用 Amazon Identity and Access Management (IAM) 服务角色的自动化,在这种情况下称为担任角色。服务角色代表您向自动化提供执行操作的工作流程权限。如果要限制权限并以最低权限运行操作,则配置服务角色是非常有用的。例如,如果要限制用户的资源权限,如 Amazon Elastic Compute Cloud (Amazon EC2) 实例,但又希望允许用户运行自动化以执行一组特定的操作,这是非常有用的。在这种情况下,您可以创建具有提升权限的服务角色并允许用户运行自动化。

开始前的准备工作

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

使用 IAM 服务角色运行自动化(控制台)

以下过程介绍了如何使用 Systems Manager 控制台运行使用 IAM 服务角色(或担任角色)的自动化。

使用服务角色运行自动化

  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 Amazon Systems Manager 控制台。

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

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

    注意

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

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

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

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

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

  5. 选择 Next (下一步)

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

    注意

    此过程使用简单执行模式。不过,您也可以选择速率控制多账户和多区域手动执行,使用服务角色运行自动化。

  7. 输入参数部分中,指定所需的输入。对于 AutomationAssumeRole 中,输入作为担任角色的 IAM 服务角色的名称。

    提示

    您可以从列表中选择角色,也可以开始键入角色的名称并从筛选结果中选择角色。

  8. 选择执行。控制台将显示自动化的状态。

使用 IAM 服务角色运行自动化(命令行)

以下过程介绍了如何使用 Amazon CLI(在 Linux 或 Windows 上)或 macOS 运行使用 Amazon Tools for PowerShell 服务角色(在此情况下充当担任角色)的自动化。

使用服务角色运行自动化

  1. 安装并配置 Amazon CLI 或 Amazon Tools for PowerShell(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级 Amazon 命令行工具.

  2. 运行以下命令以启动使用 IAM 服务角色的自动化。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name RunbookName \ --parameters "ParametersRequiredByRunbook","AutomationAssumeRole=arn:aws:iam::123456789012:role/AmazonSSMAutomationRole"
    Windows
    aws ssm start-automation-execution ^ --document-name RunbookName ^ --parameters "ParametersRequiredByRunbook","AutomationAssumeRole=arn:aws:iam::123456789012:role/AmazonSSMAutomationRole"
    PowerShell
    Start-SSMAutomationExecution ` -DocumentName RunbookName ` -Parameter @{ "ParametersRequiredByRunbook"="ParameterValues"; "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AmazonSSMAutomationRole"}

    以下示例展示了使用运行手册 AWS-RestartEC2Instance 通过 IAM 服务角色 AmazonSSMAutomationRole 重新启动指定的 EC2 实例。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name "AWS-RestartEC2Instance" \ --parameters "InstanceId=i-1234567890abcdef0","AutomationAssumeRole=arn:aws:iam::123456789012:role/AmazonSSMAutomationRole"
    Windows
    aws ssm start-automation-execution ^ --document-name "AWS-RestartEC2Instance" ^ --parameters "InstanceId=i-1234567890abcdef0","AutomationAssumeRole=arn:aws:iam::123456789012:role/AmazonSSMAutomationRole"
    PowerShell
    Start-SSMAutomationExecution ` -DocumentName "AWS-RestartEC2Instance" ` -Parameter @{ "InstanceId"="i-1234567890abcdef0"; "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole"}

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

    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                     : {}

有关如何使用 Systems Manager 自动化的更多示例,请参阅 自动化演练。有关自动化入门的信息,请参阅 设置自动化