使用控制台创建 Amazon ECS 任务定义 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用控制台创建 Amazon ECS 任务定义

您可以通过使用控制台或编辑 JSON 文件来创建任务定义。

JSON 验证

Amazon ECS 控制台 JSON 编辑器会在 JSON 文件中验证以下各项:

  • 该文件是有效的 JSON 文件。

  • 该文件不包含任何无关的键。

  • 该文件包含 familyName 参数。

  • containerDefinitions 下方至少有一个条目。

Amazon CloudFormation 堆栈

以下行为适用于 2023 年 1 月 12 日之前在新的 Amazon ECS 控制台中创建的任务定义。

当您创建任务定义时,Amazon ECS 控制台会自动创建一个名称以 ECS-Console-V2-TaskDefinition- 开头的 CloudFormation 堆栈。如果您使用 Amazon CLI 或 Amazon SDK 取消注册任务定义,则必须手动删除任务定义堆栈。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的删除堆栈

2023 年 1 月 12 日之后创建的任务定义不会为其自动创建 CloudFormation 堆栈。

过程

Amazon ECS console
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择 Task definitions(任务定义)。

  3. 创建新任务定义菜单上,选择创建新任务定义

  4. 对于Task definition family(任务定义系列)中,为任务定义指定唯一名称。

  5. 对于启动类型,选择应用程序环境。控制台默认值为 Amazon Fargate(无服务器)。Amazon ECS 使用此值执行验证,以确保任务定义参数对基础设施类型有效。

  6. 对于操作系统/架构,为任务选择操作系统和 CPU 架构。

    要在 64 位 ARM 架构上运行任务,请选择 Linux/ARM64。有关更多信息,请参阅 运行时平台

    要在 Windows 容器上运行您的 Amazon Fargate 任务,请选择受支持的 Windows 操作系统。有关更多信息,请参阅 操作系统和架构

  7. 对于 Task size(任务大小),选择要为任务预留的 CPU 和内存值。CPU 值指定为 vCPU,内存指定为 GB。

    对于 Fargate 上托管的任务,下表显示了有效的 CPU 和内存组合。

    CPU 值 内存值 Amazon Fargate 支持的操作系统
    256 (.25 vCPU) 512MiB、1GB、2GB Linux
    512 (.5 vCPU) 1GB、2GB、3GB、4GB Linux
    1024 (1 vCPU) 2GB、3GB、4GB、5GB、6GB、7GB、8GB Linux、Windows
    2048 (2 vCPU) 4GB 到 16GB 之间 (以 1GB 为增量) Linux、Windows
    4096 (4 vCPU) 8GB 到 30GB 之间 (以 1GB 为增量) Linux、Windows
    8192 (8 vCPU)
    注意

    此选项需要 Linux 平台 1.4.0 或更高版本。

    16 GB 到 60 GB 之间(以 4 GB 为增量) Linux
    16384 (16vCPU)
    注意

    此选项需要 Linux 平台 1.4.0 或更高版本。

    32 GB 到 120 GB 之间(以 8 GB 为增量) Linux

    对于 Amazon EC2 上托管的任务,受支持的任务 CPU 值介于 128 个 CPU 单元(0.125 个 vCPU)和 10240 个 CPU 单元(10 个 vCPU)之间。要以 GB 为单位指定内存值,请在值的后面输入 GB。例如,要将内存值设置为 3GB,请输入 3GB

    注意

    Windows 容器将忽略任务级 CPU 和内存参数。

  8. 对于 Network mode(网络模式),选择要使用的网络模式。默认值为 awsvpc 模式。有关更多信息,请参阅 Amazon ECS 任务联网

    如果您为主机端口端口映射下选择桥接,请输入要为容器预留的容器实例上的端口号。

  9. (可选)展开任务角色部分以配置任务的 Amazon Identity and Access Management(IAM)角色:

    1. 对于 Task role(任务角色),选择要分配到任务的 IAM 角色。任务 IAM 角色为要调用 Amazon API 操作的任务中的容器提供权限。

    2. 对于任务执行角色,请选择角色。

      有关何时使用任务执行角色的信息,请参阅 Amazon ECS 任务执行 IAM 角色。如果您不需要该角色,请选择

  10. 对于在您的任务定义中定义的每个容器,请完成以下步骤。

    1. 对于 Name(名称),输入容器的名称。

    2. 对于 Image URI(映像 URI),输入用于启动容器的映像。Amazon ECR 公开映像浏览馆注册表中的映像只能使用 Amazon ECR 公开注册表名称来指定。例如,如果 public.ecr.aws/ecs/amazon-ecs-agent:latest 已指定,则使用 Amazon ECR 公开映像浏览馆上托管的 Amazon Linux 容器。对于所有其他存储库,请使用 repository-url/image:tagrepository-url/image@digest 格式指定存储库。

    3. 如果您的映像位于 Amazon ECR 之外的私有注册表中,请在私有注册表下开启私有注册表身份验证。然后,在 Secrets Manager ARN 或名称中,输入密钥的 Amazon 资源名称(ARN)。

    4. 对于必需容器,如果您的任务定义中定义了两个或更多容器,则可以指定是否应将该容器视为必需容器。当一个容器被标记为必需时,则在该容器停止时任务将停止。每个任务定义都必须至少包含一个关键容器。

    5. 端口映射可让容器访问主机容器上的端口以发送或接收流量。在 Port mappings(端口映射)下,请执行以下操作之一:

      • 当您使用 awsvpc 网络模式时,对于 Container port(容器端口)和 Protocol(协议),选择要用于容器的端口映射。

      • 当您使用 bridge 网络模式时,对于 Container port(容器端口)和 Protocol(协议),选择要用于容器的端口映射。

      选择 Add more port mappings(添加更多端口映射)以指定其他容器端口映射。

    6. 要为容器提供对其根文件系统的只读访问权,对于只读根文件系统,选择只读

    7. (可选)要在资源分配限制下定义与任务级值不同的容器级 CPU、GPU 和内存限制,请执行以下操作:

      • 对于 CPU,输入 Amazon ECS 容器代理为容器预留的 CPU 单元数。

      • 对于 GPU,输入容器实例的 GPU 单元数。

        支持 GPU 的 Amazon EC2 实例为每个 GPU 配备 1 个 GPU 单元。有关更多信息,请参阅 适用于 GPU 工作负载的 Amazon ECS 任务定义

      • 对于内存硬限制,输入要提供给容器的内存量(以 GB 为单位)。如果容器试图超出硬限制,则容器将停止。

      • Docker 20.10.0 或更高版本进程守护程序将为容器预留最少 6 兆字节(MiB)的内存,因此,请不要为容器指定 6MiB 以下的内存。

        Docker 19.03.13-ce 或较早版本进程守护程序将为容器预留最少 4MiB 的内存,因此,请不要为容器指定 4MiB 以下的内存。

      • 对于内存软限制,输入要为容器预留的内存软限制(以 GB 为单位)。

        当系统内存处于争用状态时,Docker 会尝试将容器内存保持在此软限制范围内。如果您未指定任务级内存,则必须为内存硬限制内存软限制中的一个或两个指定非零整数。如果同时指定两者,则内存硬限制必须大于内存软限制

        Windows 容器不支持此功能。

    8. (可选)展开环境变量部分来指定要注入到容器中的环境变量。您可以使用键值对单独指定环境变量,也可以通过指定 Amazon S3 存储桶中托管的环境变量文件来批量指定环境变量。有关如何设置环境变量文件的格式的信息,请参阅将单个环境变量传递给 Amazon ECS 容器

      当您为密钥存储指定环境变量时,请在密钥中输入密钥名称。然后,在 ValueFrom 中,输入 Systems Manager Parameter Store 密钥或 Secrets Manager 密钥的完整 ARN

    9. (可选)选择 Use log collection(使用日志收集)选项来指定日志配置。对于每个可用的日志驱动程序,都有日志驱动程序选项要指定。默认选项将容器日志发送到 Amazon CloudWatch Logs。其他日志驱动程序选项都使用 Amazon FireLens 进行配置。有关更多信息,请参阅 将 Amazon ECS 日志发送到 Amazon 服务或 Amazon Partner

      下面更详细地介绍了每个容器日志目标。

      • Amazon CloudWatch – 将任务配置为将容器日志发送到 CloudWatch Logs。提供了默认的日志驱动程序选项,用于代表您创建 CloudWatch 日志组。要指定其他日志组名称,请更改驱动程序选项值。

      • 将日志导出到 Splunk – 将任务配置为将容器日志发送到将日志发送到远程服务的 Splunk 驱动程序。您必须输入 Splunk Web 服务的 URL。Splunk 令牌指定为密钥选项,因为它可能被视为敏感数据。

      • 将日志导出到 Amazon Data Firehose – 将任务配置为将容器日志发送到 Firehose。提供了默认的日志驱动程序选项,该选项将日志发送到 Firehose 传输流。要指定其他传输流名称,请更改驱动程序选项值。

      • 将日志导出到 Amazon Kinesis Data Streams – 将任务配置为将容器日志发送到 Kinesis Data Streams。提供了默认的日志驱动程序选项,该选项将日志发送到 Kinesis Data Streams 流。要指定其他传输流名称,请更改驱动程序选项值。

      • 将日志导出到 Amazon OpenSearch Service – 将任务配置为将容器日志发送到 OpenSearch Service 域。必须提供日志驱动程序选项。

      • 将日志导出到 Amazon S3 – 将任务配置为将容器日志发送到 Amazon S3 存储桶。提供了默认的日志驱动程序选项,但您必须指定有效的 Amazon S3 存储桶名称。

    10. (可选)配置其他容器参数。

      要配置此选项 请执行该操作

      重启策略

      这些选项定义了在容器退出时重启容器的重启策略。

      展开重启策略,然后配置以下项:
      • 要为容器启用重启策略,请打开启用重启策略

      • 对于忽略的退出代码,请指定以逗号分隔的整数容器退出代码列表。如果容器使用任何指定的退出代码退出,Amazon ECS 将不会尝试重启该容器。如果未指定任何选项,Amazon ECS 将不会忽略任何退出代码。

      • 对于尝试重置周期,指定一个以秒为单位的整数时间段,容器的运行时间必须达到该时间段后才能在退出时尝试重启。Amazon ECS 在每个尝试重置周期(秒)只能尝试重启容器一次。如果未指定任何选项,则容器必须运行 300 秒后才能尝试重启。

      HealthCheck

      这些命令用于确定容器是否运行正常。有关更多信息,请参阅 使用容器运行状况检查确定 Amazon ECS 任务运行状况

      展开 HealthCheck,然后配置以下项目:
      • 对于 Command(命令),输入逗号分隔的命令列表。您可以设置命令以 CMD 开头,以直接运行命令参数,或者以 CMD-SHELL 开头,以使用容器的默认 Shell 来运行命令。如果两者都未指定,将使用 CMD

      • 对于 Interval(间隔),输入每两次运行状况检查之间的秒数。有效值为 5 到 30。

      • 对于 Timeout(超时),输入等待运行状况检查成功执行的时间长度(以秒为单位),超过该时间则视为失败。有效值为 2 到 60。

      • 对于 Start period(启动期间),输入运行状况检查命令运行之前,等待容器引导的时间长度(以秒为单位)。有效值为 0 到 300。

      • 对于 Retries(重试次数),输入出现故障时重试运行状况检查命令的次数。有效值为 1 到 10。

      启动依赖项顺序

      此选项定义容器启动和关闭的依赖项。一个容器可以包含多个依赖项。

      展开启动依赖项排序,然后配置以下内容:
      1. 选择添加容器依赖项

      2. 对于容器,选择容器。

      3. 条件中,选择启动依赖项条件。

      要添加其他依赖项,请选择添加容器依赖项
      容器超时

      这些选项决定何时启动和停止容器。

      展开容器超时,然后配置以下内容:
      • 要配置在放弃解析容器的依赖项之前等待的时间,请在开始超时时间中输入秒数。

      • 要配置在容器自身没有正常退出的情况下停止之前等待的时间,请在停止超时时间中输入秒数。

      容器网络设置

      这些选项决定是否在容器内使用联网。

      展开容器网络设置,然后配置以下内容:
      • 要禁用容器联网,请选择关闭联网

      • 要配置提供给容器的 DNS 服务器 IP 地址,请在 DNS 服务器中以单独的行输入每台服务器的 IP 地址。

      • 要将 DNS 域配置为搜索提供给容器的非完全限定主机名,请在 DNS 搜索域中以单独的行输入每个域。

        模式是 ^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$

      • 要配置容器主机名,请在主机名中输入容器 goat 名称。

      • 要添加附加到容器上的 /etc/hosts 文件的主机名和 IP 地址映射,请选择添加额外主机,然后在主机名IP 地址中输入主机名和 IP 地址。

      Docker 配置

      它们会覆盖 Dockerfile 中的值。

      展开 Docker 配置,然后配置以下项目:

      • 对于命令,输入容器的可执行命令。

        此参数将映射到 Docker Remote API 的创建容器部分中的 Cmd 以及 docker runCOMMAND 选项。此参数会覆盖 Dockerfile 中的 CMD 指令。

      • 对于入口点,输入传递给容器的 Docker ENTRYPOINT。

        此参数将映射到 Docker Remote API 的创建容器部分中的 Entrypoint 以及 docker run--entrypoint 选项。此参数会覆盖 Dockerfile 中的 ENTRYPOINT 指令。

      • 对于工作目录,输入容器将运行所提供的任何入口点和命令指令的目录。

        此参数将映射到 Docker Remote API 的创建容器部分中的 WorkingDir 以及 docker run--workdir 选项。此参数会覆盖 Dockerfile 中的 WORKDIR 指令。

      资源限制 (Ulimits)

      这些将覆盖操作系统的默认资源配额设置。

      此参数将映射到 Docker Remote API创建容器部分中的Ulimits以及docker run--ulimit选项。

      展开资源限制(ulimits),然后选择添加 ulimit。对于限制名称,选择限制。然后,在软限制硬限制中输入值。

      要添加其他 ulimits,请选择添加 ulimit

      Docker 标签

      此选项将元数据添加到您的容器中。

      此参数将映射到 Docker Remote API创建容器部分中的Labels以及docker run--label选项。

      展开 Docker 标签,选择添加键值对,然后输入

      要添加其他 Docker 标签,请选择添加键值对

    11. (可选)选择 Add more containers(添加更多容器)将其他容器添加到任务定义。

  11. (可选)存储部分用于扩展 Fargate 上托管的任务的短暂存储量。您还可以使用此部分为任务添加数据卷配置。

    1. 要将可用的短暂存储扩展到超出您的 Fargate 任务的默认值 20 gibibytes (GiB),请在 Amount(量)中输入一个最高为 200 GiB 的值。

  12. (可选)要为任务定义添加数据卷配置,选择添加卷,然后按照以下步骤操作。

    1. 对于 Volume name(卷名称),输入数据卷的名称。创建容器挂载点时,将使用数据卷名称。

    2. 对于卷配置,请选择是要在创建任务定义时还是在部署期间配置卷。

      注意

      可以在创建任务定义时配置的卷包括绑定挂载、Docker、Amazon EFS 和 Amazon FSx for Windows File Server。运行任务或创建或更新服务时可以在部署时配置的卷包括 Amazon EBS。

    3. 对于卷类型,选择与所选配置类型兼容的卷类型,然后再配置该卷类型。

    卷类型 步骤

    绑定挂载

    1. 选择 Add mount point(添加挂载点),然后配置以下内容:

      • 对于 Container(容器),选择挂载点的容器。

      • 对于 Source volume(源卷),选择要挂载到容器的数据卷。

      • 对于 Container path(容器路径),输入挂载卷的容器上的路径。

      • 对于只读,选择容器是否具有对卷的只读访问权。

    2. 要添加其他挂载点,请选择 Add mount point(添加挂载点)。

    EFS
    1. 对于 File system ID(文件系统 ID),选择 Amazon EFS 文件系统 ID。

    2. (可选)对于 Root directory(根目录),输入 Amazon EFS 文件系统中要作为主机内的根目录挂载的目录。如果忽略此参数,将使用 Amazon EFS 卷的根目录。

      如果您计划使用 EFS 接入点,请将此字段留为空白。

    3. (可选)对于 Access point(接入点),选择要使用的接入点 ID。

    4. (可选)要加密 Amazon EFS 文件系统和 Amazon ECS 主机之间的数据或在挂载卷时使用任务执行角色,请选择 Advanced configurations(高级配置),然后配置以下内容:

      • 要加密 Amazon EFS 文件系统和 Amazon ECS 主机之间的数据,请选择 Transit encryption(传输加密),然后选择 Port(端口),输入在 Amazon ECS 主机和 Amazon EFS 服务器之间发送加密数据时使用的端口。如果未指定传输加密端口,将使用 Amazon EFS 挂载帮助程序使用的端口选择策略。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 EFS 挂载帮助程序

      • 要在挂载 Amazon EFS 文件系统时使用任务定义中定义的 Amazon ECS 任务 IAM 角色,请选择 IAM authorization(IAM 授权)。

    5. 选择 Add mount point(添加挂载点),然后配置以下内容:

      • 对于 Container(容器),选择挂载点的容器。

      • 对于 Source volume(源卷),选择要挂载到容器的数据卷。

      • 对于 Container path(容器路径),输入挂载卷的容器上的路径。

      • 对于只读,选择容器是否具有对卷的只读访问权。

    6. 要添加其他挂载点,请选择 Add mount point(添加挂载点)。

    Docker

    1. 对于驱动程序,输入 Docker 卷配置。Windows 容器仅支持使用本地驱动程序。要使用绑定挂载,请指定主机。

    2. 对于 Scope(范围),选择卷生命周期。

      • 要在任务开始和停止时保持生命周期,请选择 Task(任务)。

      • 要在任务停止后保持卷,请选择 Shared(共享)。

    3. 选择 Add mount point(添加挂载点),然后配置以下内容:

      • 对于 Container(容器),选择挂载点的容器。

      • 对于 Source volume(源卷),选择要挂载到容器的数据卷。

      • 对于 Container path(容器路径),输入挂载卷的容器上的路径。

      • 对于只读,选择容器是否具有对卷的只读访问权。

    4. 要添加其他挂载点,请选择 Add mount point(添加挂载点)。

    FSx for Windows File Server
    1. 对于文件系统 ID,选择 FSx for Windows File Server 文件系统 ID。

    2. 对于根目录,输入 FSx for Windows File Server 文件系统中要作为主机内的根目录挂载的目录。

    3. 对于凭证参数,选择凭证的存储方式。

      • 要使用 Amazon Secrets Manager,请输入 Secrets Manager 密钥的 Amazon 资源名称(ARN)。

      • 要使用 Amazon Systems Manager,请输入 Systems Manager 参数的 Amazon 资源名称(ARN)。

    4. 对于,请输入由 Amazon Directory Service for Microsoft Active Directory()Amazon Managed Microsoft AD)目录托管的完全限定域名或自托管 EC2 Active Directory。

    5. 选择 Add mount point(添加挂载点),然后配置以下内容:

      • 对于 Container(容器),选择挂载点的容器。

      • 对于 Source volume(源卷),选择要挂载到容器的数据卷。

      • 对于 Container path(容器路径),输入挂载卷的容器上的路径。

      • 对于只读,选择容器是否具有对卷的只读访问权。

    6. 要添加其他挂载点,请选择 Add mount point(添加挂载点)。

    Amazon EBS

    1. 选择 Add mount point(添加挂载点),然后配置以下内容:

      • 对于 Container(容器),选择挂载点的容器。

      • 对于 Source volume(源卷),选择要挂载到容器的数据卷。

      • 对于 Container path(容器路径),输入挂载卷的容器上的路径。

      • 对于只读,选择容器是否具有对卷的只读访问权。

    2. 要添加其他挂载点,请选择 Add mount point(添加挂载点)。

  13. 要从另一个容器中添加卷,请选择从中添加卷,然后配置以下内容:

    • 对于容器,选择容器。

    • 对于来源,选择包含要装载的卷的容器。

    • 对于只读,选择容器是否具有对卷的只读访问权。

  14. (可选)要使用 Amazon Distro for OpenTelemetry 集成配置应用程序跟踪和指标收集设置,请展开监控,然后选择使用指标收集来收集任务的指标并将其发送到或 Amazon CloudWatch 或 Amazon Managed Service for Prometheus。选择此选项后,Amazon ECS 会创建 Amazon Distro for OpenTelemetry 容器附加,该附加已预先配置为发送应用程序指标。有关更多信息,请参阅 使用应用程序指标关联 Amazon ECS 应用程序性能

    1. 选中 Amazon CloudWatch 后,您的自定义应用程序指标将作为自定义指标路由到 CloudWatch。有关更多信息,请参阅 将应用程序指标导出到 Amazon CloudWatch

      重要

      将应用程序指标导出到 Amazon CloudWatch 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅 Amazon Distro for OpenTelemetry 与 Amazon CloudWatch 集成所需的 IAM 权限

    2. 当您选择 Amazon Managed Service for Prometheus (Prometheus libraries instrumentation)(Amazon Managed Service for Prometheus(Prometheus 库分析))时,您的任务级 CPU、内存、网络和存储指标以及自定义应用程序指标都将路由到 Amazon Managed Service for Prometheus。对于工作空间远程写入端点,为 Prometheus 工作空间输入远程写入端点 URL。对于抓取目标,输入 Amazon Distro for OpenTelemetry 收集器可用来抓取指标数据的主机和端口。有关更多信息,请参阅 将应用程序指标导出到 Amazon Managed Service for Prometheus

      重要

      将应用程序指标导出到 Amazon Managed Service for Prometheus 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅 Amazon Distro for OpenTelemetry 与 Amazon Managed Service for Prometheus 集成所需的 IAM 权限

    3. 当您选择 Amazon Managed Service for Prometheus(OpenTelemetry 分析)时,您的任务级 CPU、内存、网络和存储指标以及自定义应用程序指标都将路由到 Amazon Managed Service for Prometheus。对于工作空间远程写入端点,为 Prometheus 工作空间输入远程写入端点 URL。有关更多信息,请参阅 将应用程序指标导出到 Amazon Managed Service for Prometheus

      重要

      将应用程序指标导出到 Amazon Managed Service for Prometheus 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅 Amazon Distro for OpenTelemetry 与 Amazon Managed Service for Prometheus 集成所需的 IAM 权限

  15. (可选)展开 Tags(标签)部分将标签(作为键值对)添加到任务定义中。

    • [添加标签] 选择 Add tag(添加标签),然后执行以下操作:

      • 对于 Key(键),输入键名称。

      • 对于,输入键值。

    • [删除标签] 在标签旁,选择 Remove tag (删除标签)

  16. 选择创建以注册任务定义。

Amazon ECS console JSON editor
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择 Task definitions(任务定义)。

  3. 创建新的任务定义菜单上,选择使用 JSON 创建新的任务定义

  4. 在 JSON 编辑器框中,编辑您的 JSON 文件,

    JSON 必须通过 JSON 验证 中指定的验证检查。

  5. 选择创建