0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECSのタスク配置戦略を調べた

Last updated at Posted at 2023-10-22

ECSを試しに使ったとき、EC2が二つ起動されたけど、

特にこちらで台数を指定した覚えがないので、なんで二台か調べた

ECS タスク配置戦略

AWS公式サイトによると、

EC2起動タイプを使用するタスクを起動するとき、Amazon ECSではタスク定義で指定されている CPU やメモリなどの要件に基づいてタスクを配置する場所を決定する必要があります。

とのことなので、タスクが何をどうやるか(CPU・メモリ)によって、配置する場所(どのタイプのEC2、どのEC2)が変わるということかな。。。

そして、EC2を以下のように選ぶらしい

Amazon ECSがタスクを配置する際は、以下のプロセスでコンテナインスタンスを選択します。
 ①タスク定義の CPU、GPU、メモリ、ポートの要件を満たすインスタンスを識別します。
 ②タスク配置の制約事項を満たすインスタンスを識別します。
 ③「タスク配置戦略」を満たすインスタンスを識別します。
 ④タスクを配置するインスタンスを選択します。

じゃ、タスクを配置する場所について開発者は何も指定できないか? そうでもない

タスクの実行時または新しいサービスの作成時に(タスク定義作成時じゃなく)、
以下のように「タスク配置戦略」を指定することで(上の③に該当)、タスクの配置をある程度決められる。

"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    }
]

戦略タイプ

binpack

CPU またはメモリの最小利用可能量に基づいてタスクを配置
(使用中のコンテナインスタンスの数を、「最小限」に抑える)

例:メモリに基づいてタスクをビンパックする

"field"を「memory」に指定

random

タスクをランダムに配置

spread

タスクは「指定された値」に基づいて均等に配置

例:複数のアベイラビリティーゾーンでタスクを均等に分散する

"field"を「attribute:ecs.availability-zone」に指定

例:すべてのインスタンスでタスクを均等に分散する

"field"を「instanceId」に指定

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?