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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 IAM 服务角色运行 Automation

以下过程介绍如何使用Amazon Web Services Systems Manager控制台和Amazon命令行界面 (AmazonCLI) 以使用 AWS Identity and Access Management (IAM) 服务角色运行自动化,在这种情况下称为承角色。服务角色代表您向自动化提供执行操作的权限。如果要限制权限并以最低权限运行操作,则配置服务角色是非常有用的。例如,如果需要限制用户的资源(例如 Amazon Elastic Computy Cloud (Amazon EC2) 实例)权限,但希望允许用户运行一组特定操作,这是非常有用的。在这种情况下,您可以创建具有提升权限的服务角色并允许用户运行自动化。

开始前的准备工作

在您完成以下过程之前,必须创建 IAM 服务角色并为以下功能配置信任关系。Amazon Web Services Systems Manager。有关更多信息,请参阅 任务 1:为 Automation 创建服务角色

使用 IAM 服务角色运行 Automation(控制台)

以下过程介绍了如何使用 Systems Manager 控制台运行使用 IAM 服务角色(或承角色)。

使用服务角色运行自动化

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中,选择 Automation (自动化),然后选择 Execute automation (执行自动化)

  3. 自动化文档列表中,选择运行手册。选择一个或多个选项,在文档类别窗格可根据 SSM 文档的用途过滤它们。要查看您拥有的 Runbook,请选择我拥有的选项卡 要查看与您的帐户共享的 Runbook,请选择与我共享选项卡 要查看所有运行手册,请选择所有文档选项卡

    注意

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

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

    • 运行时默认版本:如果定期更新 Automation Runbook 并指定新的默认版本,请选择此选项。

    • 运行时的最新版本:如果定期更新 Automation Runbook,并且需要运行最新更新版本,请选择此选项。

    • 1(默认值):选择此选项可运行文档的第一个版本,这是默认版本。

  5. 选择 Next

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

    注意

    此过程使用 Simple execution (简单执行) 模式。但是,您可以选择速率控制多账户和区域,或者手动执行,然后使用服务角色运行自动化。

  7. Input parameters (输入参数) 部分中,指定所需的输入。适用于AutomationAssumeRole中,输入作为代入角色的 IAM 服务角色的名称。

    提示

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

  8. 选择 Execute (执行)。控制台将显示 Automation 的状态。

使用 IAM 服务角色运行 Automation(命令行)

以下过程介绍如何使用AmazonCLI(在 Linux 上,macOS或窗口)或AmazonPowerShell 用于运行自动化的工具,该工具使用 IAM 服务角色在本例中作为承角色

使用服务角色运行自动化

  1. 安装和配置AmazonCLI 或AmazonTools 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 服务角色重新启动指定 EC2 实例AmazonSSMAutomationRole

    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. 运行以下命令之一以检索 Automation 的状态。

    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 agement Automation 的更多示例,请参阅Automation 演练。有关 Automation 入门的信息,请参阅 设置 Automation