使用控制台创建任务定义 - 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 控制台会自动创建一个 CloudFormation名称以 “ecs-console-v2-” 开头的堆栈TaskDefinition-”。如果您使用 Amazon CLI 或 SDK 取消注册任务定义,则必须手动删除任务定义堆栈。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的删除堆栈

2023 年 1 月 12 日之后创建的任务定义将没有 CloudFormation 堆栈已自动创建。

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

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

  3. 选择 Create new task definition(创建新的任务定义)、Create new task definition(创建新的任务定义)。

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

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

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

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

    要运行你的Amazon FargateWindows 容器上的任务,请选择支持的 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)之间。

    注意

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

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

    如果你选择桥梁,下面端口映射,对于主机端口,在容器实例上输入要为您的容器保留的端口号。

  9. (可选)展开任务角色部分用于配置 IAM 角色:

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

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

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

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

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

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

    3. 如果您的图片位于 Amazon ECR 之外的私有注册表中,请在私人注册表,开启私有注册表身份验证。然后,在密钥管理器 ARN 或姓名,输入密钥的亚马逊资源名称 (ARN)。

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

    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 单元。有关更多信息,请参阅在 Amazon ECS 上使用 GPU

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

      • Docker 20.10.0 或更高版本守护进程将为容器预留最少 6MiB 的内存,因此,您不应为容器指定 6MiB 以下的内存。

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

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

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

        Windows 容器不支持此功能。

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

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

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

      • 亚马逊 CloudWatch— 将任务配置为向其发送容器日志 CloudWatch 日志。提供了默认的日志驱动程序选项,这会创建 CloudWatch 代表您登录组。要指定其他日志组名称,请更改驱动程序选项值。

      • 将日志导出到 Splunk— 将任务配置为将容器日志发送到将日志发送到远程服务的 splunk 驱动程序。您需要输入 Splunk 网络服务的 URL,并且 Splunk 令牌被指定为秘密选项,因为它可以被视为敏感数据。

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

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

      • 将日志导出到亚马逊 OpenSearch 服务— 将任务配置为将容器日志发送到 OpenSearch 服务域。必须提供日志驱动程序选项。有关更多信息,请参阅将日志转发到亚马逊 OpenSearch 服务域

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

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

      配置此选项 请执行该操作

      健康检查

      这些命令用于确定容器是否运行正常

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

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

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

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

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

      容器超时

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

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

      • 配置容器无法自行正常退出时在停止之前等待的时间,对于停止时间,输入秒数。

      容器网络设置

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

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

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

      • 配置要搜索的 DNS 域non-fully-qualified 呈现给容器的主机名,在DNS 搜索域名,在单独的行中输入每个域。

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

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

      • 添加附加到的主机名和 IP 地址映射/etc/hosts容器上的文件,选择添加额外的主机,然后对于主机名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 选项。

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

      要添加其他上限,请选择添加 ulimit

      Docker 标签

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

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

      展开Docker 标签,选择添加密钥值对,然后输入钥匙价值

      要添加其他上限,请选择添加密钥值对

      容器启动顺序

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

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

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

      3. 对于状况,选择启动依赖条件。

      要添加其他依赖项,请选择添加容器依赖关系
    11. (可选)选择 Add more containers(添加更多容器)将其他容器添加到任务定义。选择下一步在你定义了所有容器之后。

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

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

  12. (可选)要为任务定义添加数据量配置,请选择添加音量,然后配置卷类型。

    卷类型 步骤

    绑定挂载

    1. 对于 Volume type(卷类型),选择 Bind mount(绑定挂载)。

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

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

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

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

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

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

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

    EFS
    1. 对于 Volume type(卷类型),选择 EFS

    2. 对于 Volume name(卷名称),输入数据卷的名称。

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

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

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

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

    6. (可选)要加密 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 授权)。

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

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

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

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

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

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

    Docker

    1. 对于 Volume Type(卷类型),选择 Docker volume(Docker 卷)。

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

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

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

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

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

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

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

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

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

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

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

    FSx for Windows File Server
    1. 对于卷类型,选择 FSx for Windows File Server

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 对于容器,选择容器。

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

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

  14. (可选)使用配置应用程序跟踪和指标收集设置Amazon发行版适用于 OpenTelemetry 整合,扩展监控,然后选择使用指标收集收集任务指标并将其发送给任一亚马逊 CloudWatch 或适用于 Prometheus 的亚马逊托管服务。选择此选项后,亚马逊 ECS 将创建一个Amazon发行版适用于 OpenTelemetry 容器 sidecar,它已预先配置为发送应用程序指标。有关更多信息,请参阅收集应用程序指标

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

      重要

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

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

      重要

      将应用程序指标导出到 Amazon Managed Service for Prometheus 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅所需的 IAM 权限Amazon发行版适用于 OpenTelemetry 与亚马逊 Prometheus 托管服务集成

    3. 当你选择时适用于普罗米修斯的亚马逊托管服务 (OpenTelemetry仪器),您的任务级别 CPU、内存、网络和存储指标以及您的自定义应用程序指标将路由到适用于 Prometheus 的亚马逊托管服务。对于 Workspace remote write endpoint(工作空间远程写入端点),为 Prometheus 工作空间输入远程写入端点 URL。有关更多信息,请参阅将应用程序指标导出到 Amazon Managed Service for Prometheus

      重要

      将应用程序指标导出到 Amazon Managed Service for Prometheus 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅所需的 IAM 权限Amazon发行版适用于 OpenTelemetry 与亚马逊 Prometheus 托管服务集成

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

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

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

      • 对于 Value(值),输入键值。

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

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

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

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

  3. 选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。

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

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

  5. 选择创建