Amazon ECS 容器代理配置
Amazon ECS 容器代理支持很多部署选项,其中大多数选项应通过环境变量来设置。提供了以下环境变量,并且它们都是可选的。
如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Linux 变体启动的,则可以在 /etc/ecs/ecs.config
文件中设置这些环境变量,然后重新启动代理。您还可以在启动时将这些配置变量写入到具有 Amazon EC2 用户数据的容器实例。有关更多信息,请参阅 使用 Amazon EC2 用户数据引导启动容器实例。
如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Windows 变体启动的,则可以使用 PowerShell SetEnvironmentVariable 命令设置这些环境变量,然后重新启动代理。有关更多信息,请参阅适用于 Windows 实例的 Amazon EC2 用户指南和 使用 Amazon EC2 用户数据引导 Windows 容器实例中的启动时在 Windows 实例上运行命令。
如果要手动启动 Amazon EC2 容器代理(对于没有经 Amazon ECS 优化的 AMI),则可以在用于启动代理的 docker run 命令中使用这些环境变量。将这些变量与语法 --env=
结合使用。对于敏感信息 (如私有存储库的身份验证凭证),您应该将代理环境变量存储在一个文件中并利用 VARIABLE_NAME
=VARIABLE_VALUE
--env-file
选项一次性将它们传递完。您可以使用以下命令来添加变量。path_to_env_file
sudo systemctl stop ecs sudo vi /etc/ecs/ecs.config # And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format. sudo systemctl start ecs
可用参数
有关可用的 Amazon ECS 容器代理配置参数的信息,请参阅 GitHub 上的 Amazon ECS 容器代理
将容器实例配置存储在 Amazon S3 中
Amazon ECS 容器代理配置通过上一部分中所述的环境变量来控制。经 Amazon ECS 优化的 AMI Linux 变体将在容器代理启动时在 /etc/ecs/ecs.config
中查找这些变量,并相应地配置代理。某些无害环境变量(如 ECS_CLUSTER
)可在启动时通过 Amazon EC2 用户数据传递到容器实例,并可写入到此文件而不会造成任何后果。但是,其他敏感信息(如您的 Amazon 凭证或 ECS_ENGINE_AUTH_DATA
变量)不应通过用户数据传递到某个实例或以它们能够在 .bash_history
文件中显示的方式写入到 /etc/ecs/ecs.config
。
将配置信息存储在 Amazon S3 中的私有存储桶中并向您的容器实例 IAM 角色授予只读访问权限,这是一个允许在启动时配置容器实例的安全方便的方法。可以将 ecs.config
文件的副本存储在私有存储桶中。然后,您可以使用 Amazon EC2 用户数据安装 Amazon CLI,并在实例启动时将配置信息复制到 /etc/ecs/ecs.config
。
为容器实例角色授予 Amazon S3 只读访问权限
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择 Roles (角色),然后选择要用于您的容器实例的 IAM 角色。此角色的标题可能为
ecsInstanceRole
。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色。 -
在 Managed Policies 下,选择 Attach Policy。
-
要缩小策略结果的范围,请在附加策略页面上,为筛选条件键入
S3
。 -
选中 AmazonS3ReadOnlyAccess 策略左侧的框并选择 Attach Policy。
要在 Amazon S3 中储存 ecs.config
文件
-
使用以下格式创建包含有效 Amazon ECS 代理配置变量的
ecs.config
文件。此示例将配置私有注册表身份验证。有关更多信息,请参阅 任务的私有注册表身份验证。ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}}注意
有关可用 Amazon ECS 代理配置变量的完整列表,请参阅 GitHub 上的 Amazon ECS 容器代理
。 -
要存储您的配置文件,请在 Amazon S3 中创建私有存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶。
-
将
ecs.config
文件上传到 S3 存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的向存储桶添加对象。
在启动时从 Amazon S3 加载 ecs.config
文件
-
完成本节中的上述过程以允许 Amazon S3 对您的容器实例进行只读访问,并将
ecs.config
文件存储在私有 S3 存储桶中。 -
通过执行启动 Amazon ECS Linux 容器实例中的步骤启动新的容器实例。在步骤 7中,使用以下示例脚本。该脚本将安装 Amazon CLI 并将您的配置文件复制到
/etc/ecs/ecs.config
。#!/bin/bash yum install -y aws-cli aws s3 cp s3://
your_bucket_name
/ecs.config /etc/ecs/ecs.config