从远程位置运行文档
您可以使用 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 ManagerSecureString
参数传递。有关创建SecureString
参数的更多信息,请参阅 创建 Systems Manager 参数。
运行远程文档(控制台)
运行远程文档
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 Run Command。
-
选择 Run command(运行命令)。
-
在 文档列表中,选择
AWS-RunDocument
。 -
在 命令参数 中,对于 源类型,请选择一个选项。
-
如果选择 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 文档版本,请使用
commitID
和getOptions
,而不是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"}
-
-
在 文档参数 字段中,输入远程 SSM 文档的参数。例如,如果运行
AWS-RunPowerShell
文档,则可指定:{"commands": ["date", "echo \"Hello World\""]}
如果运行
AWS-ConfigureAWSPack
文档中,则可指定:{ "action":"Install", "name":"AWSPVDriver" }
在 Targets(目标)部分中,通过指定标签、手动选择实例或边缘设备或指定资源组,选择要在其上运行此操作的托管式节点。
提示
如果未列出您希望看到的托管式节点,请参阅 排除托管式节点可用性的问题 以获取故障排除技巧。
对于 Other parameters(其他参数):
-
对于 Comment(注释),请输入有关此命令的信息。
-
对于 Timeout (seconds) (超时 (秒)),请指定在整个命令执行失败之前系统等待的秒数。
-
对于 Rate control(速率控制):
-
对于 Concurrency(并发),请指定要同时运行该命令的托管式节点的数量或百分比。
注意
如果您通过指定应用于托管式节点的标签或指定 AWS Resource Groups 来选择目标,但不确定有多少个托管式节点已被设为目标,则可通过指定百分比来限制可同时运行该文档的目标的数量。
-
对于 Error threshold(错误阈值),请指定当命令在一定数量或百分比的节点上失败后,何时在其他托管式节点上停止运行该命令。例如,如果您指定三个错误,Systems Manager 将在收到第四个错误时停止发送该命令。仍在处理该命令的托管式节点也可能发送错误。
-
(可选)对于 输出选项,要将命令输出保存到文件,请选中 将命令输出写入 S3 存储桶 框。在输入框中输入存储桶和前缀(文件夹)名称。
注意
授予将数据写入 S3 存储桶的能力的 S3 权限,是分配给实例的实例配置文件(适用于 EC2 实例)或 IAM 服务角色(混合激活的计算机)的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅配置 Systems Manager 所需的实例权限或为混合环境创建 IAM 服务角色。此外,如果指定的 S3 存储桶位于不同的 AWS 账户 中,请确保与该托管式节点关联的实例配置文件或 IAM 服务角色具有写入该存储桶的所需权限。
在 SNS 通知部分,如果需要发送有关命令执行状态的通知,请选中 Enable SNS notifications(启用 SNS 通知)复选框。
有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅 使用 Amazon SNS 通知监控 Systems Manager 状态更改。
-
选择 Run(运行)。
注意
有关在使用 Run Command 调用脚本时重启服务器和实例的信息,请参阅 运行命令时处理重启问题。