内容
AWS ECSを利用する上で、登場するサービスの名称と役割が一つのハードルと感じたため、簡単にまとめます。
目次
ECSとは
フルマネージドなコンテナオーケストレーションサービス。
コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングすることができる。
Fargateとは
ECSには起動タイプとしてEC2起動タイプとFargate起動タイプが存在する。
EC2起動タイプでは自分で管理するインスタンス上でコンテナ化されたアプリケーションを実行できるのに対し、
Fargate起動タイプは、基盤となるインフラストラクチャをプロビジョン、及び管理することなくコンテナ化されたアプリケーションを実行できる。
ECRとは
フルマネージドなDockerコンテナレジストリ。
ECSとの連携が容易で、新しいコンテナを立ち上げるときに簡単にコンテナイメージを取得できる。
AWS上でシステムを構築する際は他のAWSサービスとの連携やセキュリティ面を考えるとECRがおすすめである。
ECSの構成とそれぞれの設定内容
ECSの構成の全体像としては、以下のようなイメージとなる。
クラスター
サービスとタスクを管理するためのグループ。
サービスとタスクはクラスターに登録されているインフラストラクチャで実行される。
クラスターの設定内容
- クラスター名
- クラスターを作成するVPC
サービス
オーケストレーション機能を提供。
指定したタスク定義をもとに、タスクを実行。
サービスをデプロイすると、ECS Fargate上で各タスク、またはそのタスクに入っている各コンテナが実際に起動する。
サービスの主な設定内容
- どのタスク定義を使用するか
- デプロイ設定(どのECSクラスターを使用するか)
- 必要タスク数
- ロードバランサー設定(ELBと連携して各タスク間にトラフィックを分散)
- IAM設定
タスク定義
どのような設定でコンテナを動かすかといった、タスクの実行を定義。
タスク定義の主な設定内容
- コンテナ定義
- コンテナ名
- どのイメージを使用するか(ECR内の、使用するイメージURIを選定)
- CPU/Memory
- Portマッピング
- 環境変数
- 使用ボリューム
- CloudWatch Logsの出力先
- ボリューム定義
- ボリューム名
- パス
- その他設定
- ネットワークモード(タスクごとに個別のIPアドレスを付与など)
- Task IAMロール
タスク
コンテナを管理するための入れ物。
タスク定義に基づき実行される。
タスク内のコンテナは同一ホストで実行される。
まとめ
以上がECSの各登場人物と設定内容の簡単なまとめになります。
ECSの仕組みを言語化してまとめると
「サービスがタスク定義を元にタスクを実行する。タスク定義にはどのDockerイメージを使用するかが定義されている。」
といった感じだと思います。
ここまで読んでいただきありがとうございました。