将 Amazon ECS 容器实例配置存储在 Amazon S3 中 - Amazon Elastic Container Service

将 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 文件
  1. 您必须向容器实例角色(ecsInstanceRole)授予只读访问 Amazon S3 的权限。为此,您可以将 AmazonS3ReadOnlyAccess 分配给 ecsInstanceRole 角色。有关如何将策略附加到角色的信息,请参阅《AWS Identity and Access Management 用户指南》中的更新角色权限

  2. 使用以下格式创建包含有效 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 容器代理

  3. 要存储您的配置文件,请在 Amazon S3 中创建私有存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶

  4. ecs.config 文件上传到 S3 存储桶。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的向存储桶添加对象

在启动时从 Amazon S3 加载 ecs.config 文件
  1. 完成本节中的上述过程以允许 Amazon S3 对您的容器实例进行只读访问,并将 ecs.config 文件存储在私有 S3 存储桶中。

  2. 启动新的容器实例,并在 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