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(タスク数を指定できない) |
|
タスク数 |