モジュール 2 で起動したクラスターに、3 つの新しいサービスをデプロイします。モジュール 2 と同様に、各サービスに対してタスク定義を記述します
⚐ 注: 単一のタスク定義に複数のコンテナを追加することが可能です。つまり、3 つのマイクロサービスすべてを、単一のサービスから異なるコンテナとして実行できます。ただし、このアプローチでは各コンテナがサービスに比例してスケールする必要があるという、モノリシックな状態のままとなります。目標は 3 つの独立したサービスを持つことです。各サービスは、それぞれのサービスのイメージでコンテナを実行する独自のタスク定義が必要となります。
これらのタスク定義は Amazon ECS コンソールから作成するか、JSON として記述することで高速化できます。タスク定義を JSON ファイルとして記述するには、次の手順に従います。
- Amazon Container Services コンソール (Amazon ECS にある) で [タスク定義] をクリックします。
- [タスク定義] ページで、[新しいタスク定義を作成する] ボタンをクリックします。
- [起動タイプの互換性を選択する] ページで、[EC2] オプション、[次のステップ] の順にクリックします。
- [タスクとコンテナの定義を設定する] ページで、[ボリューム] セクションまでスクロールし、[JSON で設定する] ボタンをクリックします。
- 次のコードスニペットをコピーして JSON フィールドに貼り付け、既存のコードを置き換えます。
[service-name]、[account-ID]、[region]、[tag] のプレースホルダーを置き換えることを忘れないでください。
⚐ 注: 以下のパラメータがタスク定義に使用されます。
- Name = [service-name: posts, threads, and users]
- Image = [Amazon ECR repository image URL]:latest
- cpu = 256
- memory = 256
- Container Port = 3000
- Host Post = 0
{
"containerDefinitions": [
{
"name": "[service-name]",
"image": "[account-id].dkr.ecr.[region].amazonaws.com/[service-name]:[tag]",
"memoryReservation": "256",
"cpu": "256",
"essential": true,
"portMappings": [
{
"hostPort": "0",
"containerPort": "3000",
"protocol": "tcp"
}
]
}
],
"volumes": [],
"networkMode": "bridge",
"placementConstraints": [],
"family": "[service-name]"
}
♻ 以下の手順を繰り返して、各サービスのタスク定義を作成します。