のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

<Python>boto3 でfargate設定しようとするとエラー:No Fargate configuration exists for given values. が発生する

何をしようとしたのか

タイトルのとおり、ECSのFARGATEでタスク定義をboto3から登録しようと考えていた。 使用したAPIは、register_task_definitionを使用 そのときに以下のエラーが発生した。

エラー
No Fargate configuration exists for given values.

原因

FARGATEでは、ホストするコンテナのCPUとメモリを設定する必要があるがその値は何でも良いわけではなく、CPUの値によって選択できるメモリのサイズも制限される。今回はこれが原因でこのエラーが発生していた。 ただし、今回のエラーがこの原因のみによって発生するものかはわからない。他にも同系統の原因で当該エラーが発生する必要がある。

対策

調べてみると、以下のような組み合わせで選択できるようだ。

タスクで使用されている cpu ユニットの数。EC2 起動タイプを使用する場合、このフィールドはオプションであり、任意の値を使用できます。Fargate 起動タイプを使用している場合、このフィールドは必須であり、次のいずれかの値を使用する必要があります。この値により memory パラメータの有効な値の範囲が決まります。 256 (.25 vCPU) - 使用可能な memory 値: 512 (0.5 GB)、1024 (1 GB)、2048 (2 GB)

512 (.5 vCPU) - 使用可能な memory 値: 1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB)

1024 (1 vCPU) - 使用可能な memory 値: 2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB)

2048 (2 vCPU) - 使用可能な memory 値: 4096 (4 GB) ~ 16384 (16 GB) (1024 (1 GB) のインクリメント)

4096 (4 vCPU) - 使用可能な memory 値: 8192 (8 GB) ~ 30720 (30 GB) (1024 (1 GB) のインクリメント)

一応表にした。 cpu | 選択可能なメモリ ---|--- 256 | 512, 1024, 2048 1024|1024, 2048, 3072, 4096 2048| 4096~16384(1024毎) 4096| 8192~30720(1024毎)

docs.aws.amazon.com