翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Fargate 上の AWS Batch
AWS Fargate は、サーバーやAmazon EC2インスタンスのクラスターを管理することなくAWS Batch でコンテナ
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.0
、1.4.0
、LATEST
です。"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
-
awslogs
とsplunk
のみがサポートされています。詳細については、awslogs ログドライバーを使用するを参照してください。
networkConfiguration
のメンバー-
assignPublicIp
-
プライベートサブネットにインターネットへトラフィックを送るための NAT ゲートウェイが接続されていない場合、
assignPublicIp
はENABLED
でなければなりません。詳細については、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"