AWS Batch關於 AWS Fargate - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Batch關於 AWS Fargate

AWSFargate 是一種技術,您可以使用它AWS Batch來執行容器,而無需管理伺服器或 Amazon EC2 執行個體叢集。使用 AWS Fargate,就不再需要佈建、設定或擴展虛擬機器的叢集來執行容器。這樣一來即無須選擇伺服器類型、決定何時擴展叢集,或最佳化叢集壓縮。

使用 Fargate 資源執行任務時,您可以將應用程式封裝在容器中、指定 CPU 和記憶體需求、定義聯網和 IAM 政策,以及啟動應用程式。每個 Fargate 作業都有自己的隔離界限,不會與其他工作共用基礎核心、CPU 資源、記憶體資源或 elastic network interface。

何時使用 Fargate

我們建議在大多數情況下使用 Fargate。Fargate 會啟動並擴展運算,以便與您為容器指定的資源需求密切相符。有了 Fargate,您不需要過度佈建或支付額外的伺服器費用。您也不需要擔心基礎結構相關參數 (例如執行個體類型) 的具體細節。當運算環境需要擴充時,在 Fargate 資源上執行的工作可以更快速地開始。通常,啟動新的 Amazon EC2 執行個體需要幾分鐘的時間。不過,在 Fargate 上執行的工作可以在大約 30 秒內佈建。所需的確切時間取決於多種因素,包括容器映像大小和作業數量。

不過,如果您的任務需要下列任何一項,我們建議您使用 Amazon EC2:

  • 超過 16 個 vCPUs

  • 超過 120 GB 的記憶體

  • 一個 GPU

  • 自定義 Amazon 機器映像(AMI)

  • 任何 Linux 參數參數的參數

如果您有大量的任務,建議您使用 Amazon EC2 基礎設施。例如,如果同時執行的工作數目超過 Fargate 節流限制。這是因為使用 EC2 時,任務可以以比 Fargate 資源更高的速率分派給 EC2 資源。此外,當您使用 EC2 時,可以同時執行更多工作。如需詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的 AWS Fargate 服務配額

Fargate 上的 Job 定義

AWS BatchFargate 上的工作不支援所有可用的工作定義參數。某些參數完全不受支援,而另一些參數對於 Fargate 工作的行為不同。

下列清單說明 Fargate 工作中無效或受其他限制的工作定義參數。

platformCapabilities

必須指定為FARGATE

"platformCapabilities": [ "FARGATE" ]
type

必須指定為container

"type": "container"
containerProperties 中的參數
executionRoleArn

必須為在 Fargate 資源上執行的工作指定。如需詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的任務 IAM 角色

"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
fargatePlatformConfiguration

(可選,僅適用於 Fargate 工作定義)。指定 Fargate 平台版本,或LATEST指定最新平台版本。的可能值platformVersion1.3.01.4.0、和 LATEST (預設值)。

"fargatePlatformConfiguration": { "platformVersion": "1.4.0" }
instanceType
ulimits

不適用於在 Fargate 資源上執行的工作。

memory
vcpus

這些設定必須在 resourceRequirements

privileged

請勿指定此參數,或指定false

"privileged": false
resourceRequirements

記憶體和 vCPU 需求都必須使用支援的值來指定。在 Fargate 資源上執行的工作不支援 GPU 資源。

如果您使用 GuardDuty 執行階段監視,則 GuardDuty 安全性代理程式會產生輕微的記憶體額外負荷。因此記憶體限制必須包含 GuardDuty安全性代理程式的大小。如需有關 GuardDuty Security Agent 記憶體限制的資訊,請參閱《GuardDuty 使用手冊》中的 CPU 和記憶體限制如需最佳實務的相關資訊,請參閱 Amazon ECS 開發人員指南中的啟用執行時期監控後,如何修復 Fargate 任務中的記憶體不足錯誤

"resourceRequirements": [ {"type": "MEMORY", "value": "512"}, {"type": "VCPU", "value": "0.25"} ]
linuxParameters 中的參數
devices
maxSwap
sharedMemorySize
swappiness
tmpfs

不適用於在 Fargate 資源上執行的工作。

logConfiguration 中的參數
logDriver

splunkawslogs和受支援。如需詳細資訊,請參閱使用 awslogs 日誌驅動程式

成員 networkConfiguration
assignPublicIp

如果私有子網路沒有連接 NAT 閘道來傳送流量至網際網路,則assignPublicIp必須是 "ENABLED"。如需詳細資訊,請參閱AWS Batch 執行 IAM 角色

Fargate 上的 Job 佇列

AWS BatchFargate 上的工作佇列基本上是不變的。唯一的限制是列在中的運算環境都computeEnvironmentOrder必須是 Fargate 運算環境 (FARGATEFARGATE_SPOT)。EC2 和 Fargate 運算環境不能混合使用。

Fargate 上的運算環境

AWS BatchFargate 上的運算環境不支援所有可用的運算環境參數。某些參數完全不受支援。其他人對 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

此必須為 FARGATEFARGATE_SPOT

"type": "FARGATE_SPOT"