Amazon Elastic Container Service
Dockerコンテナを実行および管理
AWS が独自に開発しているコンテナのオーケストレーションサービス
タスク定義とサービス定義で構築します。
| タスク定義 | kubernetesのPod |
| サービス定義 | そのタスク定義のネットワーク周辺やスケーリングポリシーなどを定義 |
EC2 起動タイプ(ホストマシン上でコンテナを実行する)と Fargate 起動タイプから自社のワークロードに合ったものをお選びいただくことが出来ます。
EC2 の上で ecs-agent を動かすことで、ECS のクラスタとして認識させることができる
ecs-agent が動いていれば、ECS を通して EC2 の上でコンテナを簡単に動かすことができます。
ECS 向けに awslogs という Docker 用の logging driver を提供していて、CloudWatch Logs との連携も簡単に行えます。
タスクやサービスの論理的なグループ
アプリケーションごと、環境ごとに用意します。
例えばHogeというサービスとFugaというサービスがあり、それぞれにstg環境・prd環境があるならば、
clusterはHoge-prd/Hoge-stg/Fuga-prd/Fuga-stgの4つが用意されていると良いです。
どういうコンテナを実行するかの情報
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/application_architecture.html
次の条件が必要な場合は、コンテナを 1 つのタスク定義にデプロイすることをお勧めします。
上記以外の場合は、個別のタスク定義でコンテナを定義することで、コンテナを個別にスケーリング、プロビジョニング、プロビジョニング解除できるようになります。
Task Definition情報から起動させたコンテナの実行単位
「タスクの実行」で、1回起動することができる。
実行されているTaskの数を希望数に保つ。
常駐型
UnhealthyなTaskを自動的に入れ替える
サービスを作るとタスクも作られる。
「クラスター」から「クラスターの作成」
「EC2 Linux + ネットワーキング」を選択し「次のステップ」
| クラスター名 | 適当な名前 |
| プロビジョニングモデル | オンデマンドインスタンス |
| EC2 インスタンスタイプ | t2.micro |
| T2 無制限の有効化 | チェックしない |
| インスタンス数 | 1 |
| EBS ストレージ | 22 |
| キーペア | SSH接続をするためのキーペア |
| ネットワーキング | デフォルト |
| コンテナインスタンスの IAM ロール |
「タスク定義」から「新しいタスク定義の作成」
「EC2」を選択し「次のステップ」
| タスク定義名 | |
| タスクロール | |
| ネットワークモード | |
| タスク実行ロール | |
| タスクメモリ | |
| タスクCPU |
| コンテナ名 | httpd-ecs |
| イメージ | httpd カスタムイメージ形式 |
| メモリ制限(MB) | 300 指定したメモリを超えようとすると、強制終了 |
| ポートマッピング | 80 |
タスクとクラスターを紐づけ
「サービス」タブから「作成」
| 起動タイプ | FARGATEかEC2 | |
| タスク定義 | ||
| クラスタ | ||
| サービスタイプ | REPLICA(タスク数を指定できる) DEAMON(タスク数を指定できない) |
|
| タスク数 |