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
可用参数
以下是可用的 Amazon ECS 容器代理配置参数。代理在内部使用的未记载的变量可能是可见的,但不适合客户使用。有关更多信息,请参阅 GitHub 上的 Amazon ECS 容器代理
ECS_CLUSTER
-
示例值:
MyCluster
Linux 上的原定设置值:
default
Windows 上的原定设置值:
default
此代理应签入的集群。如果此值未定义,则假定使用
default
集群。如果default
群集不存在,Amazon ECS 容器代理会尝试创建它。如果指定了非default
集群,但该集群不存在,则注册将失败。 ECS_RESERVED_PORTS
-
示例值:
[22, 80, 5000, 8080]
Linux 上的原定设置值:
[22, 2375, 2376, 51678, 51679, 51680]
Windows 上的原定设置值:
[53, 135, 139, 445, 2375, 2376, 3389, 5985, 51678, 51679]
应标记为不可用于在此容器实例上的计划的一组端口。
ECS_RESERVED_PORTS_UDP
-
示例值:
[53, 123]
Linux 上的原定设置值:
[]
Windows 上的原定设置值:
[]
应标记为不可用于在此容器实例上的计划的一组 UDP 端口。
ECS_ENGINE_AUTH_TYPE
-
示例值:
dockercfg | docker
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
对于私有注册表身份验证是必需的。这是
ECS_ENGINE_AUTH_DATA
中的身份验证数据的类型。有关更多信息,请参阅身份验证格式。 ECS_ENGINE_AUTH_DATA
-
示例值:
-
ECS_ENGINE_AUTH_TYPE=dockercfg
:{"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}} -
ECS_ENGINE_AUTH_TYPE=docker
:{"https://index.docker.io/v1/":{"username":"
my_name
","password":"my_password
","email":"email@example.com
"}}
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
对于私有注册表身份验证是必需的。如果
ECS_ENGINE_AUTH_TYPE=dockercfg
,则ECS_ENGINE_AUTH_DATA
值应该是通过运行 docker login 创建的 Docker 配置文件(~/.dockercfg
或~/.docker/config.json
)的内容。如果ECS_ENGINE_AUTH_TYPE=docker
,则ECS_ENGINE_AUTH_DATA
值应该是身份验证所针对的注册表服务器的 JSON 表示形式,以及注册表所需的身份验证参数(如该账户的用户名、密码和电子邮件地址)。有关更多信息,请参阅身份验证格式。 -
AWS_DEFAULT_REGION
-
示例值:
us-east-1
Linux 上的原定设置值:从 Amazon EC2 实例元数据中获取。
Windows 上的原定设置值:从 Amazon EC2 实例元数据中获取。
要在 API 请求中使用以及用于推断正确的后端主机的区域。
AWS_ACCESS_KEY_ID
-
示例值:
AKIAIOSFODNN7EXAMPLE
Linux 上的原定设置值:从 Amazon EC2 实例元数据中获取。
Windows 上的原定设置值:从 Amazon EC2 实例元数据中获取。
由代理用于所有调用的访问密钥。
AWS_SECRET_ACCESS_KEY
-
示例值:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Linux 上的原定设置值:从 Amazon EC2 实例元数据中获取。
Windows 上的原定设置值:从 Amazon EC2 实例元数据中获取。
由代理用于所有调用的私有密钥。
AWS_SESSION_TOKEN
-
Linux 上的原定设置值:从 Amazon EC2 实例元数据中获取。
Windows 上的原定设置值:从 Amazon EC2 实例元数据中获取。
用于临时凭证的会话令牌。
DOCKER_HOST
-
示例值:
unix:///var/run/docker.sock
Linux 上的原定设置值:
unix:///var/run/docker.sock
Windows 上的原定设置值:
npipe:////./pipe/docker_engine
用于创建与 Docker 守护程序的连接;行为方式与 Docker 客户端使用的环境变量相似。
ECS_LOGFILE
-
示例值:
/ecs-agent.log
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
代理日志应写入的位置。如果您通过
ecs-init
运行代理(这是使用经 Amazon ECS 优化的 AMI 时的原定设置方法),则容器内路径将为/log
,并且ecs-init
会将其挂载到主机上的/var/log/ecs/
。 ECS_LOGLEVEL
-
示例值:
crit
、error
、warn
、info
、debug
Linux 上的原定设置值:
info
Windows 上的原定设置值:
info
要记录的详细级别。
ECS_LOGLEVEL_ON_INSTANCE
-
示例值:
none
、crit
、error
、warn
、info
、debug
Linux 上的原定设置值:
none
,如果ECS_LOG_DRIVER
显式设置为非空值;否则,和ECS_LOGLEVEL
相同Windows 上的原定设置值:
none
,如果ECS_LOG_DRIVER
显式设置为非空值;否则,与ECS_LOGLEVEL
相同可用于覆盖
ECS_LOGLEVEL
并设置应记录在实例日志文件中的详细级别,与日志记录驱动程序中记录的级别分开。如果显式设置了日志记录驱动程序,则预设情况下会关闭实例日志,但可以使用此变量重新打开实例日志。 ECS_LOG_DRIVER
-
示例值:
awslogs
、fluentd
、gelf
、json-file
、journald
、logentries
、syslog
、splunk
Linux 上的原定设置值:
json-file
Windows 上的默认值:不适用
确定代理容器要使用的日志记录驱动程序。
ECS_CHECKPOINT
-
示例值:
true
|false
Linux 上的默认值:如果
ECS_DATADIR
显式设置为非空值,则ECS_CHECKPOINT
将设置为true
;否则,它将设置为false
。Windows 上的默认值:如果
ECS_DATADIR
显式设置为非空值,则ECS_CHECKPOINT
将设置为true
;否则,它将设置为false
。是否要将检查点状态保存到
ECS_DATADIR
指定的位置。 ECS_DATADIR
-
示例值:
/data
Linux 上的原定设置值:
/data/
Windows 上的原定设置值:
C:\ProgramData\Amazon\ECS\data
正在运行 Amazon ECS 容器代理的容器上的永久数据目录的名称。该目录用于保存有关集群和代理状态的信息。
ECS_UPDATES_ENABLED
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
在请求 Amazon ECS 代理更新时是否退出以进行更新。
ECS_DISABLE_METRICS
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
true
是否对 Amazon ECS 禁用 CloudWatch 指标。如果此值设置为
true
,则不会收集 CloudWatch 指标。 ECS_POLL_METRICS
-
示例值:
true
|false
Linux 上的默认值:
false
(请参阅以下说明)Windows 上的默认值:
false
(请参阅以下说明)是否在收集任务的 CloudWatch 指标时进行轮询或流式传输。
在
1.40.0
之前的代理版本中,原定设置值为false
。在代理版本中1.40.0
到1.42.0
中,原定设置值为true
。在代理版本中1.43.0
和更高版本中,原定设置值为false
。重要 若将
ECS_POLL_METRICS
设置为 false,则在 Amazon EC2 实例托管多个容器时,将导致代理、dockerd 和 containerd 的 CPU 利用率居高不下。 ECS_POLLING_METRICS_WAIT_DURATION
-
示例值:
30s
Linux 上的原定设置值:
15s
Windows 上的原定设置值:
15s
等待轮询任务的新 CloudWatch 指标的时间。仅在
ECS_POLL_METRICS
为true
时使用。 ECS_RESERVED_MEMORY
-
示例值:32
Linux 上的默认值:0
Windows 上的默认值:0
报告至 Amazon ECS 的实例内存容量的减少(以 MiB 为单位)。当在容器实例上放置任务时,Amazon ECS 使用此项参数。这不会在实例上预留内存使用量。有关更多信息,请参阅容器实例内存管理。
ECS_AVAILABLE_LOGGING_DRIVERS
-
示例值:
["awslogs","fluentd","gelf","json-file","journald","splunk","logentries","syslog"]
Linux 上的原定设置值:
["json-file","none"]
Windows 上的原定设置值:
["json-file","none"]
注意 如果您使用的是 ECS init,默认值为
["json-file","syslog","awslogs","none"]
。容器实例上可用的日志记录驱动程序。在容器实例上运行的 Amazon ECS 容器代理必须先将该实例上可用的日志记录驱动程序注册到
ECS_AVAILABLE_LOGGING_DRIVERS
环境变量,然后放置在该实例上的容器才能在任务中使用这些驱动程序的日志配置选项。有关如何使用awslogs
日志驱动程序的信息,请参阅使用 awslogs 日志驱动程序。有关可用于 Docker 版本的不同日志驱动程序的更多信息,请参阅 Docker 文档中的配置日志记录驱动程序。 ECS_DISABLE_PRIVILEGED
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否在容器实例上关闭启动特权容器。如果此值设置为
true
,则不允许使用特权容器。 ECS_SELINUX_CAPABLE
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
SELinux 是否在容器实例上可用。
ECS_APPARMOR_CAPABLE
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
AppArmor 是否在容器实例上可用。
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
-
示例值:
1h
(有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”和“h”。)Linux 上的原定设置值:
3h
Windows 上的原定设置值:
3h
从任务停止到删除 Docker 容器所等待的时间。由于这将删除 Docker 容器数据,因此请注意,如果此值设置得过低,您可能无法检查已停止的容器或无法在日志删除前查看它们。最短持续时间为
1s
;任何短于 1 秒的值都会被忽略。 ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION_JITTER
-
示例值:
1h
(有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”和“h”。)Linux 上的默认值:空
Windows 上的原定设置值:
3h
等待任务引擎清理的抖动时间。指定后,每个任务的实际清理等待时间将是
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
中指定的持续时间加上介于 0 和抖动持续时间之间的随机持续时间。 ECS_CONTAINER_STOP_TIMEOUT
-
示例值:
10m
(有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”和“h”。)Linux 上的原定设置值:
30s
Windows 上的原定设置值:
30s
从任务停止到其容器由于未自行正常退出而被强制停止所等待的时间。
ECS_CONTAINER_START_TIMEOUT
-
示例值:
10m
(有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”和“h”。)Linux 上的原定设置值:
3m
Windows 上的原定设置值:
8m
在放弃启动容器之前等待的时间。
ECS_CONTAINER_CREATE_TIMEOUT
-
示例值:
10m
(有效时间单位为“ns”、“us”(或“µs”)、“ms”、“s”、“m”和“h”。)Linux 上的原定设置值:
4m
Windows 上的原定设置值:
4m
在放弃创建容器之前等待的时间。
HTTP_PROXY
-
示例值:
10.0.0.131:3128
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
供 Amazon ECS 代理用来连接到互联网的某个 HTTP 代理的主机名(或 IP 地址)和端口号。例如,如果您的容器实例无法通过 Amazon VPC 互联网网关或 NAT 网关或实例来访问外部网络,则将使用此代理。如果设置了此变量,您还必须设置
NO_PROXY
变量以筛选来自该代理的 Amazon EC2 实例元数据和 Docker 守护程序流量。有关更多信息,请参阅HTTP 代理配置。 NO_PROXY
-
示例值:
-
Linux:
169.254.169.254,169.254.170.2,/var/run/docker.sock
-
Windows:
169.254.169.254,169.254.170.2,\\.\pipe\docker_engine
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
不应转发到指定的
HTTP_PROXY
的 HTTP 流量。您必须指定169.254.169.254,/var/run/docker.sock
以筛选来自该代理的 Amazon EC2 实例元数据和 Docker 守护程序流量。有关更多信息,请参阅HTTP 代理配置。 -
ECS_ENABLE_TASK_IAM_ROLE
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
注意 如果您使用的是
ecs init
,原定设置值为true
。是否应在具有
bridge
或default
网络模式的任务容器的容器实例上启用任务的 IAM 角色。有关更多信息,请参阅任务 IAM 角色。 ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
注意 如果您使用的是
ecs init
,原定设置值为true
。是否应在具有
host
网络模式的任务容器的容器实例上启用任务的 IAM 角色。此变量仅在代理版本 1.12.0 和更高版本上受支持。有关更多信息,请参阅任务 IAM 角色。 ECS_DISABLE_IMAGE_CLEANUP
-
示例值:
true
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否为 Amazon ECS 代理禁用自动化映像清除。有关更多信息,请参阅自动化任务和映像清除。
ECS_IMAGE_CLEANUP_INTERVAL
-
示例值:
30m
Linux 上的原定设置值:
30m
Windows 上的原定设置值:
30m
自动化映像清除周期之间的时间间隔。如果设置为短于 10 分钟,该值将被忽略。
ECS_IMAGE_MINIMUM_CLEANUP_AGE
-
示例值:
30m
Linux 上的原定设置值:
1h
Windows 上的原定设置值:
1h
拉取映像与可考虑将其进行自动化映像清除之间的最短时间间隔。
NON_ECS_IMAGE_MINIMUM_CLEANUP_AGE
-
示例值:
30m
Linux 上的原定设置值:
1h
Windows 上的原定设置值:
1h
创建非 Amazon ECS 映像与可考虑将其进行自动化映像清除之间的最短时间间隔。
ECS_NUM_IMAGES_DELETE_PER_CYCLE
-
示例值:
5
Linux 上的原定设置值:
5
Windows 上的原定设置值:
5
要在单次自动化映像清除周期中删除的映像的最大数量。如果设置为小于 1,该值将被忽略。
ECS_IMAGE_PULL_BEHAVIOR
-
示例值:
default
|always
|once
|prefer-cached
Linux 上的原定设置值:
default
Windows 上的原定设置值:
default
用于为您的容器实例自定义拉取映像流程的行为。下面介绍了可选行为:
-
如果指定
default
,则远程拉取映像。如果映像拉取失败,容器将在实例上使用缓存的映像。 -
如果指定
always
,则始终远程拉取映像。如果映像拉取失败,任务将失败。此选项可确保始终拉取映像的最新版本。所有缓存映像均被忽略,并受自动映像清除过程支配。 -
如果指定
once
,仅当同一容器实例上之前的任务尚未拉取映像或缓存映像已被自动映像清除过程删除时远程拉取映像。否则,将使用实例上缓存的映像。这样可确保不会进行不必要的映像拉取尝试。 -
如果指定
prefer-cached
,则在没有缓存映像时远程拉取映像。否则,将使用实例上缓存的映像。为容器禁用自动映像清除,以确保不会删除缓存的映像。
-
ECS_IMAGE_PULL_INACTIVITY_TIMEOUT
-
示例值:
1m
Linux 上的原定设置值:
1m
Windows 上的原定设置值:
3m
docker 提取完成后等待提取容器的时间。用于优化大型 Windows 容器。
ECS_INSTANCE_ATTRIBUTES
-
示例值:
{"custom_attribute": "custom_attribute_value"}
Linux 上的原定设置值:Null
Windows 上的原定设置值:Null
要应用于容器实例的自定义属性的列表(JSON 格式)。在实例注册时使用该属性会添加自定义属性,这样可跳过通过 AWS Management Console手动添加自定义属性的方法。
注意 添加的属性将不会应用于已注册的容器实例。要向已注册的容器实例添加自定义属性,请参阅使用经典控制台添加属性。
有关可用自定义属性的信息,请参阅属性。
此变量的无效 JSON 值导致代理退出,代码为
5
。代理日志中会显示一条消息。JSON 值可能有效,但验证属性时检测到问题(例如,值过长或包含无效字符)。在此情况下,仍会进行容器实例注册,但代理会退出,代码为5
,代理日志中也将写入一条消息。有关如何查找代理日志的信息,请参阅Amazon ECS 容器代理日志。 ECS_ENABLE_TASK_ENI
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否为要使用其自己的网络接口启动的任务启用任务联网。
ECS_ENABLE_HIGH_DENSITY_ENI
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的默认值:不适用
在使用任务联网时是否启用高密度。
ECS_CNI_PLUGINS_PATH
-
示例值:
/ecs/cni
Linux 上的原定设置值:
/amazon-ecs-cni-plugins
Windows 上的默认值:不适用
cni 二进制文件所在的路径在 Linux 上。
ECS_AWSVPC_BLOCK_IMDS
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否阻止使用 网络模式启动的任务对实例元数据
awsvpc
的访问。 ECS_AWSVPC_ADDITIONAL_LOCAL_ROUTES
-
示例值:
["10.0.15.0/24"]
Linux 上的原定设置值:
[]
Windows 上的原定设置值:
[]
在
awsvpc
网络模式中,将通过主桥而不是任务弹性网络接口路由至这些前缀的流量。 ECS_ENABLE_CONTAINER_METADATA
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
当为
true
时,代理会创建一个文件,用于描述容器的元数据。此文件可以通过使用容器环境变量$ECS_CONTAINER_METADATA_FILE
来定位和使用。 ECS_FSX_WINDOWS_FILE_SERVER_SUPPORTED
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
true
容器实例是否支持 FSx for Windows File Server 卷类型。此变量仅在代理版本 1.47.0 和更高版本上受支持。
ECS_HOST_DATA_DIR
-
示例值:
/var/lib/ecs
Linux 上的原定设置值:
/var/lib/ecs
Windows 上的默认值:不适用
安装
ECS_DATADIR
的主机上的源目录。在 Amazon ECS 代理作为容器运行的情况下,我们使用它来确定容器元数据文件的源挂载路径。我们不在 Windows 中使用此值,因为 Amazon ECS 代理并不作为容器运行。 ECS_ENABLE_RUNTIME_STATS
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
确定是否为代理启用了 pprof。如果已启用,则可以通过代理的自检端口(例如
curl http://localhost:51678/debug/pprof/heap > heap.pprof
)访问不同的配置文件。此外,代理的运行时统计信息会记录到/var/log/ecs/runtime-stats.log
文件中。 ECS_ENABLE_TASK_CPU_MEM_LIMIT
-
示例值:
true
|false
Linux 上的原定设置值:
true
Windows 上的原定设置值:
false
是否启用任务级 CPU 和内存限制。
ECS_CGROUP_PATH
-
示例值:
/sys/fs/cgroup
Linux 上的原定设置值:
/sys/fs/cgroup
Windows 上的默认值:不适用
Amazon ECS 代理需要的根 cgroup 路径。这是可从代理挂载访问的路径。
ECS_ENABLE_CPU_UNBOUNDED_WINDOWS_WORKAROUND
-
示例值:
true
|false
Linux 上的默认值:不适用
Windows 上的原定设置值:
false
当为
true
时,Amazon ECS 将允许 CPU 未绑定 (CPU=0
) 任务与 CPU 绑定任务一起在 Windows 中运行。 ECS_TASK_METADATA_RPS_LIMIT
-
示例值:
100,150
Linux 上的原定设置值:
40,60
Windows 上的原定设置值:
40,60
任务元数据端点和代理 API 端点的总流量的稳定状态和突增节流限制的整数值(用逗号分隔)。
ECS_SHARED_VOLUME_MATCH_FULL_CONFIG
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
当任务定义中指定了
dockerVolumeConfiguration
且使用了autoprovision
标志时,Amazon ECS 容器代理将比较 Docker 卷详细信息和现有 Docker 卷的详细信息。当ECS_SHARED_VOLUME_MATCH_FULL_CONFIG
为true
时,容器代理对卷的完整配置(name
、driverOpts
和labels
)进行比较以验证卷是否相同。当它为false
时,容器代理将使用 Docker 的默认行为,仅验证该卷的name
。如果某个卷在容器实例之间共享,则应设置为false
。有关更多信息,请参阅Docker 卷。 ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM
-
示例值:
ec2_instance
Linux 上的默认值:无
Windows 上的默认值:无
如果指定了
ec2_instance
,则容器实例上定义的现有标签将注册到 Amazon ECS。可使用ListTagsForResource
操作发现标签。与容器实例关联的 IAM 角色应具有允许的ec2:DescribeTags
操作。有关更多信息,请参阅向 Amazon EC2 容器实例添加标签。 ECS_CONTAINER_INSTANCE_TAGS
-
示例值:
{"
tag_key
": "tag_val
"}Linux 上的原定设置值:
{}
Windows 上的原定设置值:
{}
应用到容器实例的元数据,可帮助您对资源进行分类和组织。每个标签都包含自定义键和可选值。标签键最多可包含 128 个字符。标签值最多可包含 256 个字符。
如果容器实例标签是使用
ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM
参数传播的,则这些标签将由使用ECS_CONTAINER_INSTANCE_TAGS
指定的标签覆盖。有关更多信息,请参阅向 Amazon EC2 容器实例添加标签。 ECS_ENABLE_UNTRACKED_IMAGE_CLEANUP
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否允许 Amazon ECS 代理删除不属于 Amazon ECS 任务的容器和映像。
ECS_EXCLUDE_UNTRACKED_IMAGE
-
示例值:
{"
alpine
":"latest
"}Linux 上的原定设置值:
{}
Windows 上的原定设置值:
{}
映像的逗号分隔列表 (
imageName:tag
),如果ECS_ENABLE_UNTRACKED_IMAGE_CLEANUP
为true
,则 Amazon ECS 代理不应删除该列表。 ECS_DISABLE_DOCKER_HEALTH_CHECK
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否为 Amazon ECS 代理禁用 Docker 容器运行状况检查。
ECS_NVIDIA_RUNTIME
-
示例值:
nvidia
Linux 上的原定设置值:
nvidia
Windows 上的原定设置值:
n/a
要用于将 NVIDIA GPU 设备传递到容器的运行时。如果已指定 GPU 资源要求,则不应将此参数指定为任务定义中的环境变量。有关更多信息,请参阅在 Amazon ECS 上使用 GPU。
ECS_ENABLE_SPOT_INSTANCE_DRAINING
-
示例值:
true
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否为容器实例启用 Spot 实例耗尽。设置为 true 时,如果容器实例收到 Spot 中断通知,则代理会将实例状态设置为
DRAINING
,此状态将正常关闭并替换在该实例上运行的属于服务一部分的所有任务。建议您在使用竞价型实例时将此值设置为 true。必须在容器代理启动之前设置此参数。有关更多信息,请参阅Spot 实例耗尽。 ECS_ENABLE_GPU_SUPPORT
-
示例值:
true
Linux 上的原定设置值:
false
Windows 上的原定设置值:
n/a
是否使用具有 GPU 支持的容器实例。为代理指定此参数。您还必须为 GPU 配置任务定义。有关更多信息,请参阅在 Amazon ECS 上使用 GPU。
ECS_LOG_ROLLOVER_TYPE
-
示例值:
size
、hourly
Linux 上的原定设置值:
hourly
Windows 上的原定设置值:
hourly
确定容器代理日志文件是将按小时轮换还是基于大小轮换。预设情况下,代理日志文件每小时轮换一次。
ECS_LOG_OUTPUT_FORMAT
-
示例值:
logfmt
、json
Linux 上的原定设置值:
logfmt
Windows 上的原定设置值:
logfmt
确定日志输出格式。使用
json
格式时,日志中的每一行都将是一个结构化的 JSON 映射。 ECS_LOG_MAX_FILE_SIZE_MB
-
示例值:
10
Linux 上的原定设置值:
10
Windows 上的原定设置值:
10
将
ECS_LOG_ROLLOVER_TYPE
变量设置为size
时,此变量将确定日志文件在轮换之前的最大大小(以 MB 为单位)。如果将轮换类型设置为hourly
,则忽略此变量。 ECS_LOG_MAX_ROLL_COUNT
-
示例值:
24
Linux 上的原定设置值:
24
Windows 上的原定设置值:
24
确定要保留的轮换日志文件的数量。达到此限制后,将删除较旧的日志文件。
ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE
-
示例值:
true
Linux 上的默认值:请参阅以下说明
Windows 上的原定设置值:
false
是否启用
awslogs
日志驱动程序以使用任务执行 IAM 角色进行身份验证。此参数必须为true
才能在已指定任务执行 IAM 角色的任务中使用awslogs
日志驱动程序。在将经 Amazon ECS 优化的 AMI 与版本 1.16.0-1 或更高版本的ecs-init
程序包结合使用时,将使用原定设置值true
。在使用旧版本的ecs-init
程序包时,将使用默认值false
。 ECS_PULL_DEPENDENT_CONTAINERS_UPFRONT
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
是否在满足
dependsOn
条件之前提取具有依赖关系的容器的映像。 ECS_EXCLUDE_IPV6_PORTBINDING
-
示例值:
true
|false
Linux 上的原定设置值:
true
Windows 上的原定设置值:
true
使用
default
网络模式时,代理是否应排除IPv6端口绑定。当该值为 true 时,会筛选 IPv6 端口绑定,不会在 DescribeTasks 响应中返回任务 IPv6 端口绑定。绑定包含在任务元数据端点中。此语法在
1.55.3
版本 及更高版本中可用。 ECS_SKIP_LOCALHOST_TRAFFIC_FILTER
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
预设情况下,
ecs-init
服务将添加 iptable 规则,以将非本地数据包丢弃到 localhost,前提是它们不是现有转发连接或 DNAT 的一部分,并在停止时删除规则。如果ECS_SKIP_LOCALHOST_TRAFFIC_FILTER
设置为 true,则不会添加或删除此规则。 ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
预设情况下,
ecs-init
服务添加了一个 iptable 规则来阻止从主机外(或awsvpc
网络模式中的容器)访问代理自检端口,并在停止时删除规则。如果ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS
设置为 true,则不会添加或删除此规则。 ECS_OFFHOST_INTROSPECTION_INTERFACE_NAME
-
示例值:
eth0
Linux 上的原定设置值:
eth0
Windows 上的原定设置值:
eth0
用于阻止主机外代理自检端口访问的主要网络接口名称。默认情况下,此值为
eth0
。 ECS_WARM_POOLS_CHECK
-
示例值:
true
|false
Linux 上的原定设置值:
false
Windows 上的原定设置值:
false
仅在您有一个 自动扩缩组且想要将一个暖池将其关联时,将此变量设置为
true
。如果为 true,Amazon ECS 代理将轮询实例元数据,以确定实例是否已准备好包含在 Amazon ECS 集群中。当您的应用程序需要横向扩展时,自动扩缩组将快速将所需数量的预初始化实例从暖池移动到集群。
此变量在代理版本
1.59.0
及更高版本中可用。 CREDENTIALS_FETCHER_HOST
-
示例值:
unix:///var/credentials-fetcher/socket/credentials_fetcher.sock
Linux 上的原定设置值:
unix:///var/credentials-fetcher/socket/credentials_fetcher.sock
Windows 上的默认值:不适用
仅在您有一个 自动扩缩组且想要将一个暖池将其关联时,将此变量设置为
true
。用于创建与
credentials-fetcher
进程守护程序的连接,以支持 gMSA on Linux。默认值适用于大多数用户。仅在使用自定义凭证提取器套接字路径(例如CF_UNIX_DOMAIN_SOCKET_DIR
)时才需要修改此值。 CREDENTIALS_FETCHER_SECRET_NAME_FOR_DOMAINLESS_GMSA
-
示例值:
secretmanager-secretname
Linux 上的原定设置值:
secretmanager-secretname
Windows 上的默认值:不适用
仅在您有一个 自动扩缩组且想要将一个暖池将其关联时,将此变量设置为
true
。用于支持 gMSA on Linux
credentials-fetcher
进程守护程序的扩缩选项。如果在未加入域的实例上配置 gMSA,则需要创建一个 Active Directory 用户,该用户有权检索 gMSA 账户的主体并将其存储在密钥管理器中 ECS_DYNAMIC_HOST_PORT_RANGE
-
示例值:
100-200
Linux 上的默认值:由
/proc/sys/net/ipv4/ip_local_port_range
定义Windows 上的原定设置值:
49152-65535
这为容器端口范围映射指定了代理用于分配主机端口的动态主机端口范围。
此变量在代理版本
1.68.0
及更高版本中可用。
将容器实例配置存储在 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 只读访问权限
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Roles (角色),然后选择要用于您的容器实例的 IAM 角色。此角色的标题可能为
ecsInstanceRole
。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色。 -
在 Managed Policies 下,选择 Attach Policy。
-
要缩小策略结果的范围,请在附加策略页面上,为筛选条件键入
S3
。 -
选中 AmazonS3ReadOnlyAccess 策略左侧的框并选择 Attach Policy。
要在 Amazon S3 中储存 ecs.config
文件
-
采用以下格式,利用
ecs.config
中的有效环境变量和值创建 Amazon ECS 容器代理配置 文件。此示例将配置私有注册表身份验证。有关更多信息,请参阅任务的私有注册表身份验证。ECS_ENGINE_AUTH_TYPE=dockercfg ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth":"
zq212MzEXAMPLE7o6T25Dk0i
","email":"email@example.com
"}} -
要存储您的配置文件,请在 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中,使用以下示例脚本。该脚本将安装 AWS 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