运行需要审批的自动化 - AWS Systems Manager

运行需要审批的自动化

以下过程介绍了如何使用 AWS Systems Manager 控制台和 AWS Command Line Interface (AWS CLI) 通过简单执行来运行包含审批的自动化。该自动化使用自动化操作 aws:approve,这会暂停自动化,直到指定的委托人批准或拒绝该操作。自动化在当前用户的上下文中运行。因此,只要您有权使用运行手册和此运行手册调用的任何操作,就无需配置其他 IAM 权限。如果您在 IAM 中拥有管理员权限,则已有权运行此运行手册。

开始前的准备工作

除了运行手册所需的标准输入外,aws:approve 操作还需要以下两个参数:

  • 审批者列表。审批者列表必须以用户名或用户 ARN 的形式包含至少一个审批者。如果提供了多个审批者,还必须在运行手册内指定对应的最少审批数。

  • Amazon Simple Notification Service (Amazon SNS) 主题 ARN Amazon SNS 主题名称必须以 Automation 开头。

此过程假设您已经创建了 Amazon SNS 主题,这是提交审批请求所必需的。有关信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建主题

运行包含审批者的自动化(控制台)

运行包含审批者的自动化

以下过程介绍了如何使用 Systems Manager 控制台运行包含审批者的自动化。

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

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

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

    注意

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

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

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

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

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

  5. 选择下一步

  6. 执行自动化文档页面上,选择简单执行

  7. 输入参数 部分,指定所需的输入参数。

    例如,如果选择了 AWS-StartEC2InstanceWithApproval 运行手册,则必须为 InstanceId 参数指定或选择实例 ID。

  8. 审批者部分中,指定自动化操作的审批者的用户名或用户 ARN。

  9. SNSTopicARN 部分,指定要用于发送审批通知的 SNS 主题 ARN。SNS 主题名称必须以自动化开头。

  10. 或者,您也可以从 AutomationAssumeRole 列表选择一个 IAM 服务角色。如果您将超过 100 个的账户和地区设置为目标,则必须指定 AWS-SystemsManager-AutomationAdministrationRole

  11. 选择执行自动化

指定的审批者将收到包含详细信息的 Amazon SNS 通知以批准或拒绝自动化。此审批操作从发布之日起 7 天内有效,此操作可以使用 Systems Manager 控制台或 AWS Command Line Interface (AWS CLI) 发布。

如果选择批准自动化,自动化将继续运行指定的运行手册中包含的步骤。控制台将显示自动化的状态。如果自动化无法运行,请参阅 Systems Manager 自动化故障排除

批准或拒绝自动化
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择自动化,然后选择上一过程中运行的自动化。

  3. 选择操作,然后选择批准/拒绝

  4. 选择批准拒绝,并选择性地提供注释。

  5. 选择提交

运行包含审批者的自动化(命令行)

以下过程介绍了如何使用 AWS CLI(在 Linux 或 Windows 上)或 AWS Tools for PowerShell 运行包含审批者的自动化。

运行包含审批者的自动化
  1. 安装并配置 AWS CLI 或 AWS Tools for PowerShell(如果尚未执行该操作)。

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

  2. 运行以下命令以运行包含审批者的自动化。将每个示例资源占位符替换为您自己的信息。在文档名称部分中,指定包括自动化操作 aws:approve 的运行手册。

    对于 Approvers,指定该操作的审批者的用户名或用户 ARN。对于 SNSTopic,指定用于发送审批通知的 SNS 主题 ARN。Amazon SNS 主题名称必须以 Automation 开头。

    注意

    审批者和 SNS 主题的参数值的具体名称取决于您选择的运行手册中指定的值。

    Linux & macOS
    aws ssm start-automation-execution \ --document-name "AWS-StartEC2InstanceWithApproval" \ --parameters "InstanceId=i-02573cafcfEXAMPLE,Approvers=arn:aws:iam::123456789012:role/Administrator,SNSTopicArn=arn:aws:sns:region:123456789012:AutomationApproval"
    Windows
    aws ssm start-automation-execution ^ --document-name "AWS-StartEC2InstanceWithApproval" ^ --parameters "InstanceId=i-02573cafcfEXAMPLE,Approvers=arn:aws:iam::123456789012:role/Administrator,SNSTopicArn=arn:aws:sns:region:123456789012:AutomationApproval"
    PowerShell
    Start-SSMAutomationExecution ` -DocumentName AWS-StartEC2InstanceWithApproval ` -Parameters @{ "InstanceId"="i-02573cafcfEXAMPLE" "Approvers"="arn:aws:iam::123456789012:role/Administrator" "SNSTopicArn"="arn:aws:sns:region:123456789012:AutomationApproval" }

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

    Linux & macOS
    {
        "AutomationExecutionId": "df325c6d-b1b1-4aa0-8003-6cb7338213c6"
    }
    Windows
    {
        "AutomationExecutionId": "df325c6d-b1b1-4aa0-8003-6cb7338213c6"
    }
    PowerShell
    df325c6d-b1b1-4aa0-8003-6cb7338213c6
批准自动化
  • 运行以下命令来批准自动化。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm send-automation-signal \ --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" \ --signal-type "Approve" \ --payload "Comment=your comments"
    Windows
    aws ssm send-automation-signal ^ --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" ^ --signal-type "Approve" ^ --payload "Comment=your comments"
    PowerShell
    Send-SSMAutomationSignal ` -AutomationExecutionId df325c6d-b1b1-4aa0-8003-6cb7338213c6 ` -SignalType Approve ` -Payload @{"Comment"="your comments"}

    如果此命令成功,则无任何输出。

拒绝自动化
  • 运行以下命令来拒绝自动化。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws ssm send-automation-signal \ --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" \ --signal-type "Deny" \ --payload "Comment=your comments"
    Windows
    aws ssm send-automation-signal ^ --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" ^ --signal-type "Deny" ^ --payload "Comment=your comments"
    PowerShell
    Send-SSMAutomationSignal ` -AutomationExecutionId df325c6d-b1b1-4aa0-8003-6cb7338213c6 ` -SignalType Deny ` -Payload @{"Comment"="your comments"}

    如果此命令成功,则无任何输出。