AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

从 GitHub 和 Amazon S3 运行脚本

本节介绍如何使用 AWS-RunRemoteScript 预定义的 SSM 文档下载来自 GitHub 和 Amazon S3 的脚本,包括 Ansible Playbook、Python、Ruby 和 PowerShell 脚本。通过使用该文档,不再需要将脚本手动导入 Amazon EC2,也不需要将其封装在 SSM 文档中。通过将 Systems Manager 与 GitHub 和 Amazon S3 集成,可以促进实现基础设施即代码,由此可缩短管理实例需要的时间,同时在队列中实现标准化配置。

还可以创建自定义 SSM 文档,实现从远程位置即可下载并运行脚本或其他 SSM 文档。有关更多信息,请参阅创建复合文档

从 GitHub 运行脚本

本部分介绍如何从私有或公有 GitHub 存储库下载并运行脚本。您可以运行不同类型的脚本,包括 Ansible Playbook、Python、Ruby 和 PowerShell 脚本。

还可以下载包括多个脚本的目录。在运行目录中的主脚本时,Systems Manager 也会同时运行所有引用的脚本 (只要引用的脚本包含在该目录中)。

请注意关于从 GitHub 运行脚本的下列重要详细信息。

  • Systems Manager 不检查您的脚本是否能够在实例上运行。在下载并运行脚本之前,必须验证对应实例上是否已经安装所需软件。您也可以创建一个复合文档,以使用 Run Command 或 State Manager 安装软件,然后再下载并运行脚本。

  • 您负责确保满足所有 GitHub 要求,包括根据需要刷新访问令牌。另外,必须确保不超过已验证或未验证请求的数量。有关更多信息,请参阅 GitHub 文档。

从 GitHub 运行 Ansible Playbook

本部分包含帮助您使用 控制台或 AWS CLI 从 GitHub 运行 Ansible Playbook 的过程。

开始前的准备工作

如果您计划运行私有 GitHub 存储库中存储的脚本,必须为 GitHub 安全访问令牌创建 Systems Manager SecureString 参数。通过 SSH 手动传递令牌无法访问私有 GitHub 存储库中的脚本。访问令牌必须作为 Systems Manager SecureString 参数传递。有关创建 SecureString 参数的更多信息,请参阅创建 Systems Manager 参数

从 GitHub 运行 Ansible Playbook(控制台)

根据您使用的服务 (AWS Systems Manager 或 Amazon EC2 Systems Manager),请采用下列过程之一:

从 GitHub (AWS Systems Manager) 运行 Ansible Playbook

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择运行命令

  4. 命令文档列表中,选择 AWS-RunRemoteScript

  5. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数中,执行以下操作:

    • 源类型中,选择 GitHub

    • Source Info (源信息) 框中,按以下格式键入访问源所需的信息:

      {"owner":"owner_name", "repository": "repository_name", "path": "path_to_scripts_or_directory", "tokenInfo":"{{ssm-secure:SecureString_parameter_name}}" }

      例如:

      {"owner":"TestUser1", "repository": "GitHubPrivateTest", "path": "scripts/webserver.yml", "tokenInfo":"{{ssm-secure:mySecureStringParameter}}" }

      此示例下载名为 webserver.yml 的文件。

    • Command Line 字段中,键入脚本执行的参数。以下是示例。

      ansible-playbook -i “localhost,” --check -c local webserver.yml
    • (可选) 在工作目录字段中,键入要在其中下载和运行脚本的实例上的目录名称。

    • (可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。

  7. 对于其他参数

    • 对于注释,请键入有关该命令的信息。

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

  8. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

  9. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  10. SNS 通知部分中,如果您希望发送有关命令执行状态的通知,请选中启用 SNS 通知复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  11. 选择 Run

从 GitHub 运行 Ansible Playbook (Amazon EC2 Systems Manager)

  1. Open the Amazon EC2 console at https://console.amazonaws.cn/ec2/.

  2. 在导航窗格中,选择 Run Command,然后选择 Run a command

  3. Document 列表中,选择 AWS-RunRemoteScript

  4. Select Targets by 部分中,选择相应选项并选择要在其中下载和运行脚本的实例。

  5. (可选) 在 Execute on 字段中,指定可同时运行 AWS-RunRemoteScript 文档的 Targets 的数量 (例如,10)。或者指定可同时运行该文档的目标数量的百分比 (例如 10%)。

    注意

    如果通过选择 EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比限制可运行此文档的实例数量。

  6. (可选) 在 Stop after 字段中,指定系统在停止向其他实例发送命令之前允许的最大错误数。例如,如果您指定 3,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  7. Source Type 列表中,选择 GitHub

  8. Source 文本框中,按以下格式键入访问源所需的信息:

    {"owner":"owner_name", "repository": "repository_name", "path": "path_to_scripts_or_directory", "tokenInfo":"{{ssm-secure:SecureString_parameter_name}}" }

    例如:

    {"owner":"TestUser1", "repository": "GitHubPrivateTest", "path": "scripts/webserver.yml", "tokenInfo":"{{ssm-secure:mySecureStringParameter}}" }
  9. Command Line 字段中,键入脚本执行的参数。以下是示例。

    ansible-playbook -i “localhost,” --check -c local webserver.yml
  10. Working Directory 字段中,键入实例上要在其中下载和运行脚本的目录的名称。

  11. Comments 字段中,键入有关该命令的信息。

  12. Advanced Options (高级选项) 部分中,选择 Write to S3 (写入到 S3) 以便在 Amazon S3 存储桶中存储命令输出。在文本框中键入存储桶和前缀名称。

  13. 选择 Enable SNS notifications (启用 SNS 通知) 以接收有关命令执行的通知和状态。有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  14. 选择 Run

使用 AWS CLI 从 GitHub 运行 Ansible Playbook

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 运行以下命令可从 GitHub 下载并运行脚本。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "instance-IDs" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-1234abcd" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'

从 GitHub 运行 Python 脚本

本部分包含帮助您使用控制台或 AWS CLI 从 GitHub 运行 Python 脚本的过程。

从 GitHub 运行 Python 脚本(控制台)

根据您使用的服务 (AWS Systems Manager 或 Amazon EC2 Systems Manager),请采用下列过程之一:

从 GitHub (AWS Systems Manager) 运行 Python 脚本

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择运行命令

  4. 命令文档列表中,选择 AWS-RunRemoteScript

  5. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数中,执行以下操作:

    • 源类型中,选择 GitHub

    • 源信息文本框中,按以下格式键入访问源所需的信息:

      {"owner":"owner_name", "repository": "repository_name", "path": "path_to_scripts_or_directory", "tokenInfo":"{{ssm-secure:SecureString_parameter_name}}" }

      例如:

      {"owner":"TestUser1", "repository":"GitHubPrivateTest", "path": "scripts/python/complex-script","tokenInfo":"{{ssm-secure:mySecureStringParameter}}"}

      此示例下载名为 complex-script 的脚本目录。

    • Command Line 字段中,键入脚本执行的参数。以下是示例。

      mainFile.py argument-1 argument-2

      该示例运行 mainFile.py,后者之后会运行 complex-script 目录中的其他脚本。

    • (可选) 在工作目录字段中,键入要在其中下载和运行脚本的实例上的目录名称。

    • (可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。

  7. 对于其他参数

    • 对于注释,请键入有关该命令的信息。

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

  8. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

  9. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  10. SNS 通知部分中,如果您希望发送有关命令执行状态的通知,请选中启用 SNS 通知复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  11. 选择 Run

从 GitHub 运行 Python 脚本 (Amazon EC2 Systems Manager)

  1. Open the Amazon EC2 console at https://console.amazonaws.cn/ec2/.

  2. 在导航窗格中,选择 Run Command,然后选择 Run a command

  3. Document 列表中,选择 AWS-RunRemoteScript

  4. Select Targets by 部分中,选择相应选项并选择要在其中下载和运行脚本的实例。

  5. (可选) 在 Execute on 字段中,指定可同时运行 AWS-RunRemoteScript 文档的 Targets 的数量 (例如,10)。或者指定可同时运行该文档的目标数量的百分比 (例如 10%)。

    注意

    如果通过选择 EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比限制可运行此文档的实例数量。

  6. (可选) 在 Stop after 字段中,指定系统在停止向其他实例发送命令之前允许的最大错误数。例如,如果您指定 3,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  7. Source Type 列表中,选择 GitHub

  8. Source 文本框中,按以下格式键入访问源所需的信息:

    {"owner":"owner_name", "repository": "repository_name", "path": "path_to_scripts_or_directory", "tokenInfo":"{{ssm-secure:SecureString_parameter_name}}" }

    例如:

    {"owner":"TestUser1", "repository":"GitHubPrivateTest", "path": "scripts/python/complex-script","tokenInfo":"{{ssm-secure:mySecureStringParameter}}"}

    此示例下载名为 complex-script 的脚本目录。

  9. Command Line 字段中,键入脚本执行的参数。以下是示例。

    mainFile.py argument-1 argument-2

    该示例运行 mainFile.py,后者之后会运行 complex-script 目录中的其他脚本。

  10. Working Directory 字段中,键入实例上要在其中下载和运行脚本的目录的名称。

  11. Comments 字段中,键入有关该命令的信息。

  12. Advanced Options (高级选项) 部分中,选择 Write to S3 (写入到 S3) 以便在 Amazon S3 存储桶中存储命令输出。在文本框中键入存储桶和前缀名称。

  13. 选择 Enable SNS notifications 以接收有关命令执行的通知和状态。有关为 Run Command 配置 SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  14. 选择 Run

使用 AWS CLI 从 GitHub 运行 Python 脚本

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 运行以下命令可从 GitHub 下载并运行脚本。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "instance-IDs" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"path_to_script_or_directory"}"],"commandLine":["commands_to_run"]}'

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-abcd1234" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\":\"GitHubTestPublic\", \"path\": \"scripts/python/complex-script\"}"],"commandLine":["mainFile.py argument-1 argument-2 "]}'

    此示例下载名为 complex-script 的脚本目录。commandLine 条目运行 mainFile.py,它之后会运行 complex-script 目录中的其他脚本。

从 Amazon S3 运行脚本

本部分介绍如何从 Amazon S3 下载并运行脚本。您可以运行不同类型的脚本,包括 Ansible Playbooks、Python、Ruby、Shell 和 PowerShell。

还可以下载包括多个脚本的目录。在运行目录中的主脚本时,Systems Manager 也会同时运行所有引用的脚本 (只要引用的脚本包含在该目录中)。

请注意关于从 Amazon S3 运行脚本的下列重要详细信息。

  • Systems Manager 不检查您的脚本是否能够在实例上运行。在下载并运行脚本之前,必须验证对应实例上是否已经安装所需软件。您也可以创建一个复合文档,以使用 Run Command 或 State Manager 安装软件,然后再下载并运行脚本。

  • 验证您的 AWS Identity and Access Management (IAM) 用户账户、角色或组是否有权读取 S3 存储桶。

从 Amazon S3 运行 Ruby 脚本

本部分包含帮助您使用 Systems Manager 控制台或 AWS CLI 从 Amazon S3 运行 Ruby 脚本的过程。

从 Amazon S3 (控制台) 运行 Ruby 脚本

根据您使用的服务 (AWS Systems Manager 或 Amazon EC2 Systems Manager),请采用下列过程之一:

从 Amazon S3 运行 Ruby 脚本 (AWS Systems Manager)

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择运行命令

  4. 命令文档列表中,选择 AWS-RunRemoteScript

  5. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数中,执行以下操作:

    • 源类型中,选择 S3

    • 源信息文本框中,按以下格式键入访问源所需的信息:

      {"path":"https://s3.amazonaws.com/path_to_script"}

      例如:

      {"path":"https://s3.amazonaws.com/rubytest/scripts/ruby/helloWorld.rb"}
    • Command Line 字段中,键入脚本执行的参数。以下是示例。

      helloWorld.rb argument-1 argument-2
    • (可选) 在工作目录字段中,键入要在其中下载和运行脚本的实例上的目录名称。

    • (可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。

  7. 对于其他参数

    • 对于注释,请键入有关该命令的信息。

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

  8. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

  9. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  10. SNS 通知部分中,如果您希望发送有关命令执行状态的通知,请选中启用 SNS 通知复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  11. 选择 Run

从 Amazon S3 运行 Ruby 脚本 (Amazon EC2 Systems Manager)

  1. Open the Amazon EC2 console at https://console.amazonaws.cn/ec2/.

  2. 在导航窗格中,选择 Run Command,然后选择 Run a command

  3. Document 列表中,选择 AWS-RunRemoteScript

  4. Select Targets by 部分中,选择相应选项并选择要在其中下载和运行脚本的实例。

  5. (可选) 在 Execute on 字段中,指定可同时运行 AWS-RunRemoteScript 文档的 Targets 的数量 (例如,10)。或者指定可同时运行该文档的目标数量的百分比 (例如 10%)。

    注意

    如果通过选择 EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比限制可运行此文档的实例数量。

  6. (可选) 在 Stop after 字段中,指定系统在停止向其他实例发送命令之前允许的最大错误数。例如,如果您指定 3,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  7. Source Type 列表中,选择 S3

  8. Source 文本框中,按以下格式键入访问源所需的信息:

    {"path":"https://s3.amazonaws.com/path_to_script"}

    例如:

    {"path":"https://s3.amazonaws.com/rubytest/scripts/ruby/helloWorld.rb"}
  9. Command Line 字段中,键入脚本执行的参数。以下是示例。

    helloWorld.rb argument-1 argument-2
  10. Working Directory 字段中,键入实例上要在其中下载和运行脚本的目录的名称。

  11. Comments 字段中,键入有关该命令的信息。

  12. Advanced Options (高级选项) 部分中,选择 Write to S3 (写入到 S3) 以便在 Amazon S3 存储桶中存储命令输出。在文本框中键入存储桶和前缀名称。

  13. 选择 Enable SNS notifications 以接收有关命令执行的通知和状态。有关为 Run Command 配置 SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  14. 选择运行

使用 AWS CLI 从 Amazon S3 运行 Ruby 脚本

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 根据本地计算机上的操作系统类型,运行以下命令之一来从 Amazon S3 下载并运行脚本(Windows 版本包含您从命令行工具运行命令所需的转义字符 (“/”)):

    Windows 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/RubyTest/scripts/ruby/helloWorld.rb\"}',"commandLine"="helloWorld.rb argument-1 argument-2"

    Linux 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/RubyTest/scripts/ruby/helloWorld.rb\"}"],"commandLine":["helloWorld.rb argument-1 argument-2"]}'

从 Amazon S3 运行 Shell 脚本

本部分包含帮助您使用 Systems Manager 控制台或 AWS CLI 从 Amazon S3 运行 Shell 脚本的过程。

从 Amazon S3 运行 Shell 脚本(控制台)

根据您使用的服务 (AWS Systems Manager 或 Amazon EC2 Systems Manager),请采用下列过程之一:

从 Amazon S3 运行 Shell 脚本 (AWS Systems Manager)

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择运行命令

  4. 命令文档列表中,选择 AWS-RunRemoteScript

  5. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数中,执行以下操作:

    • 源类型中,选择 S3

    • 源信息文本框中,按以下格式键入访问源所需的信息:

      {"path":"https://s3.amazonaws.com/path_to_script"}

      例如:

      {"path":"https://s3.amazonaws.com/shelltest/scripts/shell/helloWorld.sh"}
    • Command Line 字段中,键入脚本执行的参数。以下是示例。

      helloWorld.sh argument-1 argument-2
    • (可选) 在工作目录字段中,键入要在其中下载和运行脚本的实例上的目录名称。

    • (可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。

  7. 对于其他参数

    • 对于注释,请键入有关该命令的信息。

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

  8. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

  9. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  10. SNS 通知部分中,如果您希望发送有关命令执行状态的通知,请选中启用 SNS 通知复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  11. 选择运行

从 Amazon S3 运行 Shell 脚本 (Amazon EC2 Systems Manager)

  1. Open the Amazon EC2 console at https://console.amazonaws.cn/ec2/.

  2. 在导航窗格中,选择 Run Command,然后选择 Run a command

  3. Document 列表中,选择 AWS-RunRemoteScript

  4. Select Targets by 部分中,选择相应选项并选择要在其中下载和运行脚本的实例。

  5. (可选) 在 Execute on 字段中,指定可同时运行 AWS-RunRemoteScript 文档的 Targets 的数量 (例如,10)。或者指定可同时运行该文档的目标数量的百分比 (例如 10%)。

    注意

    如果通过选择 EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比限制可运行此文档的实例数量。

  6. (可选) 在 Stop after 字段中,指定系统在停止向其他实例发送命令之前允许的最大错误数。例如,如果您指定 3,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  7. Source Type 列表中,选择 S3

  8. Source 文本框中,按以下格式键入访问源所需的信息:

    {"path":"https://s3.amazonaws.com/path_to_script"}

    例如:

    {"path":"https://s3.amazonaws.com/shelltest/scripts/shell/helloWorld.sh"}
  9. Command Line 字段中,键入脚本执行的参数。以下是示例。

    helloWorld.sh argument-1 argument-2
  10. Working Directory 字段中,键入实例上要在其中下载和运行脚本的目录的名称。

  11. Comments 字段中,键入有关该命令的信息。

  12. Advanced Options (高级选项) 部分中,选择 Write to S3 (写入到 S3) 以便在 Amazon S3 存储桶中存储命令输出。在文本框中键入存储桶和前缀名称。

  13. 选择 Enable SNS notifications 以接收有关命令执行的通知和状态。有关为 Run Command 配置 SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  14. 选择运行

使用 AWS CLI 从 Amazon S3 运行 Shell 脚本

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 根据本地计算机上的操作系统类型,运行以下命令之一来从 Amazon S3 下载并运行脚本(Windows 版本包含您从命令行工具运行命令所需的转义字符 (“\”)):

    Windows 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/ShellTest/scripts/shell/helloWorld.sh\"}',"commandLine"="helloWorld.sh argument-1 argument-2"

    Linux 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/ShellTest/scripts/shell/helloWorld.sh\"}"],"commandLine":["helloWorld.sh argument-1 argument-2"]}'

从 Amazon S3 运行 PowerShell 脚本

本节包含帮助您使用 EC2 控制台或 AWS CLI 从 Amazon S3 运行 PowerShell 脚本的过程。

从 Amazon S3 运行 PowerShell 脚本(控制台)

根据您使用的服务 (AWS Systems Manager 或 Amazon EC2 Systems Manager),请采用下列过程之一:

从 Amazon S3 运行 PowerShell 脚本 (AWS Systems Manager)

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

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

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择运行命令

  4. 命令文档列表中,选择 AWS-RunRemoteScript

  5. 目标部分中,指定标签或手动选择实例以指定要在其中运行该操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数中,执行以下操作:

    • 源类型中,选择 S3

    • 源信息文本框中,按以下格式键入访问源所需的信息:

      {"path": "https://s3.amazonaws.com/path_to_script"}

      例如:

      {"path": "https://s3.amazonaws.com/PowerShellTest/powershell/helloPowershell.ps1"}
    • Command Line 字段中,键入脚本执行的参数。以下是示例。

      helloPowershell.ps1 argument-1 argument-2
    • (可选) 在工作目录字段中,键入要在其中下载和运行脚本的实例上的目录名称。

    • (可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。

  7. 对于其他参数

    • 对于注释,请键入有关该命令的信息。

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

  8. (可选)对于速率控制

    • 对于并发,请指定要同时运行该命令的实例数或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

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

  9. Output options (输出选项) 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket (将命令输出写入 Amazon S3 存储桶)。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅

  10. SNS 通知部分中,如果您希望发送有关命令执行状态的通知,请选中启用 SNS 通知复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  11. 选择 Run

从 Amazon S3 运行 PowerShell 脚本 (Amazon EC2 Systems Manager)

  1. Open the Amazon EC2 console at https://console.amazonaws.cn/ec2/.

  2. 在导航窗格中,选择 Run Command,然后选择 Run a command

  3. Document 列表中,选择 AWS-RunRemoteScript

  4. Select Targets by 部分中,选择相应选项并选择要在其中下载和运行脚本的实例。

  5. (可选) 在 Execute on 字段中,指定可同时运行 AWS-RunRemoteScript 文档的 Targets 的数量 (例如,10)。或者指定可同时运行该文档的目标数量的百分比 (例如 10%)。

    注意

    如果通过选择 EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比限制可运行此文档的实例数量。

  6. (可选) 在 Stop after 字段中,指定系统在停止向其他实例发送命令之前允许的最大错误数。例如,如果您指定 3,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  7. Source Type 列表中,选择 S3

  8. Source 文本框中,按以下格式键入访问源所需的信息:

    {"path": "https://s3.amazonaws.com/path_to_script"}

    例如:

    {"path": "https://s3.amazonaws.com/PowerShellTest/powershell/helloPowershell.ps1"}
  9. Command Line 字段中,键入脚本执行的参数。以下是示例。

    helloPowershell.ps1 argument-1 argument-2
  10. Working Directory 字段中,键入实例上要在其中下载和运行脚本的目录的名称。

  11. Comments 字段中,键入有关该命令的信息。

  12. Advanced Options (高级选项) 部分中,选择 Write to S3 (写入到 S3) 以便在 Amazon S3 存储桶中存储命令输出。在文本框中键入存储桶和前缀名称。

  13. 选择 Enable SNS notifications 以接收有关命令执行的通知和状态。有关为 Run Command 配置 SNS 通知的更多信息,请参阅为 AWS Systems Manager 配置 Amazon SNS 通知

  14. 选择 Run

使用 AWS CLI 从 S3 运行 PowerShell 脚本

  1. Install and configure the AWS CLI, if you have not already.

    For information, see Install or Upgrade and then Configure the AWS CLI.

  2. 根据本地计算机上的操作系统类型,运行以下命令之一来从 Amazon S3 下载并运行脚本(Windows 版本包含您从命令行工具运行命令所需的转义字符 (“\”)):

    Windows 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/path_to_script\"}',"commandLine"="script_name_and_arguments"

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.amazonaws.com/PowerShellTest/scripts/powershell/helloWorld.ps1\"}',"commandLine"="helloWorld.ps1 argument-1 argument-2"

    Linux 本地计算机:

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=instance-IDs" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_script\"}"],"commandLine":["script_name_and_arguments"]}'

    以下是示例。

    aws ssm send-command --document-name "AWS-RunRemoteScript" --targets "Key=instanceids,Values=i-1234567890abcdef0" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.amazonaws.com/PowerShellTest/scripts/powershell/helloWorld.ps1\"}"],"commandLine":["helloWorld.ps1 argument-1 argument-2"]}'