从中运行 Python 脚本 GitHub - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

从中运行 Python 脚本 GitHub

本节包括帮助您使用 Amazon Systems Manager 控制台或 Amazon Command Line Interface (Amazon CLI) 从中GitHub运行 Python 脚本的过程。

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

从中运行 Python 脚本 GitHub
  1. 打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/

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

    -或者-

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

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

  4. Command document (命令文档) 列表中,选择 AWS-RunRemoteScript

  5. 对于命令参数,执行以下操作:

    • 源类型中,选择GitHub

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

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

      以下示例会下载一个名为 complex-script 的脚本目录。

      { "owner": "TestUser1", "repository": "SSMTestDocsRepo", "getOptions": "branch:myBranch", "path": "scripts/python/complex-script", "tokenInfo": "{{ssm-secure:myAccessTokenParam}}" }
      注意

      仅当您的脚本存储在 master 以外的分支中时,"branch" 才是必需的。

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

      "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",

    • 对于 Command Line (命令行),输入脚本执行的参数。下面是一个例子。

      mainFile.py argument-1 argument-2

      此示例运行 mainFile.py,它可在随后运行 complex-script 目录中的其他脚本。

    • (可选)对于 Working Directory(工作目录),输入节点上要在其中下载和运行脚本的目录的名称。

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

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

    提示

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

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

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

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

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

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

      注意

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

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

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

    注意

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

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

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

  11. 选择 Run(运行)

使用以下命令从中GitHub运行 Python 脚本 Amazon CLI

  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未安装)。

    有关信息,请参阅安装或更新 Amazon 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-02573cafcfEXAMPLE" --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 目录中的其他脚本。