

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

# Fargate 计算环境


Fargate 是一项无需管理 Amazon EC2 实例的服务器或集群即可运行[容器的](https://aws.amazon.com/what-are-containers)技术。 AWS Batch 使用 Fargate，您不必再预配置、配置或扩展虚拟机集群即可运行容器。这样一来，您就无需再选择服务器类型、确定扩展集群的时间和优化集群打包。

您在运行使用 Fargate 启动类型的任务和服务时，您需要将应用程序打包到容器中、指定 CPU 和内存要求、定义联网和 IAM policy 并启动应用程序。每个 Fargate 任务都具有自己的隔离边界，不与其他任务共享底层内核、CPU 资源、内存资源或弹性网络接口。

**Topics**
+ [

# 何时使用 Fargate
](when-to-use-fargate.md)
+ [

# Fargate 上的作业定义
](fargate-job-definitions.md)
+ [

# Fargate 上的作业队列
](fargate-job-queues.md)
+ [

# Fargate 上的计算环境
](fargate-compute-environments.md)

# 何时使用 Fargate


我们建议在大多数情况下使用 Fargate。Fargate 启动并扩展计算以密切匹配您为容器指定的资源需求。有了 Fargate，您无需过度配置或为额外的服务器付费。您也不必担心与基础设施相关的参数（例如实例类型）的细节。当计算环境需要扩展时，可以更快地启动在 Fargate 资源上运行的作业。通常需要几分钟才能启动新的 Amazon EC2 实例。但是，在 Fargate 上运行的作业可以在大约 30 秒内完成配置。所需的确切时间取决于多个因素，包括容器映像大小和作业数量。

但是，如果您的作业需要下列任一条件，我们建议您使用 Amazon EC2：
+ 大于 16 v CPUs
+ 超过 120 吉字节 (GiB) 的内存
+ 一个 GPU
+ 使用自定义亚马逊机器映像（AMI）
+ 任何 [linuxParameters](job_definition_parameters.md#ContainerProperties-linuxParameters) 参数

如果您有大量的作业，我们建议您使用 Amazon EC2 基础架构。例如，如果同时运行的作业数量超过了 Fargate 的节流限制。这是因为，使用 EC2，向 EC2 资源分配作业的速率要高于 Fargate 资源。此外，当您使用 EC2 时，可以同时运行更多作业。有关更多信息，请参阅《Amazon Elastic Container Service 开发人员指南》中的 [Fargate 服务配额](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html#service-quotas-fargate)**。

# Fargate 上的作业定义


AWS Batch job AWS Fargate s on 不支持所有可用的作业定义参数。某些参数完全不受支持，而其他参数对于 Fargate 任务的行为则不同。

以下列表描述了在 Fargate 作业中无效或以其他方式受到限制的作业定义参数。

`platformCapabilities`  
必须指定为 `FARGATE`。  

```
"platformCapabilities": [ "FARGATE" ]
```

`type`  
必须指定为 `container`。  

```
"type": "container"
```

`containerProperties` 中的参数    
`executionRoleArn`  
对于在 Fargate 资源上运行的作业，指定。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[任务的 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。  

```
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
```  
`fargatePlatformConfiguration`  
（可选，仅适用于 Fargate 作业定义）。指定 Fargate 平台版本或 `LATEST` 最新平台版本。`platformVersion` 的可能值为 `1.3.0`、`1.4.0` 和 `LATEST`。  

```
"fargatePlatformConfiguration": { "platformVersion": "1.4.0" }
```

`instanceType``ulimits`  
不适用于在 Fargate 资源上运行的作业。

`memory``vcpus`  
这些设置必须在 `resourceRequirements` 中指定

`privileged`  
要么不指定此参数，要么指定 `false`。  

```
"privileged": false
```

`resourceRequirements`  
必须使用[支持的值](job_definition_parameters.md#ContainerProperties-resourceRequirements-Fargate-memory-vcpu)来指定内存和 vCPU 要求。GPU 资源在 Fargate 资源上运行的作业不支持 GPU 资源。  
如果您使用 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)。  

```
"resourceRequirements": [
  {"type": "MEMORY", "value": "512"},
  {"type": "VCPU",   "value": "0.25"}
]
```

`linuxParameters` 中的参数    
`devices``maxSwap``sharedMemorySize``swappiness``tmpfs`  
不适用于在 Fargate 资源上运行的作业。

`logConfiguration` 中的参数    
`logDriver`  
仅支持 `awslogs` 和 `splunk`。有关更多信息，请参阅 [使用 awslogs 日志驱动程序](using_awslogs.md)。

`networkConfiguration` 中的会员    
`assignPublicIp`  
如果私有子网未连接用于向互联网发送流量的 NAT 网关，`[assignPublicIp](https://docs.aws.amazon.com/batch/latest/APIReference/API_NetworkConfiguration.html#Batch-Type-NetworkConfiguration-assignPublicIp)` 则必须为“`ENABLED`”。有关更多信息，请参阅 [AWS Batch IAM 执行角色](execution-IAM-role.md)。

# Fargate 上的作业队列


AWS Batch 开启的任务队 AWS Fargate 列基本保持不变。唯一的限制是 `computeEnvironmentOrder` 中列出的计算环境必须全部是 Fargate 计算环境（`FARGATE` 或 `FARGATE_SPOT`）。EC2 和 Fargate 的计算环境不能混合使用。

# Fargate 上的计算环境


AWS Batch 开启的计算环境 AWS Fargate 不支持所有可用的计算环境参数。某些参数完全不受支持。其他则对 Fargate 有具体要求。

以下列表描述了在 Fargate 作业中无效或以其他方式受到限制的计算环境参数。

`type`  
此参数必须设置为 `MANAGED`。  

```
"type": "MANAGED"
```

`computeResources` 对象中的参数    
`allocationStrategy``bidPercentage``desiredvCpus``imageId``instanceTypes``ec2Configuration``ec2KeyPair``instanceRole``launchTemplate``minvCpus``placementGroup``spotIamFleetRole`  
它们不适用于 Fargate 计算环境，也无法提供。  
`subnets`  
如果此参数中列出的子网未连接 NAT 网关，则必须将作业定义中的 `assignPublicIp` 参数设置为 `ENABLED`。  
`tags`  
它们不适用于 Fargate 计算环境，也无法提供。要为 Fargate 计算环境指定标签，请使用 `computeResources` 对象中没有的 `tags` 参数。  
`type`  
必须是 `FARGATE` 或 `FARGATE_SPOT`。  

```
"type": "FARGATE_SPOT"
```