

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Fargate 资源上创建单节点作业定义
<a name="create-job-definition-Fargate"></a>

完成以下步骤，在 AWS Fargate 资源上创建单节点作业定义。

**要在 Fargate 资源上创建新作业定义，请执行以下操作：**

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 从顶部导航栏中，选择 AWS 区域 要使用的。

1. 在左侧导航窗格中，选择**作业定义**。

1. 选择**创建**。

1. 对于**编排类型**，请选择 **Fargate**。有关更多信息，请参阅 [Fargate 计算环境](fargate.md)。

1. 对于**名称**，为您的作业定义输入唯一名称。名称长度不超过 128 个字符。可以包含大小写字母、数字、连字符（-）和下划线（\$1）。

1. （可选）对于**执行超时**，输入超时值（以秒为单位）。执行超时是指未完成的作业终止之前的时间长度。如果某次尝试超过了超时时间，该尝试将停止，状态将转为 `FAILED`。有关更多信息，请参阅 [作业超时](job_timeouts.md)。最小值为 60 秒。

1. （可选）开启**计划优先级**。输入介于 0 到 100 之间的计划优先级值。值越高，相较于较低值的优先级越高。

1. （可选）展开 **标签**，然后选择**添加标签**以向资源添加标签。启用**传播标签**以传播作业和作业定义中的标签。

1. 在 **Fargate 平台配置**部分中：

   1. 对于**运行时平台**，请选择计算环境架构。

   1. 对于**操作系统系列**，为计算环境选择操作系统。

   1. 对于** CPU 架构**，请选择 vCPU 架构。

   1. 对于 **Fargate 平台版本**，请输入 `LATEST` 或特定的运行时系统环境版本。

   1. （可选）打开**分配公有 IP**，为 Fargate 作业网络接口分配公有 IP 地址。为使在私有子网中运行的作业将出站流量发送到互联网，私有子网需要挂载 NAT 网关才能将请求路由到互联网。您可能需要这样做，以便可以提取容器映像。有关更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》**中的 [Amazon ECS 任务联网](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)。

   1. （可选）对于**临时存储**，请输入要分配给任务的临时存储量。临时存储容量必须介于 21 GiB 到 200 GiB 之间。默认情况下，如果您不输入值，则会分配 20 GiB 的临时存储空间。
**注意**  
临时存储需要 Fargate 平台版本 1.4 或更高版本。

   1. 对于**执行角色**，请指定一个 IAM 角色，该角色授予 Amazon ECS 容器和 Fargate 代理代表您进行 AWS API 调用的权限。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南* 中的 [Amazon ECS 任务执行 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)。

   1. 对于**作业尝试**，请输入 AWS Batch 尝试将作业移至某一 `RUNNABLE` 状态的次数。请输入 1 到 10 之间的数字。

   1. 可选）对于**重试策略条件**，选择**退出时添加评估**。至少输入一个参数值，然后选择一个**操作**。对于每组条件，必须将**操作**设置为**重试**或**退出**。这些操作意味着以下几点：
      + **重试** — AWS Batch 重试，直到达到您指定的任务尝试次数。
      + **退出** — AWS Batch 停止重试作业。
**重要**  
如果选择**退出时添加评估**，则必须至少配置一个参数并选择一个**操作**或选择**退出时移除评估**。

1. 选择**下一页**。

1. 在**容器配置**部分：

   1. 对于**映像**，选择要用于您的作业的 Docker 映像。默认情况下，Docker Hub 注册表中的映像可用。也可以使用`repository-url/image:tag`指定其他存储库。名称长度不超过 225 个字符。可以包含大小写字母、数字、连字符（-）、下划线（\$1）、冒号（:）、句点（.）、正斜杠（/）和数字符号（\$1）。此参数可映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[创建容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)部分中的`Image`和[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)的`IMAGE`参数。
**注意**  
Docker 映像架构必须与为它们安排的计算资源的处理器架构相匹配。例如，基于 ARM 的 Docker 镜像只能在基于 ARM 的计算资源上运行。
      + Amazon ECR 公有存储库中的映像使用完整的`registry/repository[:tag]`或`registry/repository[@digest]`命名惯例（例如，`public.ecr.aws/registry_alias/my-web-app:latest`）。
      + Amazon ECR 存储库中的映像使用完整的`registry/repository[:tag]`命名惯例（例如，`aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`）。
      + Docker Hub 上的官方存储库中的映像使用单一名称 (例如，`ubuntu` 或 `mongo`)。
      + Docker Hub 上其他存储库中的映像通过组织名称（例如，`amazon/amazon-ecs-agent`）进行限定。
      + 其他在线存储库中的映像由域名（例如，`quay.io/assemblyline/ubuntu`）进行进一步限定。

   1. 对于**命令**，将命令的等效 JSON 字符串数组输入到该字段中。

      此参数映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) [创建容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)部分中的`Cmd`，以及[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)的`COMMAND`参数。有关该Docker`CMD`参数的更多信息，请参阅 reference [https://docs.docker.com/engine//builder/ \$1cmd](https://docs.docker.com/engine/reference/builder/#cmd)。
**注意**  
您可以在命令中使用参数替代默认值和占位符。有关更多信息，请参阅 [Parameters](job_definition_parameters.md#parameters)。

   1. （可选）将参数作为名称-值映射添加到作业定义中，以覆盖作业定义的默认值。若要添加参数：

      1. 对于**参数**，选择**添加参数**，输入名称-值对，然后选择**添加参数**。
**重要**  
如果选择**添加参数**，则必须至少配置一个参数或选择**移除参数**

   1. 在**环境配置**部分：

      

      1. 要**配置 Job 角色**，请选择有权访问的 IAM 角色 AWS APIs。此功能使用 Amazon ECS IAM 角色来执行任务功能。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[任务的 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。
**注意**  
此处仅显示具有 **Amazon Elastic Container Service Task Role** 信任关系的角色。有关如何为您的 AWS Batch 任务创建 IAM 角色的更多信息，请参阅 A *mazon Elastic Container 服务开发者指南*[中的为任务创建 IAM 角色和策略](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role)。

      1. 对于 **v CPUs**，输入CPUs 要为容器保留的 v 数。此参数将映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[创建容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)部分中的`CpuShares`以及[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)的`--cpu-shares`选项。每个 vCPU 相当于 1024 个 CPU 份额。您必须指定至少一个 vCPU。

      1. 对于**内**存，输入容器可用的内存限制。如果您的容器尝试使用超出此处指定的内存，该容器将被终止。此参数将映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[创建容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)部分中的`Memory`以及[https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)的`--memory`选项。您必须为作业指定至少 4 MiB 内存。

         如果您使用 GuardDuty 运行时监控，则 GuardDuty 安全代理会有轻微的内存开销。因此，内存限制必须包括 GuardDuty安全代理的大小。有关 GuardDuty 安全代理内存限制的信息，请参阅《*GuardDuty 用户指南》*中的 [CPU 和内存限制](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits)。有关最佳实践的信息，请参阅《Amazon ECS 开发人员指南》**中的[启用运行时监控后，如何解决 Fargate 任务中的内存不足错误](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error)。
**注意**  
要最大限度地提高资源利用率，请为特定实例类型的作业确定内存优先级。有关更多信息，请参阅 [计算资源内存管理](memory-management.md)。

   1. （可选）对于**环境变量**，选择**添加环境变量**以名称-值对的形式添加环境变量。这些变量传递给容器。

   1. （可选）对于**密钥**，选择**添加密钥**，将密钥添加为名称-值对。这些密钥暴露在容器中。[欲了解更多信息，请参阅：LogConfiguration秘密选项。](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. 选择**下一页**。

1. （可选）在 **Linux 配置**部分中：

   1. 对于**用户**，输入要在容器内使用的用户名。

   1. 开启**启用初始化进程**以在容器内运行初始化进程。该进程转发信号和获得进程。

   1. 开启**启用只读文件系统**以移除对卷的写入权限。

   1. （可选）展开**其他配置**。

   1. 对于**装载点配置**，请选择**添加装载点配置**以添加数据卷的装载点。您必须指定源卷和容器路径。这些装载点会传递到容器实例上的 Docker daemon。

   1. 对于**卷配置**，请选择**添加卷**以创建要传递到容器的卷列表。输入卷的**名称**和**源路径**，然后选择**添加卷**。

   1. 在**任务属性**部分中：

      1. 对于**执行角色（视情况而定**），选择一个角色以允许 Amazon ECS 代理代表您进行 AWS API 调用。有关创建**执行角色**的更多信息，请参阅[教程：创建 IAM 执行角色](create-execution-role.md)。

      1. 选择**启用 ECS execute 命令**，以实现直接访问 Amazon ECS 容器 Shell 并绕过主机操作系统。必须选择一个**任务角色**。
**重要**  
**ECS execute** 命令要求文件系统是可写的。

      1. 对于**任务角色**，选择一个 Amazon ECS 身份和访问管理 (IAM) Access Management 角色以允许容器代表 AWS 您进行 API 调用。有关更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》中的 [Amazon ECS 任务 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)**。

   1. 在**日志配置**部分：

      1. （可选）对于**日志驱动程序**，选择要使用的日志驱动程序。[有关可用日志驱动程序的更多信息，请参阅:LogConfigurationlogDriver。](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**注意**  
默认情况下，使用 `awslogs` 日志驱动程序。

      1. （可选）在**选项**中，选择**添加选项**以添加选项。输入名称-值对，然后选择**添加选项**。

      1. （可选）对于**密钥**，选择**添加密钥**以添加密钥。然后，输入名称-值对，并选择**添加密钥**。
**提示**  
[欲了解更多信息，请参阅：LogConfiguration秘密选项。](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. 选择**下一页**。

1. 对于**作业定义查看**，请查看配置步骤。如果需要进行更改，请选择 **Edit**（编辑）。完成后，选择**创建作业定义**。