Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

正在运行的任务

在某些情况下,手动运行任务非常适合。例如,假设您正在开发一项任务,但还没有准备好使用服务计划程序来部署这项任务。可能您的任务是一次性或定期批处理作业,并不需要持续运行,完成后也不需要重启。

要使指定数量的任务持续运行或要将任务置于负载均衡器之后,请使用 Amazon ECS 服务计划程序。有关更多信息,请参阅 服务

使用 Fargate 启动类型运行任务

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Task Definitions,并选择要运行的任务定义。

    • 要运行此处显示的任务定义的最新修订,请选择要运行的任务定义左侧的框。

    • 要运行此处显示的任务定义的早期修订,请选择任务定义以查看所有有效的修订,然后选择要运行的修订。

  3. 选择 ActionsRun Task

  4. 对于启动类型,选择 FARGATE。有关启动类型的更多信息,请参阅 Amazon ECS 启动类型

  5. 对于平台版本,选择最新。有关平台版本的更多信息,请参阅 AWS Fargate 平台版本

  6. 对于 Cluster,选择要使用的集群。对于 Number of tasks,键入要使用此任务定义启动的任务的数量。对于Task Group,键入任务组的名称。

  7. 对于群集 VPC,选择您的任务要使用的 VPC。确保所选的 VPC 未配置为需要专用硬件租赁,因为 Fargate 任务不支持这种方式。

  8. 对于子网,请为您的任务选择可用子网。

  9. 对于安全组,已经为您的任务创建了一个安全组,允许来自 Internet 的 HTTP 流量 (0.0.0.0/0)。要编辑此安全组的名称或规则,或选择现有安全组,请选择编辑,然后修改安全组设置。

  10. 对于自动分配公有 IP,如果您希望附加到 Fargate 任务的弹性网络接口分配得到一个公有 IP 地址,则选择启用。如果您的任务需要出站网络访问 (例如提取映像),则这是必需的。如果不需要出站网络访问,则可以选择禁用

  11. (可选) 要将命令或环境变量覆盖发送到任务定义中的一个或多个容器,或要指定 IAM 角色任务覆盖,请选择 Advanced Options 并完成以下步骤:

    1. 对于 Task Role Override,选择 IAM 角色,该角色可提供权限,允许任务中的容器代表您调用 AWS API。有关更多信息,请参阅 任务的 IAM 角色

      此处仅显示具有 Amazon EC2 Container Service Task Role 信任关系的角色。有关如何为您的任务创建 IAM 角色的更多信息,请参阅为任务创建 IAM 角色和策略

    2. 对于 Task Execution Role Override,选择 IAM 角色,该角色可提供权限,允许任务中的容器代表您调用 AWS API。有关更多信息,请参阅 任务的 IAM 角色

      此处仅显示拥有 Amazon EC2 Container Service 任务执行角色信任关系的角色。有关如何为您的任务创建 IAM 角色的更多信息,请参阅为任务创建 IAM 角色和策略

    3. 对于 Container Overrides,选择要接收命令或环境变量覆盖的容器。

      • 对于命令覆盖:对于 Command override,键入要发送的命令覆盖。如果您的容器定义未指定 ENTRYPOINT,则格式应为不带引号的字符串的逗号分隔的列表。例如:

        /bin/sh,-c,echo,$DATE

        如果您的容器定义指定了 ENTRYPOINT (如 sh,-c),则格式应为不带引号的字符串,可用双引号将其引起来并作为参数传递给 ENTRYPOINT 命令。例如:

        while true; do echo $DATE > /var/www/html/index.html; sleep 1; done
      • 对于环境变量覆盖:选择 Add Environment Variable。对于 Key,键入您的环境变量的名称。对于 Value,键入环境值的字符串值 (不使用引号引起来)。

         环境变量覆盖

        此环境变量覆盖以如下方式发送到容器:

        MY_ENV_VAR="This variable contains a string."
  12. 查看您的任务信息并选择 Run Task

    注意

    如果您的任务从 PENDING 移至 STOPPED,或者它显示 PENDING 状态,然后从列出的任务中消失,则您的任务可能因出错而停止。有关更多信息,请参阅故障排除部分中的检查已停止的任务是否存在错误

使用 EC2 启动类型运行任务

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Task Definitions,并选择要运行的任务定义。

    • 要运行此处显示的任务定义的最新修订,请选择要运行的任务定义左侧的框。

    • 要运行此处显示的任务定义的早期修订,请选择任务定义以查看所有有效的修订,然后选择要运行的修订。

  3. 选择 ActionsRun Task

  4. 对于启动类型,选择 EC2。有关启动类型的更多信息,请参阅 Amazon ECS 启动类型

  5. 对于 Cluster,选择要使用的集群。对于 Number of tasks,键入要使用此任务定义启动的任务的数量。对于Task Group,键入任务组的名称。

  6. 如果任务定义使用 awsvpc 网络模式,请完成这些子步骤。否则,请继续下一步。

    1. 对于 Cluster VPC,选择容器实例驻留的 VPC。

    2. 对于 Subnets,请为您的任务选择可用子网。

      重要

      awsvpc 网络模式仅支持私有子网。由于任务不接收公有 IP 地址,因此出站 Internet 访问需要 NAT 网关,并且入站 Internet 流量应通过负载均衡器进行路由。

    3. 对于 Security groups,已经为您的任务创建了一个安全组,允许来自 Internet 的 HTTP 流量 (0.0.0.0/0)。要编辑此安全组的名称或规则,或选择现有安全组,请选择 Edit,然后修改安全组设置。

  7. (可选) 对于 Task Placement,您可以使用任务放置策略和约束指定如何放置任务。从以下选项中进行选择:

    • AZ Balanced Spread - 在各个可用区以及每个可用区中的各个容器实例中分配任务。

    • AZ Balanced BinPack - 在各个可用区以及具有最低可用内存的容器实例中分配任务。

    • BinPack - 根据 CPU 或内存的最低可用量来分配任务。

    • One Task Per Host - 在每个容器实例中最多可放置服务的一个任务。

    • Custom - 定义您自己的任务放置策略。有关示例,请参阅 Amazon ECS 任务放置

    有关更多信息,请参阅 Amazon ECS 任务放置

  8. (可选) 要将命令或环境变量覆盖发送到任务定义中的一个或多个容器,或要指定 IAM 角色任务覆盖,请选择 Advanced Options 并完成以下步骤:

    1. 对于 Task Role Override,选择 IAM 角色,该角色可提供权限,允许任务中的容器代表您调用 AWS API。有关更多信息,请参阅 任务的 IAM 角色

      此处仅显示具有 Amazon EC2 Container Service Task Role 信任关系的角色。有关如何为您的任务创建 IAM 角色的更多信息,请参阅为任务创建 IAM 角色和策略

    2. 对于 Task Execution Role Override,选择 IAM 角色,该角色可提供权限,允许任务中的容器代表您调用 AWS API。有关更多信息,请参阅 任务的 IAM 角色

      此处仅显示拥有 Amazon EC2 Container Service 任务执行角色信任关系的角色。有关如何为您的任务创建 IAM 角色的更多信息,请参阅为任务创建 IAM 角色和策略

    3. 对于 Container Overrides,选择要接收命令或环境变量覆盖的容器。

      • 对于命令覆盖:对于 Command override,键入要发送的命令覆盖。如果您的容器定义未指定 ENTRYPOINT,则格式应为不带引号的字符串的逗号分隔的列表。例如:

        /bin/sh,-c,echo,$DATE

        如果您的容器定义指定了 ENTRYPOINT (如 sh,-c),则格式应为不带引号的字符串,可用双引号将其引起来并作为参数传递给 ENTRYPOINT 命令。例如:

        while true; do echo $DATE > /var/www/html/index.html; sleep 1; done
      • 对于环境变量覆盖:选择 Add Environment Variable。对于 Key,键入您的环境变量的名称。对于 Value,键入环境值的字符串值 (不使用引号引起来)。

         环境变量覆盖

        此环境变量覆盖以如下方式发送到容器:

        MY_ENV_VAR="This variable contains a string."
  9. 查看您的任务信息并选择 Run Task

    注意

    如果您的任务从 PENDING 移至 STOPPED,或者它显示 PENDING 状态,然后从列出的任务中消失,则您的任务可能因出错而停止。有关更多信息,请参阅故障排除部分中的检查已停止的任务是否存在错误