使用控制台创建任务定义 - 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 控制台会自动创建一个名称以开头的 CloudFormation堆栈ECS-Console-V2-TaskDefinition-。如果您使用 Amazon CLI 或 S Amazon DK 取消注册任务定义,则必须手动删除任务定义堆栈。有关更多信息,请参阅《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 架构上运行任务,请选择 Lin ux/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,请输入 3 GB。

    注意

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

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

    如果您在 “端口映射” 下的 “主机端口” 中选择 bridg e,请输入容器实例上要为容器保留的端口号。

  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则使用在亚马逊 ECR 公共库中托管的 Amazon Linux 容器。对于所有其他存储库,使用repository-url/image:tagrepository-url/image@digest格式指定存储库。

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

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

    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 为单位)。如果容器试图超出硬限制,则容器将停止。

      • Docker20.10.0 或更高版本的守护程序为容器保留至少 6 MiB 的内存,因此请不要为容器指定少于 6 MiB 的内存。

        Docker19.03.13-ce 或更早版本的守护程序为容器预留至少 4 MiB 的内存,因此不要为容器指定少于 4 MiB 的内存。

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

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

        Windows 容器不支持此功能。

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

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

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

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

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

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

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

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

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

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

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

      Healthcheck

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

      展开 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]$

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

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

      Docker 配置

      它们会覆盖中的值Dockerfile。

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

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

        此参数映射到CmdDocker远程 API 的 “创建容器” 部分,COMMAND选项映射到docker run。此参数会覆盖 a Dockerfile中的CMD指令。

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

        此参数映射到EntrypointDocker远程 API 的 “创建容器” 部分,--entrypoint选项映射到docker run。此参数会覆盖 a Dockerfile中的ENTRYPOINT指令。

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

        此参数映射到WorkingDirDocker远程 API 的 “创建容器” 部分,--workdir选项映射到docker run。此参数会覆盖 a Dockerfile中的WORKDIR指令。

      Ulimits

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

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

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

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

      Docker标签

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

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

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

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

      容器启动顺序

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

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

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

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

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

  11. (可选)“存储” 部分用于扩展 Fargate 上托管的任务的临时存储量。您也可以使用此部分为任务添加数据量配置。

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

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

    卷类型 步骤

    绑定坐骑

    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 密钥的亚马逊资源名称 (ARN)。

      • 要使用 Amazon Systems Manager,请输入 Systems Manager 参数的亚马逊资源名称 (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(添加挂载点)。

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

    • 对于容器,选择容器。

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

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

  14. (可选)要使用 Amazon Distro for OpenTelemetry集成配置应用程序跟踪和指标收集设置,请展开监控,然后选择使用指标收集来收集任务指标,并将其发送到亚马逊 CloudWatch 或亚马逊 Prometheus 托管服务。选择此选项后,Amazon ECS 将创建一个预配置为发送应用程序指标的 Amazon Distro for OpenTelemetry容器 sidecar。有关更多信息,请参阅收集应用程序指标

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

      重要

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

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

      重要

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

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

      重要

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

  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. 选择 创建