Amazon ECS 容器代理配置 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 容器代理配置参数的信息,请参阅上的 Amazon ECS 容器代理 GitHub。

将容器实例配置存储在 Amazon S3 中

Amazon ECS 容器代理配置通过上一部分中所述的环境变量来控制。经 Amazon ECS 优化的 AMI Linux 变体将在容器代理启动时在 /etc/ecs/ecs.config 中查找这些变量,并相应地配置代理。某些无害环境变量(如 ECS_CLUSTER)可在启动时通过 Amazon EC2 用户数据传递到容器实例,并可写入到此文件而不会造成任何后果。但是,切勿将其他敏感信息(例如您的 Amazon 凭据或ECS_ENGINE_AUTH_DATA变量)以用户数据形式传递给实例,也不得以/etc/ecs/ecs.config允许它们显示在.bash_history文件中的方式写入。

将配置信息存储在 Amazon S3 中的私有存储桶中并向您的容器实例 IAM 角色授予只读访问权限,这是一个允许在启动时配置容器实例的安全方便的方法。可以将 ecs.config 文件的副本存储在私有存储桶中。然后,您可以使用 Amazon EC2 用户数据安装 Amazon CLI 并将您的配置信息复制到实例启动/etc/ecs/ecs.config时。

为容器实例角色授予 Amazon S3 只读访问权限
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择 Roles (角色),然后选择要用于您的容器实例的 IAM 角色。此角色的标题可能为 ecsInstanceRole。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

  3. Managed Policies 下,选择 Attach Policy

  4. 要缩小策略结果的范围,请在附加策略页面上,为筛选条件键入 S3

  5. 选中 AmazonS3 ReadOnlyAccess 政策左侧的复选框,然后选择附加政策

要在 Amazon S3 中储存 ecs.config 文件
  1. 使用以下格式创建包含有效 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 代理配置变量的完整列表,请参阅上的 Amazon ECS 容器代理 GitHub。

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

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

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

  2. 通过执行启动 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