从 GitHub 运行 Python 脚本
本节包含帮助您使用 AWS Systems Manager 控制台或 AWS Command Line Interface(AWS CLI)从 GitHub 运行 Python 脚本的过程。
从 GitHub 运行 Python 脚本(控制台)
从 GitHub 运行 Python 脚本
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 Run Command。
-
选择 Run command(运行命令)。
-
在 Command document (命令文档) 列表中,选择
AWS-RunRemoteScript
。 -
对于命令参数,执行以下操作:
-
在源类型中,选择 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"
才是必需的。要使用存储库中特定提交 中的脚本版本,请使用
commitID
和getOptions
,而不是branch
。例如:"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
-
对于 Command Line (命令行),输入脚本执行的参数。下面是一个例子。
mainFile.py argument-1 argument-2
此示例运行
mainFile.py
,它可在随后运行complex-script
目录中的其他脚本。 -
(可选)对于 Working Directory(工作目录),输入节点上要在其中下载和运行脚本的目录的名称。
-
(可选)对于 Execution Timeout(执行超时),指定脚本命令执行失败之前系统要等待的秒数。
-
在 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(运行)。
使用 AWS CLI 从 GitHub 运行 Python 脚本
安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。
有关信息,请参阅安装或更新 AWS CLI 的最新版本。
-
运行以下命令可从 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
目录中的其他脚本。