AWS Fargate 上の AWS Batch - AWS Batch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Fargate 上の AWS Batch

AWS Fargate は、サーバーやAmazon EC2インスタンスのクラスターを管理することなくAWS Batch でコンテナを実行できるテクノロジーです。AWSFargateを使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がありません。これにより、サーバータイプの選択、クラスターをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなります。

Fargate リソースを使用してジョブを実行する場合、アプリケーションをコンテナにパッケージ化し、CPU とメモリ要件を指定して、ネットワークとIAM ポリシーを定義して、アプリケーションを起動します。各 Fargate ジョブは、独自の分離境界を持ち、基本となるカーネル、CPU リソース、メモリリソース、Elastic Network Interface を別のジョブと共有しません。

Fargateをいつ使うべきか

ほとんどのシナリオで Fargate を使用することをお勧めします。Fargate は、コンテナに指定したリソース要件に厳密に一致するようにコンピューティングを起動し、スケールします。Fargate を使用すると、追加のサーバーに対してオーバープロビジョニングまたは料金を支払う必要はありません。また、インスタンスタイプなど、インフラストラクチャ関連のパラメータの詳細について心配する必要はありません。コンピューティング環境をスケールアップする必要がある場合、Fargate リソースで実行されるジョブをより迅速に開始できます。通常、新しい Amazon EC2 インスタンスの作成に数分かかります。しかし、Fargate で実行されるジョブは約 30 秒でプロビジョニングできます。正確な所要時間は、コンテナイメージのサイズやジョブ数など、いくつかの要因によって異なります。

ただし、ジョブに次のいずれかが必要な場合は、Amazon EC2 を使用することをお勧めします。

  • 16 個以上の vCPU

  • 120 ギガバイト (GiB) 以上のメモリ

  • 1 個のGPU

  • 1 個のカスタム Amazon マシンイメージ (AMI)

  • LinuxParameters パラメータのいずれか

ジョブの数が多い場合は、Amazon EC2 インフラストラクチャを使用することをお勧めします。たとえば、同時実行ジョブの数が Fargate スロットリング制限を超える場合です。これは、EC2 では、Fargate リソースよりも高いレートで EC2 リソースにジョブをディスパッチできるためです。さらに、EC2 を使用すると、同時に実行できるジョブが増えます。詳細については、Amazon Elastic Container Service デベロッパーガイドAWS Fargate サービスクォータを参照してください。

Fargate でのJob 定義

Fargate での AWS Batch ジョブは、使用可能なすべてのジョブ定義パラメータをサポートしているわけではありません。一部のパラメータはまったくサポートされていません。また、その他のパラメータは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 を指定します。platformVersion の可能な値はデフォルトで 1.3.01.4.0LATEST です。

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

Fargate リソースで実行されているジョブには適用されません。

memory
vcpus

これらの設定は、resourceRequirements で指定する必要があります。

privileged

このパラメータを指定しないか、false を指定します。

"privileged": false
resourceRequirements

メモリと vCPU の要件は、サポートされている値を使用して指定する必要があります。GPU リソースは、Fargate リソースで実行されているジョブではサポートされていません。

GuardDuty Runtime Monitoring を使用すると、 GuardDuty セキュリティエージェントのメモリオーバーヘッドがわずかに発生します。したがって、メモリ制限にはセキュリティエージェントのサイズ GuardDutyを含める必要があります。 GuardDuty セキュリティエージェントのメモリ制限については、「 ユーザーガイド」の「CPU とメモリの制限」を参照してください。 GuardDuty ベストプラクティスの詳細については、「Amazon ECS デベロッパーガイド」の「Runtime Monitoring を有効にした後で Fargate タスクのメモリ不足エラーを修正する方法」を参照してください。

"resourceRequirements": [ {"type": "MEMORY", "value": "512"}, {"type": "VCPU", "value": "0.25"} ]
linuxParametersのパラメータ
devices
maxSwap
sharedMemorySize
swappiness
tmpfs

Fargate リソースで実行されているジョブには適用されません。

logConfigurationのパラメータ
logDriver

awslogssplunk のみがサポートされています。詳細については、awslogs ログドライバーを使用するを参照してください。

networkConfiguration のメンバー
assignPublicIp

プライベートサブネットにインターネットへトラフィックを送るための NAT ゲートウェイが接続されていない場合、assignPublicIpENABLEDでなければなりません。詳細については、AWS Batch IAM ロールの実行を参照してください。

Fargate のジョブキュー

Fargate の AWS Batch ジョブキューは基本的に変更されません。computeEnvironmentOrder にリストされているコンピューティング環境は、すべて Fargate のコンピューティング環境 (FARGATE または FARGATE_SPOT) であることが唯一の制限事項です。EC2 と Fargate コンピューティング環境は混在できません。

Fargate のコンピューティング環境

Fargate の AWS Batch コンピューティング環境は、利用可能なすべてのコンピューティング環境パラメーターをサポートしていません。一部のパラメータはまったくサポートされていません。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"