使用控制台创建任务定义 - Amazon Elastic Container Service

使用控制台创建任务定义

使用 Amazon ECS 控制台创建您的任务定义。为了使任务定义创建过程尽可能简单,控制台对许多选项进行了原定设置选择,我们将在下面介绍这些选项。控制台中的大多数部分还提供了帮助面板,以提供进一步的上下文。

您可以通过分步骤操作控制台或编辑 JSON 文件来创建任务定义。

JSON 验证

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

  • 该文件是有效的 JSON 文件

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

  • 该文件包含 familyName 参数

  • containerDefinitions 下方至少有一个条目

AWS CloudFormation 堆栈

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

当您创建任务定义时,Amazon ECS 控制台会自动创建一个名称以“ECS-Console-V2-TaskDefinition-”开头的 CloudFormation 堆栈。如果您使用 AWS CLI 或 SDK 取消注册任务定义,则必须手动删除任务定义堆栈。有关更多信息,请参阅《AWS 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. 对于在您的任务定义中定义的每个容器,请完成以下步骤。

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

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

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

      • 当您使用 bridge 网络模式时,对于 Container port(容器端口)和 Protocol(协议),选择要用于容器的端口映射。您选择下一页上的 bridge 网络模式。选择它之后,选择 Previous(上一个),然后为 Host port(主机端口),指定要为容器预留的容器实例上的端口号。

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

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

    6. (可选)要配置确定容器是否正常运行的命令,请展开 HealthCheck(运行状况检查),然后配置以下内容:

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

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

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

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

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

    7. (可选)要覆盖 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 指令。

    8. (可选)选择 Add more containers(添加更多容器)将其他容器添加到任务定义。一旦定义了所有容器,即选择 Next(下一步)。

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

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

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

    要在 Windows 容器上运行您的 AWS Fargate(无服务器)任务,请选择受支持的 Windows 操作系统。有关更多信息,请参阅任务操作系统

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

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

    CPU 值

    内存值

    AWS 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 和内存参数。

  9. 展开 Container size(容器大小)部分,以输入要向容器显示的内存量(以 GB 为单位)以及 Amazon ECS 容器代理将为该容器预留的 CPU 单位的数量。

    对于每个容器,选择添加,然后完成以下步骤:

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

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

      为任务中的所有容器预留的 CPU 总量必须低于任务级的 CPU 值。

      您可以将指定值乘以 1024,以确定每个 Amazon EC2 实例类型可用的 CPU 单元数。例如,t3 nano 实例的值为 2048。有关更多信息,请参阅 Amazon EC2 实例

    3. 对于内存,输入要提供给容器的内存量(以 GB 为单位)。

      如果您的容器尝试使用超出指定的内存,该容器将被终止。为任务中的所有容器预留的内存总量必须低于任务 Memory(内存)值(如果指定了一个)。

    4. 对于 GPU,输入容器实例的 GPU 单元数。支持 GPU 的 Amazon EC2 实例为每个 GPU 配备 1 个 GPU 单元。有关更多信息,请参阅在 Amazon ECS 上使用 GPU

  10. (可选)展开 Task roles, network mode(任务角色、网络模式)部分指定以下内容:

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

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

      如果您为网络模式选择 bridge,请选择 Previous(上一个),然后在 Port mappings(端口映射),对于 Host port(主机端口),输入要为容器预留的容器实例上的端口号。

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

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

  12. (可选)要为任务定义添加数据卷配置,选择 Add volume(添加卷)。

    卷类型 步骤

    绑定挂载

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

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

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

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

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

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

      • 对于 Read only(只读),选择是否使卷只读。

    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(容器路径),输入挂载卷的容器上的路径。

      • 对于 Read only(只读),选择是否使卷只读。

    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(容器路径),输入挂载卷的容器上的路径。

      • 对于 Read only(只读),选择是否使卷只读。

    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. 对于,输入由 AWS Directory Service 托管 Microsoft AD(Active Directory)或自托管 EC2 AD 托管的完全限定域名。

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

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

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

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

      • 对于 Read only(只读),选择是否使卷只读。

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

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

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

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

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

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

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

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

  14. (可选)选择 Use trace collection(使用跟踪收集)选项,用于配置任务以将跟踪数据从应用程序路由到 AWS X-Ray。选择此选项后,Amazon ECS 会创建 AWS Distro for OpenTelemetry 容器附加,该附加已预先配置为发送跟踪数据。有关更多信息,请参阅收集应用程序跟踪数据

    重要

    当使用跟踪收集时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅AWS Distro for OpenTelemetry 与 AWS X-Ray 集成所需的 IAM 权限

  15. (可选)选择 Use metric collection(使用指标收集)选项可收集任务的指标并将其发送到 Amazon CloudWatch 或 Amazon Managed Service for Prometheus。选择此选项后,Amazon ECS 会创建 AWS Distro for OpenTelemetry 容器附加,该附加已预先配置为发送应用程序指标。有关更多信息,请参阅收集应用程序指标

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

      重要

      将应用程序指标导出到 Amazon CloudWatch 时,您的任务定义需要具有所需权限的任务 IAM 角色。有关更多信息,请参阅AWS 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。对于 Workspace remote write endpoint(工作空间远程写入端点),为 Prometheus 工作空间输入远程写入端点 URL。对于 Scraping target(抓取目标),输入 AWS Distro for OpenTelemetry 收集器可用来抓取指标数据的主机和端口。有关更多信息,请参阅将应用程序指标导出到 Amazon Managed Service for Prometheus

      重要

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

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

      重要

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

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

    添加或删除标签。

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

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

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

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

  17. 选择 Next(下一步)以查看任务定义。

  18. Review and create(审核和创建)页面上,查看每个任务定义部分。选择 Edit (编辑) 以进行更改。任务定义完成后,选择 Create(创建)以注册任务定义。

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. 选择 Create(创建)。