从 Amazon S3 运行脚本
本节介绍如何从 Amazon Simple Storage Service (Amazon S3) 下载和运行脚本。以下主题包含与 Amazon S3 相关的信息和术语。要了解有关 Amazon S3 的更多信息,请参阅什么是 Amazon S3? 您可以运行不同类型的脚本,包括 Ansible Playbooks、Python、Ruby、Shell 和 PowerShell。
还可以下载包括多个脚本的目录。在运行目录中的主脚本时,AWS Systems Manager 还会运行该目录中包含的任何引用的脚本。
请注意有关从 Amazon S3 运行脚本的以下重要详细信息:
-
Systems Manager 不会验证您的脚本是否能够在节点上运行。在下载和运行脚本之前,请确认相应节点上已经安装所需软件。您也可以创建一个复合文档,能够使用 Run Command 或State Manager(都是 AWS Systems Manager 中的工具)安装软件,然后再下载并运行脚本。
-
验证并确保您的用户、角色或组已经获得读取 S3 存储桶所需的 AWS Identity and Access Management(IAM)权限。
-
确保 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的实例配置文件拥有
s3:ListBucket
和s3:GetObject
权限。如果实例配置文件没有这些权限,系统将无法从 S3 存储桶下载脚本。有关更多信息,请参阅 IAM 用户指南中的使用实例配置文件。
从 Amazon S3 运行 Shell 脚本
以下信息包含帮助您使用 AWS Systems Manager 控制台或 AWS Command Line Interface(AWS CLI)从 Amazon Simple Storage Service(Amazon S3)运行脚本的过程。尽管示例中使用了 Shell 脚本,但可以替换其他类型的脚本。
从 Amazon S3 运行 Shell 脚本(控制台)
从 Amazon S3 运行 Shell 脚本
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 Run Command。
-
选择 Run command(运行命令)。
-
在 Command document (命令文档) 列表中,选择
AWS-RunRemoteScript
。 -
在命令参数中,执行以下操作:
-
在源类型中,选择 S3。
-
在 Source Info (源信息) 文本框中,按以下格式输入访问源所需的信息。将每个
示例资源占位符
替换为您自己的信息。注意
将 https://s3.
aws-api-domain
替换为您的存储桶 URL。您可以在 Objects(对象)选项卡上复制 Amazon S3 中的存储桶 URL。{"path":"https://s3.
aws-api-domain
/path to script
"}示例如下:
{"path":"https://amzn-s3-demo-bucket.s3.us-east-2.amazonaws.com/scripts/shell/helloWorld.sh"}
-
在 Command Line (命令行) 字段中,输入用于脚本执行的参数。下面是一个例子。
helloWorld.sh argument-1 argument-2
-
(可选)在 Working Directory(工作目录)字段中,输入节点(要在其中下载和运行脚本)上的目录的名称。
-
(可选) 在执行超时中,指定脚本命令执行失败之前系统要等待的秒数。
-
在 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(运行)。
从 Amazon S3 运行 Shell 脚本(命令行)
安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。
有关信息,请参阅安装或更新 AWS CLI 的最新版本。
-
运行以下命令。将每个
示例资源占位符
替换为您自己的信息。注意
将 https://s3.
aws-api-domain
/script path
替换为您的存储桶 URL。您可以在 Objects(对象)选项卡上复制 Amazon S3 中的存储桶 URL。