AWSのECSとは
AWSのECSとは、正式にはAmazon Elastic Container Service(Amazon ECS)というAWSのフルマネージド・クラウドサービスの1つです。ECSは、コンテナ化したワークロードを扱うサービスで、全体の多くのコンテナを効率的に管理・運用することができます。
【参考】:Amazon Elastic Container Service 【参考】:Amazon Elastic Container Service とは
Amazon ECSの全体イメージ
ECSは、コンテナオーケストレーションのサービス、つまりコントロールプレーンの機能を提供します。継続的なデリバリー/インテグレーション(CI/CD)で必要な開発・テスト・インテグレーション・デプロイのサイクルを最適化し、AWSのリソースを有効利用して時間とコストを最適化します。
ECSの全体イメージ図は次の通りです。ECSはクラスター単位で管理されており、実行するコンテナはレジストリからロードします。各コンテナにはECSエージェントが稼働しており、タスクのスケジュールの指示にしたがって登録されたタスクを実行します。
Amazon ECSの特徴
Amazon ECSの特徴は、いくつか挙げられます。
1つ目は、AWSのマネジメントコンソールやECSコンソール、AWS CLIなどの標準インターフェースから操作できることです。他のAWSとのサービスを使用しながらコンテナを活用することができます。
2つ目は、リソースのスケーリング管理が充実していることが挙げられます。サーバーレスオプションとしてAWS Fargateが提供されており、ワークロード管理をリソースの使用状況や可用性の要件に基づいてスケーリングし、全体最適化を進めることができます。
3つ目は、コンテナ管理で重視するデプロイパイプラインを作成し、モニターすることで自動化されたフルマネージドのオーケストレーション環境を作成できることです。管理の工数を削減し、効率的な業務運用に役立てることができます。
【参考】:AWS Fargate
コンテナのメリット
コンテナは仮想マシンと異なり、システムリソースを十分にアプリに割り当てることができます。開発サイクルの短期化に対応でき、生産性向上により運用の工数を削減し、コスト削減にも貢献できます。加えて、コンテナベースの商用環境と同等の構成を開発から使用できるので、本番トラブルの削減にも繋がります。
Amazon ECSはフルマネージドクラウドサービスのため、新たなインフラのセットアップやコンテナ・クラスター管理ソフトウェアを導入せずに、すぐにサービスを開始できるメリットがあります。Dockerのスケジューリングやスケールアップ・スケールダウンも容易です。
コンテナのデメリット
仮想マシンはOSの仮想化を含んでいますが、コンテナは最低限のコードのみで実装されており、軽量でかつ最大限リソースを活用できます。その反面、使用するOSとの依存性が高くなり、OS環境が異なる場合に動作確認を要することがあります。
同様に、OSの機能を使うことにより、追加のセキュリティ対策が必要となります。
Amazon ECSでも、同様の考慮が求められます。対策として効率的な統合管理を可能にするためにDockerをサポートし、Docker Compose CLIを用いた統合管理も可能です。セキュリティ、ID、管理、ガバナンスのツールが統合されており、強固なセキュリティ対策を設けることができます。
Amazon ECSの料金
Amazon ECSは追加料金はかかりません。実際に使用するAmazon EC2のインスタンスやEBSボリュームなどに対してのみ、料金が発生します。料金モデルは、「AWS Fargate 起動タイプモデル」「Amazon EC2 起動タイプモデル」「Amazon ECS on AWS Outposts」があります。
【参考】:Amazon Elastic Container Service の料金
Amazon ECSの始め方
ここではAmazon ECSを使用するにあたって必要な、セットアップなどの作業や手順を解説していきます。また、関連するリソースの選び方や運用上有効なポイントなどについては「Amazon ECS のベストプラクティスガイド」にまとめられています。詳細は、以下のガイドをご確認ください。
【参考】:Amazon Elastic Container Service の開始方法 【参考】:Amazon ECS の開始方法 【参考】:Amazon ECS のベストプラクティスガイド
Amazon ECSのセットアップ
Amazon ECSを使用するために、事前セットアップを行います。すでにAmazon Elastic Compute Cloud (Amazon EC2)をお使いのユーザーは、ここでの手順は不要です。
具体的には、「AWSアカウントのサインアップ」「管理ユーザーの作成」などです。使用するには、「インスタンス接続の認証情報の作成」や「仮想プライベートクラウドの作成」を行います。すでにAmazon EC2をご利用されている場合は、追加設定せずに使用することができます。
「AWSアカウントのサインアップ」がまだの方は、次の図のようにAWSのウェブ画面右上の「今すぐ無料サインアップ」をクリックして手続きをしてください(①)。完了すると「コンソールにサインイン」が表示されます(②)。
サインアップ登録後に表示される「AWSマネジメントコンソールにお進みください」からも、利用することができます(③)。
【参考】:Amazon ECS を使用するようにセットアップする
Amazon ECSのコンソールを使う
Amazon ECSは、他のAWSサービス同様にコンソールやCLIから操作します。
次の図の通りAWSのウェブ画面右上の、「コンソールにサインイン」あるいは「アカウント」「AWSマネジメントコンソール」をクリックすると、コンソールのホーム画面が表示されます(①②③)。
表示されたコンソールから、コンテナの起動や停止、管理を行います。起動タイプを選択して Amazon ECSのクラスター環境を構築します。Dockerのコンテナとイメージを用意し、タスクを設定することで起動する準備が整います。
【参考】:Amazon EC2 によるコンソールの使用開始 【参考】:Amazon ECS コンポーネント
コンテナイメージを作成する
Amazon ECSで使用するコンテナは、Dockerイメージを用いて配布します。配布で使用するレジストリは、次の図の表示されている「Amazon ECR(Elastic Container Registry)」または「Docker Hub」を用います(①②)。
レジストリに登録(プッシュ)するイメージは、Dockerfileを作成したのちに”docker build”コマンドでDockerイメージを生成して、利用します。Dockerイメージの生成の手順は、通常のDockerと違いがありません。
【参考】:Amazon ECS で使用するコンテナイメージの作成 【参考】:Amazon Elastic Container Registry
Amazon ECSのコンソールを使ってクラスターを作成する
Amazon ECSのコンソールから最初に行うことはクラスターを作成することです。次の図をご確認ください。
ECSは、「サービス」「コンテナ」から「Elastic Container Service」を選択します(①②)。1度アクセスすると、トップ画面に「最近アクセスしたサービス」が表示されます。この表示リストから選択することもできます(③)。
クラスターの作成は、初期状態では次の図のように「今すぐ始める」をクリックして作成できます(①)。もしくはサイドメニューの「クラスター」をクリックして、クラスター画面を表示します(②③)。
実際の作成は、次の図をご覧ください。「クラスター」「クラスターの作成」から、「クラスター名」を設定し、VPCやサブネットを選択します(①②)。使用するコンピュートリソースであるコンテナ実行環境(データプレーン)は、サーバーレスのAWS Fargate、Amazon EC2インスタンス、ECS Anywareから選びます。
「作成」をクリックし、正常のクラスター作成が完了すると、クラスター画面に作成したクラスターが表示されます(③④)。登録後には、タスク、サービス、キャパシティがクラスターとして管理されます。
【参考】:AWS Fargate の Linux コンテナによるコンソールの使用開始 【参考】:AWS Fargate の Windows コンテナによるコンソールの使用開始 【参考】:コンソールを使用した Amazon EC2 起動タイプ用のクラスターの作成
Amazon ECSで Dockerコンテナを起動する
Amazon ECSでDockerコンテナを起動するには、タスクを実行します。そのため実行するタスク定義があらかじめ必要です。タスクの定義もAmazon ECSのコンソールやCLIから作業します。
タスク定義は次の図のように、「タスク定義」「新しいタスク定義の作成」から作成方法を指定して進めていきます(①②③)。
設定時には、使用するDockerイメージを指定し、各コンテナの CPUとメモリサイズを決定します。タスクの動作については、開始時の実行コマンド、ログの設定、コンテナが終了または失敗した場合の動作などを指定します。
タスク定義の作成が完了したら、登録クラスターからタスクを選択して「タスクの実行」で実行することができます。
詳細につきましては、以下のドキュメントをご確認ください。
【参考】:Amazon ECSの タスク定義 【参考】:Amazon ECS コンソールを使用したスタンドアロンタスクの実行 【参考】:Docker: Deploying Docker containers on ECS
AWSの入門ハンズオンを活用する
AWSでは、初心者向けのわかりやすい解説情報として動画を用いた「AWS Hands-on for Beginners」を実施してます。ここでは「Amazon ECS 入門ハンズオン」も公開しています。コンテナ初心者向けに、実際の操作を学ぶことができます。
「AWS クラウドサービス活用資料集」「AWS サービス別資料」に過去のドキュメントや動画などの情報も掲載されています。合わせてご確認ください。
【参考】:AWS Hands-on for Beginners: Amazon ECS 入門 【参考】:Amazon Elastic Container Service 入門ハンズオンを公開しました! 【参考】:AWS 初心者向けハンズオン 【参考】:AWS クラウドサービス活用資料集 【参考】:AWS サービス別資料
AWSのECSでコンテナを活用しましょう
AWSのECSは、信頼性と拡張性を重視したクラウドサービスであり、多様化するワークロードに対応します。柔軟な自動スケーリングによりコストの最適化を図ることができます。
継続的なデリバリー/インテグレーション(CI/CD)のサイクルを最適化し、短期間で最適な業務サービスが提供できるようになります。
ビジネスの多様化と変化が激しい今日のソリューションとして、AWSのECSはおすすめのサービスと言えます。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから