将 Amazon ECS 容器实例配置存储在 Amazon S3 中
Amazon ECS 容器代理配置通过环境变量来控制。经 Amazon ECS 优化的 AMI Linux 变体将在容器代理启动时在 /etc/ecs/ecs.config
中查找这些变量,并相应地配置代理。某些无害环境变量(如 ECS_CLUSTER
)可在启动时通过 Amazon EC2 用户数据传递到容器实例,并可写入到此文件而不会造成任何后果。但是,其他敏感信息(如您的 AWS 凭证或 ECS_ENGINE_AUTH_DATA
变量)不应通过用户数据传递到某个实例或以它们能够在 .bash_history
文件中显示的方式写入到 /etc/ecs/ecs.config
。
将配置信息存储在 Amazon S3 中的私有存储桶中并向您的容器实例 IAM 角色授予只读访问权限,这是一个允许在启动时配置容器实例的安全方便的方法。可以将 ecs.config
文件的副本存储在私有存储桶中。然后,您可以使用 Amazon EC2 用户数据安装 AWS CLI,并在实例启动时将配置信息复制到 /etc/ecs/ecs.config
。
要在 Amazon S3 中储存 ecs.config
文件
您必须向容器实例角色(ecsInstanceRole)授予只读访问 Amazon S3 的权限。为此,您可以将 AmazonS3ReadOnlyAccess 分配给
ecsInstanceRole
角色。有关如何将策略附加到角色的信息,请参阅《AWS Identity and Access Management 用户指南》中的更新角色权限-
使用以下格式创建包含有效 Amazon ECS 代理配置变量的
ecs.config
文件。此示例将配置私有注册表身份验证。有关更多信息,请参阅 在 Amazon ECS 中使用非 AWS 容器映像。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 存储桶中。 -
启动新的容器实例,并在 EC2 用户数据中使用以下示例脚本。脚本将安装 AWS CLI 并将您的配置文件复制到
/etc/ecs/ecs.config
。有关更多信息,请参阅 启动 Amazon ECS Linux 容器实例。#!/bin/bash yum install -y aws-cli aws s3 cp s3://
your_bucket_name
/ecs.config /etc/ecs/ecs.config