AmazonECSについて調べたメモ
はじめに
Amazon ECSについていくつか調べたので自分用にメモ
ECSとは
Amazon Elastic Container Service(Amazon ECS) クラスタでDockerコンテナを簡単に実行、停止、管理できるスケーラブルで高速なコンテナ管理サービス。
ECSを使用することで以下のことができる
- APIコールでコンテナベースのアプリケーションの起動・停止、クラスタ状態の取得、EC2の機能へのアクセス
- リソース、分離ポリシー、可用性要件に基づいたクラスタ間のコンテナ配置及びスケジューリング
- コンテナを利用したマイクロサービスモデルでのアーキテクチャ構築
ECSの機能
コンテナ
ECSでアプリケーションをデプロイするにはコンテナで実行できるように設計しておく必要がある
タスク定義
ECSでアプリケーションを実行するにはタスク定義を作成する必要がある。 ここでいうタスク定義とは、アプリケーションを構成するコンテナを記述するJSON形式のテキストファイル。 タスク定義では以下のパラメーターを指定できる
- タスクのコンテナで使用するDockerイメージ
- 各タスクまたは各コンテナで使用するCPU。メモリ量
- 起動タイプ
- Dockerネットワーキングモード
- ログ記録設定
- コンテナ終了もしくは失敗時のタスク実行
- コンテナ開始時の実行コマンド
- コンテナのデータボリューム
- タスクが使用するIAMロール
タスク
タスクはクラスタ内のタスク定義のインスタンス化。 タスク定義を作成後、クラスタで実行するタスクの数を指定できる。
タスク定義で定義したアプリケーションを実行する単位というイメージだけど、あってるのだろうか?
クラスター
タスクまたはサービスの論理グループ。クラスタにタスクを配置する。
fargate起動タイプの場合は、ECSがクラスタリソースを管理して EC2起動タイプの場合は、ユーザ自信が管理するコンテナインスタンスのグループ。
ECSのコンテナインスタンスは、ECSエージェントを実行しているEC2インスタンスで、指定されたレジストリからコンテナイメージをダウンロードしてクラスタ内で実行する
ユースケース
アーキテクチャ設計
設計は、Fargete起動タイプかEC2起動タイプかどちらを使うかで異なるので、それぞれのガイダンスを守る。