Amazon Elastic Container Service (Amazon ECS) により、Docker コンテナアプリケーションを AWS で簡単に実行、スケール、保護できます。コンテナとしてローカルでパッケージングされたアプリケーションは、Amazon ECS によって管理されるコンテナと同様にデプロイし、実行できます。Amazon ECS では、コンテナオーケストレーションおよびクラスター管理インフラストラクチャを自分でインストール、運用、スケールする必要がないため、コンテナ化されたアプリケーションのリソースニーズと可用性要件に集中することができます。

Amazon EC2 では、数百のインスタンス全体で 1 個から数千個までコンテナを拡張できます。アプリケーションの実行方法がこれまでより複雑になることはありません。アプリケーション、バッチジョブ、マイクロサービスなどをすべて実行できます。Amazon ECS では、インフラストラクチャの複雑さがすべて解消されるため、お客様はコンテナ化アプリケーションの設計、作成、実行に集中できます。

Amazon ECS では、AWS Fargate を使用することでインフラストラクチャを完全に管理できるため、コンテナのデプロイに集中できるようになります。または、Docker コンテナの作成と削除から詳細なクラスター情報の確認まで、基盤となるサーバークラスターを完全に確認および制御することもできます。独自のコンテナスケジューラを統合して使用することや、継続的インテグレーションおよび配信システムなどの既存のソフトウェア配信プロセスに Amazon ECS を接続することができます。

AWS Fargate のサポート

AWS Fargate テクノロジーは、Amazon ECS を使用することで利用可能になります。AWS Fargate により、Amazon EC2 インスタンスタイプの選択、クラスターのプロビジョニングとスケール、各サーバーのパッチ適用と更新を実施する必要がなくなります。ビンパッキングやホストスプレッドなどのタスク配置戦略を考える必要はなく、タスクは複数のアベイラビリティーゾーンを渡って自動的にバランスされます。Fargate がお客様に代わってコンテナのアベイラビリティーを管理します。アプリケーションの要件を定義し、コンソールまたは CLI で起動タイプとして Fargate を選択すると、コンテナの実行に必要なすべてのスケーリングとインフラストラクチャ管理が Fargate によって処理されます。

インフラストラクチャ全体で詳細なサーバーレベルの制御が必要な開発者の場合は、Amazon ECS の EC2 起動タイプを使用することで、サーバーのクラスターを管理し、サーバー上のコンテナ配置をスケジューリングできます。

開発

Docker のサポート

Amazon ECS では Docker がサポートされているため、Docker コンテナの実行および管理が可能になっています。ローカルでコンテナとしてパッケージされたアプリケーションは、設定を変更することなく Amazon ECS でデプロイして実行できます。

Windows コンテナとの互換性

Amazon ECS は、Windows コンテナの管理をサポートしています。Amazon ECS 向けに最適化された Windows Amazon マシンイメージ (AMI) により、インスタンスおよびコンテナの作成時間のパフォーマンスを強化することや、CPU、メモリ使用量、予約メトリクスを確認することが可能になります。

ローカル開発

Amazon ECS CLI を使用すると、ローカルでの開発を簡素化することができるため、Amazon ECS 上でコンテナを容易に設定して実行できます。Amazon ECS CLI では、マルチコンテナアプリケーションを定義し、運用するためのオープンソースツールである Docker Compose がサポートされています。開発用マシンでマルチコンテナアプリケーション定義に使用されたものと同じ Compose 定義を、実稼働環境にも適用できます。Amazon ECS CLI はオープンソースです。Amazon ECS CLI をダウンロードしてください。

リポジトリのサポート

Amazon ECS は、Docker Hub や Amazon Elastic Container Registry (Amazon ECR) といった、サードパーティーがホストする Docker イメージリポジトリやアクセス可能なプライベート Docker レジストリで使用できます。お客様がタスク定義でリポジトリを指定するだけで、Amazon ECS でアプリケーションに最適なイメージが取得されます。

管理

タスク定義

Amazon ECS を使用すると、タスク定義と呼ばれる宣言型の JSON テンプレートを使用してタスクを定義できます。タスク定義では、Docker のリポジトリとイメージ、メモリと CPU の要件、共有データボリューム、コンテナどうしのリンク方法といった、タスクに必要なコンテナを 1 つ以上指定できます。サービスに登録できる単一のタスク定義ファイルから必要な数だけタスクを起動できます。また、タスク定義ファイルを使用すると、アプリケーション仕様のバージョン管理を行うこともできます。

プログラムによる制御

Amazon ECS では、簡単な一連の API アクションでサービスを統合および拡張できます。この API アクションにより、クラスターの作成および削除、タスクの登録および登録解除、Docker コンテナの起動および終了、クラスターおよびクラスター内インスタンスの詳細なステータス情報の取得が可能です。Amazon ECS クラスターのプロビジョニング、タスク定義の登録、コンテナのスケジューリングに AWS CloudFormation を使用することもできます。

コンテナのデプロイメント

Amazon ECS を使用すると、コンテナを新しいバージョンに更新できます。アプリケーションのタスク定義を新しいバージョンに更新してアップロードすると、Amazon ECS スケジューラにより、更新されたイメージを使用して新しいコンテナが自動的に開始され、前のバージョンを実行しているコンテナは自動的に停止します。Amazon ECS では、コンテナは、関連する Application Load Balancer から自動的に登録および登録解除されます。

Blue/Green デプロイ

AWS CodeDeploy を使用した Blue/Green デプロイでは、アプリケーションの更新中のダウンタイムを最小限に抑えることができます。Amazon ECS サービスの新しいバージョンと古いバージョンを一緒に起動し、トラフィックを再ルーティングする前に新しいバージョンをテストすることができます。デプロイプロセスをモニタリングし、問題がある場合は迅速にロールバックすることもできます。

コンテナの自動復旧

Amazon ECS では、異常のあるコンテナが自動的に復旧され、アプリケーションをサポートするのに必要な数のコンテナを確実に使用できます。

スケジューリング

Amazon ECS には、リソースニーズ (CPU、RAM など) と可用性要件に基づいてクラスター全体にコンテナを配置するスケジューリングストラテジーが複数用意されています。利用可能なスケジューリングストラテジーを使用して、バッチジョブ、実行時間の長いアプリケーションやサービス、デーモンプロセスをスケジューリングできます。

タスクスケジューリング
Amazon ECS のタスクスケジューリングでは、バッチ処理ジョブなど、作業の実行と停止を含むプロセスを実行できます。タスクスケジューリングを使用したタスクの開始方法には、手動で行う方法、ジョブのキューから自動で行う方法、設定した時間間隔に基づいて行う方法があります。

サービススケジューリング
Amazon ECS のサービススケジューリングでは、ステートレスなサービスとアプリケーションを実行できます。このスケジューリングストラテジーでは、指定した数のタスクが常に実行され、失敗したタスクは再度開始されます。タスクを Elastic Load Balancing ロードバランサーに登録することや、実行中のタスクに対してユーザーが定義したヘルスチェックを実行することができます。

デーモンスケジューリング
Amazon ECS のデーモンスケジューリングでは、ECS クラスター内の選択した各インスタンスで同じタスクが自動的に実行されます。これにより、ログ記録、モニタリング、バックアップなど、サービスに共通の管理機能を担うタスクを簡単に実行できます。

Task Placement

Amazon ECS では、インスタンスタイプ、アベイラビリティーゾーン、ユーザーが定義するカスタム属性といった組み込みの属性に基づいて、EC2 インスタンスのクラスターへのタスクの配置方法をカスタマイズすることができます。environment=production のような属性を使用してリソースにラベルを付与したり、これらのリソースを検索するためにリスト API アクションを使用したりすることができます。また、RunTask および CreateService API アクションを使用して、これらのリソースにタスクをスケジューリングすることもできます。

Amazon ECS では、ビンパックや分散などの配置戦略を使用して、タスクの配置場所を詳細に定義することもできます。複数のポリシーを連鎖させることで、コードを記述することなく高度な配置機能を実現できます。

タスク配置ポリシーは、AWS Fargate 起動タイプでは適用されません。

ネットワークとセキュリティ

サービス検出

Amazon ECS は AWS Cloud Map と統合されているため、コンテナ化されたサービスを互いに簡単に検出して接続することができます。AWS Cloud Map は、クラウドリソース検出サービスです。Cloud Map では、アプリケーションリソースのカスタム名を定義して、動的に変化するこれらのリソースの更新された場所を管理できます。これにより、ウェブサービスで常にリソースの最新の場所が検出されるため、アプリケーションの可用性は向上します。

サービスメッシュ

サービスメッシュでは、アプリケーション内のマイクロサービスにおける通信方法を標準化することで、複雑なマイクロサービスアプリケーションを簡単に構築および実行できます。AWS App Mesh は、エンドツーエンドの可視性と高可用性を得るためにアプリケーションの一部を簡単に構成できるサービスです。App Mesh を使用するには、Envoy プロキシイメージを ECS タスク定義に追加します。App Mesh は、サービスメッシュ機能を提供するように、Envoy の設定を管理します。App Mesh は、提供された Envoy ブートストラップ構成で指定されたエンドポイントに、メトリクス、ログ、およびトレースをエクスポートします。App Mesh では、メッシュ対応のマイクロサービス間で、トラフィックルーティング、回路遮断、再試行などの制御を設定するための API を使用できます。

タスクネットワーキング

Amazon Elastic Container Service では、Docker ネットワーキングがサポートされており、Amazon VPC と統合してコンテナを分離できます。これにより、コンテナをその他のサービスや外部トラフィックと接続する方法をコントロールできます。Amazon ECS を使用すると、さまざまなユースケースを対象としたコンテナ用の 4 種類のネットワーキングモードから選択できます。

タスクネットワーキング/awsvpc
このモードでは、実行中の各 ECS タスクに専用の伸縮自在なネットワーキングインターフェイスが割り当てられるため、VPC 内のコンテナで EC2 インスタンスのようなフルネットワーキング機能を利用できます。

ブリッジ
このモードでは、ローカルの仮想ネットワーク内のホストで実行しているすべてのコンテナを接続する Linux ブリッジが作成されます。これには、ホストのデフォルトネットワーク接続でアクセスできます。

ホスト
このモードでは、ホストのネットワークスタックにコンテナが直接追加され、分離せずにホストのネットワークにコンテナが公開されます。

なし
このモードでは、コンテナの外部ネットワーキングが無効になります。

ロードバランシング

Amazon ECS は Elastic Load Balancing と統合されているため、ユーザーは Application Load Balancer または Network Load Balancers を使用して、コンテナ全体でトラフィックを分散できます。タスク定義とロードバランサーを使用するよう指定すると、Amazon ECS では、ロードバランサーに対するコンテナの追加と削除が自動的に実行されます。タスク定義で動的ポートを指定できます。これにより、Amazon EC2 インスタンスで予定されている場合に、コンテナに未使用のポートが提供されます。また、パスベースのルーティングを使用して、複数のサービスでロードバランサーを共有できます。

セキュリティ

Amazon ECS では、それぞれの ECS タスクに IAM ロールを指定できます。これにより、Amazon ECS コンテナインスタンスの役割を最小限に抑え、「最小権限」アクセスポリシーを遵守しながら、インスタンスのロールやタスクのロールを個別に管理することができます。また、Amazon CloudWatch Logs を使用して、タスクが割り当てられている IAM ロールを確認することもできます。

モニタリングとログ記録

モニタリング

Amazon ECS では、Amazon CloudWatch を使用して、コンテナおよびクラスターをモニタリングする機能を提供しています。タスク定義、サービスまたはクラスターごとのグループで、実行タスクの CPU とメモリ使用の平均値と合計量をモニタリングできます。コンテナやクラスターのスケールを拡張または縮小する際に、CloudWatch アラームを設定して警告することができます。

ログ記録

Amazon ECS では、すべての Amazon ECS API コールを記録し、そのログファイルが AWS CloudTrail を通じて配信されるよう設定できます。記録される情報には、API 呼び出し元の ID、API コールの時間、API 呼び出し元のソース IP アドレス、リクエストのパラメータ、および Amazon ECS から返された応答の要素が含まれます。CloudTrail により、AWS マネジメントコンソール、AWS SDK、AWS CLI から行われた API コールの履歴が提供されます。これにより、セキュリティ分析、リソース変更履歴、コンプライアンスの監査が可能になります。

Amazon ECS 料金の詳細

料金ページを見る
始める準備はできましたか?
サインアップ
ご不明な点がおありですか?
お問い合わせ