从远程位置运行文档 - AWS Systems Manager

从远程位置运行文档

您可以使用 AWS-RunDocument 预定义的 SSM 文档从远程位置运行 AWS Systems Manager (SSM) 文档。此文档支持运行存储在以下位置的 SSM 文档:

  • 公共和私有 GitHub 存储库(不支持 GitHub Enterprise)

  • Amazon S3 存储桶

  • Systems Manager

虽然您也可以使用 State Manager 或 AWS Systems Manager 的自动化功能运行远程文档,下面的过程仅介绍了如何在 Systems Manager 控制台中使用 AWS Systems Manager Run Command运行远程 SSM 文档。

注意

AWS-RunDocument 仅可用于运行命令类型的 SSM 文档,而不是其他类型(如自动化运行手册)。AWS-RunDocument 使用 aws:downloadContent 插件。有关 aws:downloadContent 插件的更多信息,请参阅 aws:downloadContent

开始前的准备工作

必须先完成以下任务才能运行远程文档。

  • 创建 SSM 命令文档并在远程位置保存该文档。有关更多信息,请参阅 创建 SSM 文档内容

  • 如果打算运行存储在私有 GitHub 存储库中的远程文档,则必须为 GitHub 安全访问令牌创建 Systems Manager SecureString 参数。通过 SSH 手动传递令牌无法访问私有 GitHub 存储库中的远程文档。该访问令牌必须作为 Systems Manager SecureString 参数传递。有关创建 SecureString 参数的更多信息,请参阅 在 Systems Manager 中创建 Parameter Store 参数

运行远程文档(控制台)

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

  2. 在导航窗格中,选择 Run Command

  3. 选择 Run command(运行命令)

  4. 文档列表中,选择 AWS-RunDocument

  5. 命令参数 中,对于 源类型,请选择一个选项。

    • 如果选择 GitHub,则采用以下格式指定源信息信息:

      { "owner": "owner_name", "repository": "repository_name", "path": "path_to_document", "getOptions":"branch:branch_name", "tokenInfo": "{{ssm-secure:secure-string-token}}" }

      例如:

      { "owner":"TestUser", "repository":"GitHubTestExamples", "path":"scripts/python/test-script", "getOptions":"branch:exampleBranch", "tokenInfo":"{{ssm-secure:my-secure-string-token}}" }
      注意

      getOptions 是用于从分支(而非主分支)或存储库中的特定提交中检索内容的额外选项。如果您在主分支中使用最新提交,则可以省略 getOptions。仅当您的 SSM 文档存储在 master 以外的分支中时,branch 参数才是必需的。

      要使用存储库中特定提交 中的 SSM 文档版本,请使用 commitIDgetOptions,而不是 branch。例如:

      "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    • 如果选择 S3,则采用以下格式指定源信息信息:

      {"path":"URL_to_document_in_S3"}

      例如:

      {"path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/scripts/ruby/mySSMdoc.json"}
    • 如果选择 SSMDocument,则采用以下格式指定源信息信息:

      {"name": "document_name"}

      例如:

      {"name": "mySSMdoc"}
  6. 文档参数 字段中,输入远程 SSM 文档的参数。例如,如果运行 AWS-RunPowerShell 文档,则可指定:

    {"commands": ["date", "echo \"Hello World\""]}

    如果运行 AWS-ConfigureAWSPack 文档中,则可指定:

    { "action":"Install", "name":"AWSPVDriver" }
  7. Targets(目标)部分中,通过指定标签、手动选择实例或边缘设备或指定资源组,选择要在其上运行此操作的托管式节点。

    提示

    如果未列出您希望看到的托管式节点,请参阅 排除托管式节点可用性的问题 以获取故障排除技巧。

  8. 对于 Other parameters(其他参数)

    • 对于 Comment(注释),请输入有关此命令的信息。

    • 对于 Timeout (seconds) (超时 (秒)),请指定在整个命令执行失败之前系统等待的秒数。

  9. 对于 Rate control(速率控制)

    • 对于 Concurrency(并发),请指定要同时运行该命令的托管式节点的数量或百分比。

      注意

      如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标,但不确定有多少个托管式节点已被设为目标,则可通过指定百分比来限制可同时运行该文档的目标的数量。

    • 对于 Error threshold(错误阈值),请指定当命令在一定数量或百分比的节点上失败后,何时在其他托管式节点上停止运行该命令。例如,如果您指定三个错误,Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。

  10. (可选)对于 输出选项,要将命令输出保存到文件,请选中 将命令输出写入 S3 存储桶 框。在输入框中输入存储桶和前缀(文件夹)名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限,是分配给实例的实例配置文件(适用于 EC2 实例)或 IAM 服务角色(混合激活的计算机)的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅配置 Systems Manager 所需的实例权限为混合环境创建 IAM 服务角色。此外,如果指定的 S3 存储桶位于不同的 AWS 账户 中,请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。

  11. SNS 通知部分,如果需要发送有关命令执行状态的通知,请选中 Enable SNS notifications(启用 SNS 通知)复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅 使用 Amazon SNS 通知监控 Systems Manager 状态更改

  12. 选择 Run(运行)

注意

有关在使用 Run Command 调用脚本时重启服务器和实例的信息,请参阅 运行命令时处理重启问题