"portMappings": [
"containerPort": integer
必需:是,当使用 repositoryCredentials 时
包含私有存储库凭证的密钥的 Amazon 资源名称 (ARN)。
有关更多信息,请参阅任务的私有注册表身份验证:
当你使用亚马逊 ECS API 时,AWS CLI,或AWSSDK,如果密钥与你启动的任务位于同一个区域,那么你可以使用完整的 ARN 或密钥的名称。当你使用AWS Management Console,则必须指定密钥的完整 ARN。
下面是显示必需参数的任务定义代码段:
"containerDefinitions": [
"image": "private-repo/private-image",
"repositoryCredentials": {
"credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
高级容器定义参数
以下高级容器定义参数为 docker run 命令,该命令用于在 Amazon ECS 容器实例上启动容器。
运行状况检查
healthCheck
容器的运行状况检查命令和关联的配置参数。此参数将映射到 Docker Remote API 的Create a container(创建容器)部分中的 HealthCheck 以及 docker run 的 HEALTHCHECK 参数。
Amazon ECS 容器代理仅监控和报告在任务定义中指定的运行状况检查。Amazon ECS 不监控嵌入到容器映像中和未在容器定义中指定的 Docker 运行状况检查。在容器定义中指定的运行状况检查参数覆盖容器映像中存在的任意 Docker 运行状况检查。
您可以通过两种方法中的任何一种来查看单个容器和任务的运行状况。你可以打电话DescribeTasksAPI 操作或在控制台中查看任务详情。
运行状况检查旨在确保您的容器在代理重启、升级或暂时不可用后仍能存活下来。
下面介绍了容器的 healthStatus 可能值:
UNHEALTHY—一个或多个必需容器的运行状况检查失败。
UNKNOWN— 任务中的基本容器仍在评估其运行状况检查。只有定义了运行状况检查的非必要容器,或者没有定义容器运行状况检查。
如果任务是手动运行的,而不是作为服务的一部分运行,则该任务将继续其生命周期,而无论其运行状况如何。对于属于服务的任务,如果任务报告为运行状况不佳,则该任务将停止,服务计划程序将替换它。
以下是有关容器运行状况检查支持的注意事项:
当 Amazon ECS 代理无法连接到亚马逊 ECS 服务时,该服务会将容器报告为UNHEALTHY。
运行状况检查状态是来自 Amazon ECS 代理的 “最后一次收件人” 响应。对容器运行状况检查的状态没有做出任何假设。
容器运行状况检查需要 Amazon ECS 容器代理版本 1.17.0 或更高版本。有关更多信息,请参阅更新 Amazon ECS 容器代理:
如果你使用的是 Linux 平台版本 1.1.0 或稍后容器,Fargate 任务支持容器运行状况检查。有关更多信息,请参阅AWS Fargate 平台版本:
command
一个字符串数组,表示容器运行以确定其是否正常运行的命令。字符串数组可以以 CMD 开头以直接运行命令参数,或者以 CMD-SHELL 开头以使用容器的默认 Shell 来运行命令。如果两者都未指定,将使用 CMD。
在中注册任务定义时AWS Management Console,使用逗号分隔的命令列表。创建任务定义后,这些命令将转换为字符串。以下是运行状况检查的输入示例。
CMD-SHELL, curl -f http://localhost/ || exit 1
使用注册任务定义时AWS Management ConsoleJSON 面板,AWS CLI,或 API,将命令列表放在方括号中。以下是运行状况检查的输入示例。
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
不带有 stderr 输出的退出代码 0 表示成功,非零退出代码表示失败。有关更多信息,请参阅 Docker Remote API 的Create a container(创建容器)部分中的 HealthCheck。
interval
每次运行状况检查间隔的时间(以秒为单位)。您可以在 5 到 300 秒之间指定。默认 值为 30 秒。
timeout
等待运行状况检查成功执行的时间长度(以秒为单位),超过该时间则视为失败。您可以在 2 到 60 秒之间指定。默认值为 5 秒。
retries
重试失败的运行状况检查的次数,超过该次数将容器视为不正常。您可以指定 1 到 10 次重试。默认值为三次重试。
startPeriod
可选的宽限期,这让容器有时间来引导,不将失败的运行状况检查计数计入最大重试次数中。您可以指定 0 到 300 秒之间的值。startPeriod 默认已禁用。
类型:整数
必需:条件
Amazon ECS 容器代理为容器预留的 cpu 单位的数量。在 Linux 上,此参数将映射到 Docker Remote API 的创建容器部分中的 CpuShares 以及 docker run 的 --cpu-shares 选项。
对于使用 Fargate 启动类型的任务,此字段为可选字段。为任务中的所有容器预留的 CPU 总量必须低于任务级的 cpu 值。
您可以确定每种 Amazon EC2 实例类型可用的 CPU 单元数量。为此,请将上面为该实例类型列出的 vCPU 数量相乘亚马逊 EC2 实例详情页面已上线 1,024。
Linux容器与容器实例上的其他容器共享未分配的 CPU 单元,其比例与其分配数量相同。例如,假设您在为该容器指定了 512 个 CPU 单元的单核实例类型上运行单容器任务。此外,该任务是在容器实例上运行的唯一任务。在此示例中,容器可以在任何给定时间使用完整的 1024 个 CPU 单位份额。但是,假设您在该容器实例上启动了同一任务的另一个副本。保证每项任务在需要时至少有 512 个 CPU 单元。同样,如果另一个容器未使用剩余的 CPU,则每个容器可以浮动到更高的 CPU 使用率。但是,如果两个任务一直都处于 100% 活动状态,那么它们将限制为 512 个 CPU 单位。
开启Linux容器实例,Docker容器实例上的守护程序使用 CPU 值来计算正在运行的容器的相对 CPU 份额比率。有关更多信息,请参阅 Docker 文档中的 CPU 共享约束。Linux 内核允许的最小有效 CPU 共享值为 2。不过,CPU 参数不是必需的,您可以在容器定义中使用小于 2 的 CPU 值。对于小于 2 的 CPU 值(包括 null),此行为因您的 Amazon ECS 容器代理版本而异:
代理版本 <= 1.1.0:将空值和零 CPU 值传递给Docker作为 0。Docker然后将此值转换为 1,024 个 CPU 份额。CPU 值为 1 会被传递到Docker合而为一,哪个Linux内核转换为两个 CPU 份额。
代理版本 >= 1.2.0:将空值、零值和 CPU 值为一传递给Docker作为两个 CPU 份额。
开启Windows容器实例,CPU 配额作为绝对配额强制执行。Windows容器只能访问任务定义中定义的指定数量的 CPU。将空或零 CPU 值传递给Docker如同0。Windows然后将此值解释为一个 CPU 的 1%。
有关更多示例,请参阅亚马逊 ECS 如何管理 CPU 和内存资源。
类型:ResourceRequirement 对象
Amazon ECS 容器代理为容器预留的物理 GPUs 的数量。为某个任务中的所有容器预留的 GPU 的数量不得超过该任务在其上启动的容器实例的可用 GPU 的数量。有关更多信息,请参阅在 Amazon ECS 上使用 GPU:
不支持此参数Windows托管在 Fargate 上的容器或容器。
Elastic Inference
accelerator
类型:ResourceRequirement 对象
对于 InferenceAccelerator 类型,value 与任务定义中指定的 InferenceAccelerator 的 deviceName 匹配。有关更多信息,请参阅Elastic Inference 加速器名称:
自 2023 年 4 月 15 日起,AWS 不再允许新客户加入 Amazon Elastic Inference(EI),并将帮助现有客户将其工作负载迁移到价格更低廉且性能更出色的选项。2023 年 4 月 15 日之后,新客户将无法在亚马逊使用亚马逊 EI 加速器启动实例 SageMaker、亚马逊 ECS 或亚马逊 EC2。但是,在过去 30 天内至少使用过一次 Amazon EI 的客户将视为当前客户,可继续使用该服务。
不支持此参数Windows托管在 Fargate 上的容器或容器。
essential
类型:布尔值
假设essential容器的参数被标记为true,并且该容器因任何原因失效或停止。然后,作为任务一部分的所有其他容器都将停止。如果将容器的 essential 参数标记为 false,则容器发生故障不会影响任务中的剩余容器。如果省略此参数,则假定容器是主要容器。
所有任务都必须具有至少一个主要容器。假设你有一个由多个容器组成的应用程序。然后,将用于共同目的的容器分组为组件,并将不同的组件分成多个任务定义。有关更多信息,请参阅为亚马逊 ECS 设计您的应用程序:
"essential": true|false
entryPoint
Amazon ECS 容器代理的早期版本无法正确处理 entryPoint 参数。如果您在使用 entryPoint 时遇到问题,请更新您的容器代理或改为输入命令和参数作为 command 数组项。
类型:字符串数组
传递给容器的入口点。此参数将映射到 Docker Remote API 的创建容器部分中的 Entrypoint 以及 docker run 的 --entrypoint 选项。有关该的更多信息Docker ENTRYPOINT参数,请参阅https://docs.docker.com/engine/reference/builder/#entrypoint。
"entryPoint": ["string", ...]
command
类型:字符串数组
传递给容器的命令。此参数映射到 Docker Remote API 创建容器部分中的 Cmd,以及 docker run 的 COMMAND 参数。有关该的更多信息Docker CMD参数,请参阅https://docs.docker.com/engine/reference/builder/#cmd。如果有多个参数,请确保每个参数都是数组中一个分隔的字符串。
"command": ["string", ...]
workingDirectory
类型:字符串
在其中运行命令的容器中的工作目录。此参数将映射到 Docker Remote API 的创建容器部分中的 WorkingDir 以及 docker run 的 --workdir 选项。
"workingDirectory": "string"
environmentFiles
类型:对象数组
包含要传递到容器的环境变量的文件列表。此参数可将 --env-file 选项映射到 docker run。
这不适用于Windows容器。
您最多可以指定 10 个环境文件。文件必须具有 .env 文件扩展名。环境文件中的每一行都包含 VARIABLE=VALUE 格式的环境变量。以开头的行#被视为评论并被忽略。有关适当的环境变量文件语法的更多信息,请参阅在文件中声明默认环境变量。
如果在容器定义中指定了单个环境变量,则这些变量的优先级高于环境文件中包含的变量。如果指定了多个包含相同变量的环境文件,则会按从上到下的顺序处理这些文件。建议您使用唯一的变量名。有关更多信息,请参阅将环境变量传递给容器:
类型:对象数组
要传递给容器的环境变量。此参数将映射到 Docker Remote API 的创建容器部分中的 Env 以及 docker run 的 --env 选项。
建议不要对敏感信息(如凭证数据)使用纯文本环境变量。
"environment" : [
{ "name" : "string", "value" : "string" },
{ "name" : "string", "value" : "string" }
secrets
类型:对象数组
表示用于对容器开放的密钥的对象。有关更多信息,请参阅将敏感数据传递给容器:
类型:字符串
要向容器公开的密钥。支持的值为 AWS Secrets Manager 密钥的完整 Amazon 资源名称(ARN)或 AWS Systems Manager Parameter Store 中的参数的完整 ARN。
如果 Systems Manager Parameter Store 参数存在于要启动的任务所在的AWS 区域,则可以使用密钥的完整 ARN 或名称。如果参数存在于不同的区域,则必须指定完整的 ARN。
"secrets": [
"name": "environment_variable_name",
"valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
类型:布尔值
当此参数设置为 true 时,容器内会关闭联网。此参数将映射到 Docker Remote API 的Create a container(创建容器)部分中的 NetworkDisabled。
不支持此参数Windows容器或任务使用awsvpc网络模式。
默认为 false。
"disableNetworking": true|false
links
类型:字符串数组
link 参数允许容器相互进行通信,而无需端口映射。仅当任务定义的网络模式设置为时,才支持此参数bridge。的name:internalName构造类似于name:alias在Docker链接。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。有关链接的更多信息Docker容器,请参阅https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/。此参数将映射到 Docker Remote API 的创建容器部分中的 Links 以及 docker run 的 --link 选项。
不支持此参数Windows容器或任务使用awsvpc网络模式。
并置在同一容器实例上的容器可以相互通信,而无需链接或主机端口映射。容器实例上的网络隔离由安全组和 VPC 设置控制。
"links": ["name:internalName", ...]
hostname
类型:字符串
要对您的容器使用的主机名。此参数将映射到 Docker Remote API 的创建容器部分中的 Hostname 以及 docker run 的 --hostname 选项。
如果使用 awsvpc 网络模式,则不支持 hostname 参数。
"hostname": "string"
dnsServers
类型:字符串数组
提供给容器的 DNS 服务器的列表。此参数将映射到 Docker Remote API 的创建容器部分中的 Dns 以及 docker run 的 --dns 选项。
不支持此参数Windows容器或任务使用awsvpc网络模式。
"dnsServers": ["string", ...]
dnsSearchDomains
类型:字符串数组
模式:^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$
提供给容器的 DNS 搜索域的列表。此参数将映射到 Docker Remote API 的创建容器部分中的 DnsSearch 以及 docker run 的 --dns-search 选项。
使用 awsvpc 网络模式的 Windows 容器或任务不支持此参数。
"dnsSearchDomains": ["string", ...]
类型:对象数组
要追加到容器上的 /etc/hosts 文件的主机名和 IP 地址映射的列表。
此参数将映射到 Docker Remote API 的创建容器部分中的 ExtraHosts 以及 docker run 的 --add-host 选项。
使用 awsvpc 网络模式的 Windows 容器或任务不支持此参数。
"extraHosts": [
"hostname": "string",
"ipAddress": "string"
类型:布尔值
当此参数为 true 时,将对此容器提供对其根文件系统的只读访问权。此参数将映射到 Docker Remote API 的创建容器部分中的 ReadonlyRootfs 以及 docker run 的 --read-only 选项。
默认为 false。
"readonlyRootFilesystem": true|false
mountPoints
类型:对象数组
您的容器中数据卷的挂载点。
此参数将映射到 Docker Remote API 的创建容器部分中的 Volumes 以及 docker run 的 --volume 选项。
Windows 容器可在 $env:ProgramData 所在的驱动器上挂载整个目录。Windows 容器无法在其他驱动器上挂载目录,并且挂载点不能跨驱动器。
容器的日志配置规范。
有关使用日志配置的示例任务定义,请参阅示例任务定义。
此参数将映射到 Docker Remote API 的创建容器部分中的 LogConfig 以及 docker run 的 --log-driver 选项。默认情况下,容器使用的日志驱动程序与Docker守护程序使用。但是,容器可能使用与不同的日志驱动程序Dockerdaemon,方法是在容器定义中使用此参数指定日志驱动程序。要对容器使用不同的日志记录驱动程序,必须在容器实例上正确配置日志系统(或者在不同的日志服务器上使用远程日志记录选项)。有关支持的不同日志驱动程序的选项的更多信息,请参阅配置日志驱动程序
在Docker文档。
指定容器的日志配置时,考虑以下事项:
Amazon ECS 支持可用的日志驱动程序子集Docker守护程序。可能会在 Amazon ECS 容器代理的未来版本中提供其他日志驱动程序。
此参数需要版本 1.18 或更高版本的Docker您的容器实例上的远程 API。
对于使用 EC2 启动类型的任务,在容器实例上运行的 Amazon ECS 容器代理必须将该实例上可用的日志驱动程序注册到ECS_AVAILABLE_LOGGING_DRIVERS放置在该实例上的容器之前的环境变量可以使用这些日志配置选项。有关更多信息,请参阅Amazon ECS 容器代理配置:
对于使用 Fargate 启动类型的任务,因为您无权访问托管您的任务的底层基础设施,所以必须在此任务之外安装任何所需的其他软件。例如,Fluentd输出聚合器或运行 Logstash 进行发送的远程主机Gelf登录到。
"logConfiguration": {
"logDriver": "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens",
"options": {"string": "string"
...},
"secretOptions": [{
"name": "string",
"valueFrom": "string"
类型:字符串
有效值:"awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"
必需:是,当使用 logConfiguration 时
要用于容器的日志驱动程序。默认情况下,前面列出的有效值是一些日志驱动程序,Amazon ECS 容器代理可以与它们进行通信。
对于使用 Fargate 启动类型的任务,受支持的日志驱动程序为 awslogs、splunk 和 awsfirelens。
对于使用 EC2 启动类型的任务,支持的日志驱动程序为 awslogs、fluentd、gelf、json-file、journald、logentries、syslog、splunk 和 awsfirelens。
有关如何使用的更多信息awslogs在任务定义中记录驱动程序以将您的容器日志发送到CloudWatch 日志,请参阅使用 awslogs 日志驱动程序。
有关使用 awsfirelens 日志驱动程序的更多信息,请参阅自定义日志路由。
如果您有未列出的自定义驱动程序,则可以将 Amazon ECS 容器代理项目分叉为可用于 GitHub并对其进行自定义以与该驱动程序配合使用。我们鼓励您针对要包含的更改提交拉取请求。但是,我们目前不支持运行此软件的修改副本。
此参数要求您容器实例上的 Docker Remote API 版本为 1.18 或更高。
options
类型:字符串到字符串映射
要发送到日志驱动程序的配置选项的键/值映射。
当你使用时 FireLens 将日志路由到AWS 服务要么AWS Partner Network日志存储和分析的目的地,您可以设置log-driver-buffer-limit选项,用于限制在发送到日志路由器容器之前在内存中缓冲的事件数量。它可以帮助解决潜在的日志丢失问题,因为高吞吐量可能会导致内部缓冲区的内存耗尽Docker。有关更多信息,请参阅Fluentd 缓冲区限制:
此参数要求您容器实例上的 Docker Remote API 版本为 1.19 或更高版本。
secretOptions
类型:对象数组
一个对象,表示要传递到日志配置的密钥。日志配置中使用的密钥可以包括身份验证令牌、证书或加密密钥。有关更多信息,请参阅将敏感数据传递给容器:
类型:字符串到字符串映射
配置日志路由器时要使用的选项的键/值映射。此字段是可选的,可用于指定自定义配置文件或向日志事件添加其他元数据,如任务、任务定义、群集和容器实例详细信息。如果指定,则使用的语法为 "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"}。有关更多信息,请参阅创建使用 FireLens 配置的任务定义:
类型:字符串
要使用的日志路由器。有效值为 fluentd 或 fluentbit。
类型:字符串数组
SSM 或 Amazon S3 中与证书规范相关的 ARN 列表 (CredSpec) 用于配置容器以进行活动目录身份验证的文件。我们建议您使用此参数代替dockerSecurityOptions。ARN 的最大数量为 1。
每个 ARN 有两种格式。
CredentialSpecdomainless:myARN
你用credentialspecdomainless:MyARN提供一个CredSpec在 Secrets Manager 中还有一个关于密钥的额外章节。您在密钥中提供域的登录凭据。
在任何容器实例上运行的每个任务都可以加入不同的域。
您无需将容器实例加入域即可使用此格式。
凭证规范:myarn
你用credentialspec:MyARN提供一个CredSpec对于单个域名。
在开始使用此任务定义的任何任务之前,必须将容器实例加入域。
在这两种格式中,都替换MyARN使用 SSM 或 Amazon S3 中的 ARN。
的credspec必须在 Secrets Manager 中为包含用户名、密码和要连接的域的密钥提供 ARN。为了提高安全性,该实例未加入域名进行无域身份验证。实例上的其他应用程序无法使用无域证书。您可以使用此参数在同一个实例上运行任务,即使这些任务需要加入不同的域也是如此。有关更多信息,请参阅在 Windows 容器中使用 GMSA和在 Linux 容器中使用 GMSA。
privileged
类型:布尔值
当该参数为 true 时,将对此容器提供对主机容器实例的提升的特权(类似于 root 用户)。我们建议不要使用 privileged 运行容器。在大多数情况下,您可以使用特定参数来指定所需的确切权限,而不是使用 privileged。
此参数将映射到 Docker Remote API 的创建容器部分中的 Privileged 以及 docker run 的 --privileged 选项。
使用 Fargate 启动类型的 Windows 容器或任务不支持此参数。
默认为 false。
"privileged": true|false
类型:字符串
要在容器内使用的用户。此参数将映射到 Docker Remote API 的创建容器部分中的 User 以及 docker run 的 --user 选项。
运行使用以下内容的任务时host网络模式,请勿使用 root 用户 (UID 0) 运行容器。作为安全最佳实践,请始终使用非根用户。
您可以使用以下格式指定 user。如果指定 UID 或 GID,您必须将其指定为一个正整数。
类型:字符串数组
有效值:”no-new-privileges“| “apparmor: Profile” | “标签:价值“|” 凭证规范:CredentialSpecFilePath“
用于为多个安全系统提供自定义配置的字符串列表。有关有效值的更多信息,请参阅 Docker 运行安全配置。此字段对使用 Fargate 启动类型的任务中的容器无效。
对于LinuxEC2 上的任务,此参数可用于引用自定义标签SELinux和AppArmor
多级安全系统。
对于 EC2 上的任何任务,此参数可用于引用证书规范文件,该文件为 Active Directory 身份验证配置容器。有关更多信息,请参阅 为 Windows 容器使用 gMSA 和 使用gMSAs为了Linux容器。
此参数将映射到 Docker Remote API 的创建容器部分中的 SecurityOpt 以及 docker 的 --security-opt 选项。
"dockerSecurityOptions": ["string", ...]
在容器实例上运行的 Amazon ECS 容器代理必须先注册到 ECS_SELINUX_CAPABLE=true 或 ECS_APPARMOR_CAPABLE=true 环境变量,然后该实例上的容器才能使用这些安全选项。有关更多信息,请参阅Amazon ECS 容器代理配置:
类型:对象数组
列表 ulimit 值为容器定义。此值将覆盖操作系统的默认资源配额设置。此参数将映射到 Docker Remote API 的创建容器部分中的 Ulimits 以及 docker run 的 --ulimit 选项。
托管在 Fargate 上的 Amazon ECS 任务使用操作系统设置的默认资源限制值,但以下情况除外nofile资源限制参数。nofile 资源限制对容器可以使用的打开文件数量设置限制。在 Fargate 上,默认设置nofile软限制是1024而硬限制是4096。您可以将两个限制的值设置为1048576。有关更多信息,请参阅。任务资源限制
此参数要求您容器实例上的 Docker Remote API 版本为 1.18 或更高。
"ulimits": [
"name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
"softLimit": integer,
"hardLimit": integer
类型:字符串
有效值:"core" | "cpu" | "data" | "fsize" |
"locks" | "memlock" | "msgqueue" | "nice" | "nofile" |
"nproc" | "rss" | "rtprio" | "rttime" | "sigpending" |
"stack"
必需:是,当使用 ulimits 时
ulimit 的 type
hardLimit
类型:整数
必需:是,当使用 ulimits 时
ulimit 类型的硬限制。
softLimit
类型:整数
必需:是,当使用 ulimits 时
ulimit 类型的软限制。
类型:字符串到字符串映射
要添加到容器的标签的键值映射。此参数将映射到 Docker Remote API 的创建容器部分中的 Labels 以及 docker run 的 --label 选项。
此参数要求您容器实例上的 Docker Remote API 版本为 1.18 或更高。
"dockerLabels": {"string": "string"
其他容器定义参数
以下容器定义参数可在 Amazon ECS 控制台中注册任务定义时使用,方法是使用 Configure via JSON(通过 JSON 配置)选项。有关更多信息,请参阅使用控制台创建任务定义:
Linux 参数
linuxParameters
类型:LinuxParameters 对象
Linux应用于容器的特定选项,例如KernelCapabilities。
"linuxParameters": {
"capabilities": {
"add": ["string", ...],
"drop": ["string", ...]
有效值:"ALL" | "AUDIT_CONTROL" |
"AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" |
"CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" |
"FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" |
"KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN"
| "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" |
"NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" |
"SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" |
"SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" |
"SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" |
"SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" |
"SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
"WAKE_ALARM"
的Linux容器可以添加到提供的默认配置中的功能Docker。此参数将映射到 Docker Remote API 的 Create a container(创建容器)部分中的 CapAdd 以及 docker run 的 --cap-add 选项。
在 Fargate 上启动的任务仅支持添加 SYS_PTRACE 内核功能。
类型:字符串数组
有效值:"ALL" | "AUDIT_CONTROL" |
"AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" |
"DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" |
"FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" |
"LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" |
"MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" |
"NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" |
"SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" |
"SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" |
"SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" |
"SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" |
"SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
"WAKE_ALARM"
的Linux容器可以从提供的默认配置中移除的功能Docker。此参数将映射到 Docker Remote API 的Create a container(创建容器)部分中的 CapDrop 以及 docker run 的 --cap-drop 选项。
devices
对容器公开的任何主机设备。此参数将映射到 Docker Remote API 的Create a container
(创建容器)部分中的 Devices 以及 docker run 的 --device 选项。
的devices当你使用 Fargate 启动类型或 Windows 容器时,不支持参数。
类型:设备对象数组
在容器内运行 init 进程,转发信号和获得进程。此参数会将 --init 选项映射到 docker run。
此参数要求您容器实例上的 Docker Remote API 版本为 1.25 或更高版本。
maxSwap
容器可以使用的交换内存总量(以 MiB 为单位)。该参数会转换为 docker run 的 --memory-swap 选项,其中,该值为容器内存和 maxSwap 值之和。
如果指定 maxSwap 值为 0,则该容器不使用交换。接受的值为 0 或任何正整数。如果省略 maxSwap 参数,该容器将为其运行所在的容器实例使用交换配置。必须为要使用的 swappiness 参数设置 maxSwap 值。
如果您使用的任务使用 Fargate 启动类型,则不支持 maxSwap 参数。
sharedMemorySize
/dev/shm 卷的大小值 (以 MiB 为单位)。此参数会将 --shm-size 选项映射到 docker run。
如果您使用的任务使用 Fargate 启动类型,则不支持 sharedMemorySize 参数。
类型:整数
swappiness
您可以使用此参数调整容器的内存 swappiness 行为。swappiness 的值 0 防止交换发生,除非有要求。swappiness 的值 100 导致页面被频繁交换。接受的值为 0 到 100 之间的整数。如果您未指定值,则将使用默认值 60。此外,如果未指定 maxSwap 的值,则此参数将被忽略。此参数会将 --memory-swappiness 选项映射到 docker run。
如果您使用的任务使用 Fargate 启动类型,则不支持 swappiness 参数。
如果你在亚马逊 Linux 2023 上使用任务swappiness不支持参数。
tmpfs
的容器路径、装载选项和最大大小(以 MiB 为单位)tmpfs坐骑。此参数会将 --tmpfs 选项映射到 docker run。
如果您使用的任务使用 Fargate 启动类型,则不支持 tmpfs 参数。
类型:Tmpfs 对象数组
有效值:"defaults" | "ro" | "rw" |
"suid" | "nosuid" | "dev" | "nodev" | "exec" |
"noexec" | "sync" | "async" | "dirsync" |
"remount" | "mand" | "nomand" | "atime" |
"noatime" | "diratime" | "nodiratime" | "bind" |
"rbind" | "unbindable" | "runbindable" | "private"
| "rprivate" | "shared" | "rshared" | "slave" |
"rslave" | "relatime" | "norelatime" |
"strictatime" | "nostrictatime" | "mode" | "uid" |
"gid" | "nr_inodes" | "nr_blocks" |
"mpol"
的最大大小(以 MiB 为单位)tmpfs音量。
类型:整数
类型:ContainerDependency 对象数组
针对容器启动和关闭定义的依赖项。一个容器可以包含多个依赖项。当针对容器启动定义依赖项时,对于容器关闭,将反转此项。有关示例,请参阅 示例:容器依赖项。
如果容器不满足依赖性约束或在满足约束之前超时,Amazon ECS 不会将依赖性容器推进到其下一个状态。
对于 Amazon EC2 实例上托管的 Amazon ECS 任务,实例至少需要版本 1.26.0 的容器代理以启用容器依赖关系。但是,我们建议使用最新的容器代理版本。有关检查您的代理版本并更新到最新版本的信息,请参阅更新 Amazon ECS 容器代理。如果您正在使用 Amazon ECS 优化型 Amazon Linux AMI,您的实例将需要不低于 1.26.0-1 版本的 ecs-init 程序包。如果您的容器实例是从版本 20190301 或更高版本启动的,那么这些实例将包含所需版本的容器代理和 ecs-init。有关更多信息,请参阅经 Amazon ECS 优化的 AMI:
对于托管在 Fargate 上的 Amazon ECS 任务,此参数要求任务或服务使用平台版本1.3.0或以后 (Linux) 或1.0.0(Windows)。
"dependsOn": [
"containerName": "string",
"condition": "string"
START - 此条件将立即模拟链接和卷的行为。该条件在允许其他容器启动之前验证依赖容器是否已启动。
COMPLETE - 此条件将验证从属容器是否在允许其他容器启动前运行完成(退出)。这对于运行脚本然后退出的非主要容器非常有用。无法在基本容器上设置此条件。
SUCCESS - 此条件与 COMPLETE 相同,但它还要求容器退出并具有 zero 状态。无法在基本容器上设置此条件。
HEALTHY - 此条件将验证从属容器是否在允许其他容器启动前传递其容器运行状况检查。这要求从属容器已在任务定义中配置运行状况检查。仅在任务启动时确认此条件。
示例值:120
在放弃解析容器的依赖项之前要等待的持续时间(以秒为单位)。
例如,在任务定义中指定两个容器,containerA 需要依赖 containerB 达到 COMPLETE、SUCCESS 或 HEALTHY 状态。如果为 containerB 指定了一个 startTimeout 值并且它未在该时间内达到所需状态,则 containerA 将不会启动。
如果容器不满足依赖性约束或在满足约束之前超时,Amazon ECS 不会将依赖性容器推进到其下一个状态。
对于托管在 Fargate 上的 Amazon ECS 任务,此参数要求任务或服务使用平台版本1.3.0或以后 (Linux)。
stopTimeout
类型:整数
示例值:120
容器由于未自行正常退出而被强制终止前要等待的持续时间(以秒为单位)。
对于使用 Fargate 启动类型的任务,任务或服务需要平台版本 1.3.0 或更高版本(Linux) 或 1.0.0 或更高版本(对于Windows)。最大的停止超时值为 120 秒。但是,如果未指定该参数,则使用默认值 30 秒。
对于使用 EC2 启动类型的任务,如果未指定 stopTimeout 参数,则使用为 Amazon ECS 容器代理配置变量 ECS_CONTAINER_STOP_TIMEOUT 设置的值。如果两者都没有stopTimeout参数或ECS_CONTAINER_STOP_TIMEOUT代理配置变量已设置,默认值为 30 秒Linux容器开启 30 秒Windows使用容器。容器实例需要至少 1.26.0 版的容器代理才能启用容器停止超时值。但是,我们建议使用最新的容器代理版本。有关如何检查您的代理版本并更新到最新版本的信息,请参阅更新 Amazon ECS 容器代理。如果您正在使用经 Amazon ECS 优化的 Amazon Linux AMI,您的实例将需要不低于 1.26.0-1 版本的 ecs-init 程序包。如果您的容器实例是从版本 20190301 或更高版本启动的,那么这些实例将包含所需版本的容器代理和 ecs-init。有关更多信息,请参阅经 Amazon ECS 优化的 AMI:
类型:SystemControl 对象
要在容器中设置的具有命名空间的内核参数的列表。此参数将映射到 Docker Remote API 的创建容器部分中的 Sysctls 以及 docker run 的 --sysctl 选项。例如,您可以配置net.ipv4.tcp_keepalive_time设置以保持更长的连接寿命。
我们不建议您指定与网络相关的内容systemControls单个任务中多个容器的参数,该任务还使用其中一个awsvpc要么host网络模式。这样做有以下缺点:
对于使用以下内容的任务awsvpc网络模式包括 Fargate(如果你设置的话)systemControls对于任何容器,它都适用于任务中的所有容器。如果您为单个任务中的多个容器设置了不同的 systemControls,最后启动的容器将确定哪个 systemControls 生效。
对于使用 host 网络模式的任务,不支持网络命名空间 systemControls。
如果您要设置 IPC 资源命名空间以用于任务中的容器,则以下条件将适用于您的系统控制。有关更多信息,请参阅IPC 模式:
对于使用 host IPC 模式的任务,不支持 IPC 命名空间 systemControls。
对于使用以下内容的任务taskIPC 模式,IPC 命名空间systemControls值适用于任务中的所有容器。
只有托管在上的任务才支持此参数AWS Fargate如果任务使用的是平台版本1.4.0或更高版本(Linux)。Fargate 上的 Windows 容器不支持此参数。
"systemControls": [
"namespace":"string",
"value":"string"
需要为其设置 value 的具有命名空间的内核参数。
有效的 IPC 命名空间值:"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni"
| "kernel.sem" | "kernel.shmall" | "kernel.shmmax" |
"kernel.shmmni" | "kernel.shm_rmid_forced",以及Sysctls开头是"fs.mqueue.*"
有效的网络命名空间值:Sysctls开头是"net.*"
Fargate 支持所有这些值。
value
类型:字符串
在 namespace 中指定的具有命名空间的内核参数的值。
类型:布尔值
当此参数为 true 时,您可以部署需要分配 stdin 或 tty 的容器化应用程序。此参数将映射到 Docker Remote API 的创建容器部分中的 OpenStdin 以及 docker run 的 --interactive 选项。
默认为 false。
类型:布尔值
当此参数为 true 时,则分配 TTY。此参数将映射到 Docker Remote API 的创建容器部分中的 Tty 以及 docker run 的 --tty 选项。
默认为 false。
Elastic Inference 加速器名称
自 2023 年 4 月 15 日起,AWS 不再允许新客户加入 Amazon Elastic Inference(EI),并将帮助现有客户将其工作负载迁移到价格更低廉且性能更出色的选项。2023 年 4 月 15 日之后,新客户将无法在亚马逊使用亚马逊 EI 加速器启动实例 SageMaker、亚马逊 ECS 或亚马逊 EC2。但是,在过去 30 天内至少使用过一次 Amazon EI 的客户将视为当前客户,可继续使用该服务。
您的任务定义的 Elastic Inference 加速器资源要求。有关更多信息,请参阅《Amazon Elastic Inference 开发人员指南》中的什么是 Elastic Inference?
任务定义中允许以下参数:
您在注册任务定义时,可以提供任务放置约束,自定义 Amazon ECS 如何放置任务。
如果您使用的是 Fargate 启动类型,则不支持任务放置约束。预设情况下,Fargate 任务分布在可用区中。
对于使用 EC2 启动类型的任务,则可以使用约束来根据可用区、实例类型或自定义属性来放置任务。有关更多信息,请参阅Amazon ECS 任务放置约束:
容器定义中允许以下参数:
App Mesh 代理的配置详细信息。
对于使用 EC2 启动类型的任务,容器实例需要至少 1.26.0 版的容器代理和至少 1.26.0-1 版的 ecs-init 程序包才能启用代理配置。如果您的容器实例是从经 Amazon ECS 优化的 AMI 版本 20190301 或更高版本启动的,则这些实例将包含所需版本的容器代理和 ecs-init。有关更多信息,请参阅经 Amazon ECS 优化的 AMI:
对于使用 Fargate 启动类型的任务,此功能需要任务或服务使用平台版本 1.3.0 或更高版本。
"proxyConfiguration": {
"type": "APPMESH",
"containerName": "string",
"properties": [
"name": "string",
"value": "string"
IgnoredUID -(必填)代理容器的用户 ID (UID),由容器定义中的 user 参数定义。此字段用于确保代理会忽略自己的流量。如果指定了 IgnoredGID,此字段可为空。
IgnoredGID -(必填)代理容器的组 ID (GID),由容器定义中的 user 参数定义。此字段用于确保代理会忽略自己的流量。如果指定了 IgnoredUID,此字段可为空。
AppPorts -(必填)应用程序使用的端口的列表。发送到这些端口的网络流量将转发到 ProxyIngressPort 和 ProxyEgressPort。
ProxyIngressPort -(必填)指定传入到 AppPorts 的流量将定向到的端口。
ProxyEgressPort -(必填)指定从 AppPorts 传出的流量将定向到的端口。
EgressIgnoredPorts –(必填)进入这些指定端口的出站流量将被忽略但不会重定向到 ProxyEgressPort。它可以是空列表。
EgressIgnoredIPs –(必填)进入这些指定 IP 地址的出站流量将被忽略但不会重定向到 ProxyEgressPort。它可以是空列表。
Docker 卷 - 在 Amazon EC2 容器实例上的 /var/lib/docker/volumes 下创建的 Docker 托管卷。Docker 卷驱动程序(也称为插件)用于将卷与外部存储系统(如 Amazon EBS)集成。可使用内置 local 卷驱动程序或第三方卷驱动程序。只有在 Amazon EC2 实例上运行任务时,才支持 Docker 卷。Windows 容器仅支持使用 local 驱动程序。要使用 Docker 卷,请在任务定义中指定 dockerVolumeConfiguration。有关更多信息,请参阅使用卷。
绑定挂载 - 主机上的文件或目录将挂载到容器中。在上运行任务时支持绑定挂载主机卷 AWS Fargate 实例或 Amazon EC2 实例。要使用绑定挂载主机卷,请在任务定义中指定 host 和可选的 sourcePath 值。有关详细信息,请参阅使用绑定挂载。
有关更多信息,请参阅在任务中使用数据卷:
容器定义中允许以下参数。
类型:字符串
卷的名称。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。此名称已在容器定义 mountPoints 对象 的 sourceVolume 参数中引用。
host 参数仅在使用 Amazon EC2 实例上托管的任务时才支持。
host 参数用于将绑定挂载的生命周期绑定到主机 Amazon EC2 实例(而不是任务)及其存储位置。如果 host 参数为空,则 Docker 进程守护程序将为您的数据卷分配一个主机路径,但不保证数据在与其关联的容器停止运行后将保留。
Windows 容器可在 $env:ProgramData 所在的驱动器上挂载整个目录。
sourcePath
类型:字符串
在使用 host 参数时,指定 sourcePath 可声明提供给容器的主机 Amazon EC2 容器实例上的路径。如果此参数为空,则 Docker 进程守护程序将为您分配一个主机路径。如果 host 参数包含 sourcePath 文件位置,则数据卷将在主机 Amazon EC2 容器实例上的指定位置保留,除非您手动将其删除。如果主机 Amazon EC2 容器实例上不存在 sourcePath 值,则 Docker 进程守护程序将创建该值。如果该位置不存在,则将导出源路径文件夹的内容。
有效值:task | shared
Docker 卷的范围,可确定其生命周期。当任务开始时,将自动预配置范围限定为 task 的 Docker 卷;而当任务停止时销毁此卷。任务停止后,范围限定为 shared 的 Docker 卷将持续存在。
autoprovision
类型:布尔值
默认值:false
如果此值为 true,则将创建 Docker 卷(如果此卷不存在)。仅在 scope 为 shared 时使用此字段。如果 scope 为 task,则必须省略此参数或将其设置为 false。
driver
类型:字符串
要使用的 Docker 卷驱动程序。由于驱动程序值用于任务放置,因此,它必须与 Docker 提供的驱动程序名称匹配。如果已使用 Docker 插件 CLI 创建驱动程序,则使用 docker plugin ls 可从容器实例中检索驱动程序名称。如果已使用其他方法创建驱动程序,则使用 Docker 插件发现功能可检索驱动程序名称。有关更多信息,请参阅 Docker 插件发现。此参数映射到 Docker Remote API 的创建卷部分中的 Driver 以及 docker volume create 的 --driver 选项。
driverOpts
类型:字符串
要传递的 Docker 驱动程序特定的选项的映射。此参数映射到 Docker Remote API 的创建卷部分中的 DriverOpts 以及 docker volume create 的 --opt 选项。
labels
类型:字符串
要添加到 Docker 卷的自定义元数据。此参数映射到 Docker Remote API 的创建卷部分中的 Labels 以及 docker volume create 的 --label 选项。
Amazon EFS 文件系统中要作为主机内的根目录挂载的目录。如果忽略此参数,将使用 Amazon EFS 卷的根目录。指定 / 与忽略此参数效果相同。
如果在 authorizationConfig 中指定了 EFS 访问点,则必须省略根目录值,或者将其设置为 /,以便在 EFS 访问点上强制执行设置的路径。
transitEncryption
类型:字符串
有效值:ENABLED | DISABLED
是否对 Amazon ECS 主机和 Amazon EFS 服务器之间传输的 Amazon EFS 数据启用加密。如果使用 Amazon EFS IAM 授权,则必须启用传输加密。如果忽略此参数,将使用默认值 DISABLED。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的加密传输中的数据。
transitEncryptionPort
类型:整数
在 Amazon ECS 主机和 Amazon EFS 服务器之间发送加密数据时要使用的端口。如果未指定传输加密端口,将使用 Amazon EFS 挂载帮助程序使用的端口选择策略。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 EFS 挂载帮助程序。
authorizationConfig
类型:EFSAuthorizationConfiguration对象
Amazon EFS 文件系统的授权配置详细信息。
类型:字符串
要使用的访问点 ID。如果指定了访问点,则必须省略在 efsVolumeConfiguration 中指定的根目录值,或者将其设置为 /,以便在 EFS 访问点上强制执行设置的路径。如果使用访问点,则必须在 EFSVolumeConfiguration 中启用传输加密。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的使用 Amazon EFS 访问点。
类型:字符串
有效值:ENABLED | DISABLED
挂载 Amazon EFS 文件系统时是否使用在任务定义中定义的 Amazon ECS 任务 IAM 角色。如果启用,则必须在 EFSVolumeConfiguration 中启用传输加密。如果忽略此参数,将使用默认值 DISABLED。有关更多信息,请参阅适用于任务的 IAM 角色。
在注册任务定义时,可以选择指定应用于任务定义的元数据标签。标签可帮助您对任务定义进行分类和组织。每个标签都由一个键和一个可选值组成。您可以同时定义它们。有关更多信息,请参阅为您的 Amazon ECS 资源添加标签:
请勿在标签中添加个人身份信息或其他机密或敏感信息。标签可供许多 AWS 服务访问,包括计费。标签不适合用于私有或敏感数据。
标签对象中允许以下参数。
其他任务定义参数
以下任务定义参数可在 Amazon ECS 控制台中注册任务定义时使用,方法是使用 Configure via JSON(通过 JSON 配置)选项。有关更多信息,请参阅使用控制台创建任务定义:
ephemeralStorage
类型:EphemeralStorage 对象
要为任务分配的临时存储量(以 GB 为单位)。此参数用于扩展可用的临时存储总量,超出原定设置数量,可用于在 AWS Fargate 上托管的任务。有关更多信息,请参阅绑定挂载:
只有托管在上的任务才支持此参数AWS Fargate使用平台版本1.4.0或更高版本 (Linux) 或1.0.0或更高版本(Windows)。
类型:字符串
用于任务中的容器的 IPC 资源命名空间。有效值为 host、task 或 none。如果指定了 host,则在同一容器实例上指定了 host IPC 模式的任务中的所有容器将与主机 Amazon EC2 实例共享相同的 IPC 资源。如果指定了 task,则指定任务中的所有容器将共享相同的 IPC 资源。如果指定了 none,则任务的容器中的 IPC 资源是私有的,不与任务中或容器实例上的其他容器共享。如果未指定任何值,则 ipcMode 的值设置为 shareable。有关更多信息,请参阅 Docker 运行参考中的 IPC 设置。
如果使用了 host IPC 模式,发生非预期的 IPC 命名空间公开的风险会提高。有关更多信息,请参阅 Docker 安全性。
如果您设置了为任务中的容器使用 systemControls 的带有命名空间的内核参数,则以下内容适用于您的 IPC 资源命名空间。有关更多信息,请参阅系统控制:
有效值:host | task
用于任务中的容器的过程命名空间。有效值为 host 或 task。在 Fargate for Linux 容器上,唯一有效的值是task。例如,监控边车可能需要pidMode访问有关在同一任务中运行的其他容器的信息。
如果指定了 host,则在同一容器实例上指定了 host PID 模式的任务中的所有容器将与主机 Amazon EC2 实例共享相同的进程命名空间。
如果指定了 task,则指定任务中的所有容器将共享相同的过程命名空间。
如果未指定任何值,则默认为每个容器的私有命名空间。有关更多信息,请参阅 Docker 运行参考中的 PID 设置。
如果使用了 host PID 模式,发生非预期的过程命名空间公开的风险会提高。有关更多信息,请参阅 Docker 安全性。