概要
AWS SAA合格へ向けてAWSについて1から勉強した際に学んだことを定期的にアウトプットしたいと思います
前提
- Dockerおよびコンテナ仮想技術についてある程度知っていること
- EC2についてある程度知っていること
ECSとは
Amazon Elastic Container Service (Amazon ECS)は、非常にスケーラブルで高速なコンテナ管理サービスです。これを使用して、クラスター上のコンテナを実行、停止、管理できます。
公式ドキュメントに記載している通り、コンテナの実行、停止、管理を簡単に実行できるAWSのフルマネージドサービスです
起動タイプ
ECSを使用する際に起動タイプを選択する必要があり、
- EC2
- Fargate
の2種類存在します
EC2
EC2インスタンス上でコンテナを実行、停止、管理する起動タイプです
EC2インスタンスの制御と管理を自身でする必要があるものの、後述するFargateタイプと比べてカスタマイズ性が高いです
Fargate
EC2インスタンスを管理せずにサーバレスでコンテナを実行、停止、管理する起動タイプです
Fargateを使用することでサーバ(EC2インスタンス)のプロビジョニング(必要に応じたリソースの提供や準備)や管理せずにコンテナを実行、停止、管理できます
ただし、前述のEC2タイプと比べてカスタマイズ性が低いです
クラスター
後述するコンテナインスタンスをグループ化した論理グループのことです
コンテナインスタンス
クラスター上でコンテナを実行するEC2インスタンスのことです
タスク定義
コンテナを実行するための設定が記載されたJSONファイルのことです
タスク定義には
- コンテナ定義
- コンテナイメージ
- コンテナ名
- コンテナ起動時のコマンド
- ネットワーク定義
- ホスト名
- IPアドレス
- DNS
- ボリューム定義
- 使用するボリューム
などが記載されています
複数のタスク定義を使って複数のコンテナで構成されたアプリケーションを実行できます
タスク
タスク定義に基づいて起動するコンテナ群のことです
サービス
複数のタスク(コンテナ群)の管理および実行を行う機能です
サービスを使用することで、
- スケールアップ/ダウン
- アプリケーションの負荷分散
などを自動化することができます
スケールアップ/ダウンをする点ではApplication Auto Scalingと似ていますが、
サービスは自動的にタスクの数をスケールアップ/ダウンをすることができるものの、
スケールアップ/ダウンの特定の条件下でしか行うことができません
それに対してApplication Auto Scaling はECS以外に
- DynamoDB
- EC2
- RDS
など様々なサービスでスケールアップ/ダウンができる汎用的なマネージドサービスになっています
ECRとは
Docker(コンテナ)イメージをAWS上で管理するためのマネージドサービスです
ECRとECSを組み合わせることでローカル上のDockerイメージのbuildからdeployまでを自動化することができます
ECSの構成
図にすると以下の通りです
参考