Amazon Elastic Container Service のよくある質問
全般
Q: Amazon Elastic Container Service とは何ですか?
Amazon Elastic Container Service (ECS) は、非常にスケーラブルで高性能なコンテナ管理サービスで、Docker コンテナに対応しており、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのマネージドクラスターでアプリケーションを簡単に実行することができます。Amazon ECS を使用すると、自社でクラスター管理インフラストラクチャのインストール、運用、スケールを行う必要がなくなります。簡単な API 呼び出しを使用して、コンテナ対応アプリケーションの起動と終了、クラスターの完了状態のクエリ、多くの使い慣れた機能 (セキュリティグループ、Elastic Load Balancing、Amazon Elastic Block Store (EBS) ボリューム、Identity Access Management (IAM) ロールなど) へのアクセスを実行できます。Amazon ECS を使用することで、リソースニーズと可用性要件に基づいて、クラスター全体のコンテナの配置をスケジューリングできます。ビジネスまたはアプリケーション固有の要件を満たすために、独自のスケジューラまたはサードパーティー製のスケジューラを統合することもできます。
Q: Amazon ECS を使用する利点は何ですか?
Amazon ECS を使用すると、自社のクラスター管理インフラストラクチャのインストール、運用、スケールを行う必要がなくなるため、アプリケーションの構成要素として簡単にコンテナを利用できます。Amazon ECS では、実行時間の長いアプリケーション、サービス、およびバッチプロセスを Docker コンテナを使用してスケジューリングできます。Amazon ECS は、アプリケーションの可用性を維持し、アプリケーションの容量要件を満たすようにコンテナをスケールアップまたはスケールダウンできます。Amazon ECS には、Elastic Load Balancing、EBS ボリューム、Amazon Virtual Private Cloud (VPC)、および IAM などの使い慣れた機能が統合されています。簡単な API を使用して、独自のスケジューラーを組み込んで使用したり、既存のソフトウェア配信プロセスに Amazon ECS を接続したりできます。
Q: Amazon ECS の料金体系について教えてください。
Amazon ECS は追加料金なしで使用できます。アプリケーションの保存や実行のために作成した AWS リソース (Amazon EC2 インスタンス、EBS ボリュームなど) に対してのみ、料金が発生します。実際に使用した分に対してのみ料金が発生します。最低料金や前払いの義務はありません。
Q: Amazon ECS と AWS Elastic Beanstalk はどのように異なるのですか?
AWS Elastic Beanstalk は、お客様がウェブアプリケーション、およびウェブサービスのデプロイとスケーリングを簡単に行えるようにするためのアプリケーション管理プラットフォームです。AWS Elastic Beanstalk を使用すると、ユーザーは、構成要素 (たとえば、EC2、Amazon RDS、Elastic Load Balancing、AWS Auto Scaling、Amazon CloudWatch など) のプロビジョニング、アプリケーションのデプロイ、健全性モニタリングを意識せずに済むため、コードの記述に集中できます。ユーザーは、デプロイするコンテナイメージ、CPU とメモリの要件、ポートマッピング、およびコンテナリンクを指定するだけです。
Amazon ECS クラスターのプロビジョニング、負荷分散、自動スケーリング、モニタリング、クラスター全体のコンテナ配置といった詳細はすべて Elastic Beanstalk によって自動的に処理されます。コンテナの利点を活かし、開発環境から本稼働環境まで、コンテナイメージをアップロードするだけでアプリケーションを容易にデプロイできるようにしたい場合、Elastic Beanstalk は理想的なサービスです。カスタムのアプリケーションアーキテクチャをより細かいレベルで制御する必要がある場合は、Amazon ECS を直接使用できます。
Q: Amazon ECS と AWS Lambda はどのように異なるのですか?
Amazon ECS は高いスケーラビリティを備えた Docker コンテナ管理サービスで、Docker コンテナで実行する分散型アプリケーションを実行および管理できます。AWS Lambda はイベント駆動型のタスクのコンピューティングサービスで、データの変更、ウェブサイトのクリック、AWS のその他のサービスからのメッセージといった "イベント" に対応して、お客様のコードが実行されます。お客様がコンピューティングインフラストラクチャを管理する必要はありません。
Amazon ECS の使用
Q: Amazon ECS は他のコンテナタイプをサポートしていますか?
現時点で、Amazon ECS によってサポートされているコンテナプラットフォームは、Docker だけです。
Q: コンテナを開始したいのですが、なぜタスクを開始しなければならないのですか?
Docker はアプリケーションを個々の構成要素まで分割することを推奨しており、Amazon ECS はこのパターンに最適化されています。タスクによって、同じ場所に (または同じ配置決定の一環として) 配置したい一連のコンテナ、そのプロパティ、リンク方法を定義できます。タスクには Amazon ECS で配置を決定するために必要なすべての情報が含まれています。単一のコンテナを起動するには、タスクの定義に 1 つのコンテナの定義のみを含める必要があります。
Q: Amazon ECS はアプリケーションとサービスをサポートしますか?
はい。Amazon ECS サービススケジューラでは、実行時間の長いアプリケーションやサービスを管理できます。サービススケジューラを使用すると、アプリケーションの可用性を維持し、アプリケーションの容量要件を満たすようにコンテナをスケールアップまたはスケールダウンできます。サービススケジューラでは、Elastic Load Balancing (ELB) を使用して、各コンテナのトラフィックを分散させることができます。Amazon ECS は、関連付けられたロードバランサーに対して、自動的にコンテナの登録と登録解除を行います。
また、サービススケジューラは、健全ではなくなった (ELB 健全性チェックに失敗するなど) コンテナや、実行を停止するコンテナを自動的に復旧することで、アプリケーションをサポートする、健全なコンテナの数が目的のレベルに維持されるようにします。
サービスで実行するコンテナの数を変更することで、アプリケーションをスケールアップまたはスケールダウンできます。アプリケーションを更新するには、その定義を変更するか、新規のイメージを使用します。スケジューラーは、新しい定義を使用して新しいコンテナを自動的に起動し、以前のバージョンを実行しているコンテナ (ELB を使用している場合は、ELB 接続が使い尽くされるのを待機しているコンテナ) を停止します。
Q: Amazon ECS では、ダイナミックポートのマッピングがサポートされていますか?
はい。Amazon ECS を ELB サービスの Application Load Balancer (ALB) に関連付けることが可能です。ALB では、インスタンスポートのセットが含まれるターゲットグループがサポートされています。ECS タスク定義でダイナミックポートを指定できます。これにより、EC2 インスタンスで予定されている場合に、コンテナに未使用のポートが提供されます。ECS スケジューラにより、このポートを使用する Application Load Balancer のターゲットグループにタスクが自動的に追加されます。
Q: Amazon ECS はバッチジョブをサポートしていますか?
はい。Amazon ECS Run タスクを使用すれば、1 度に 1 つ以上のタスクを実行できます。Run タスクは、CPU、メモリ、ポートなどのタスクの要件を満たすインスタンス上でタスクを開始します。
Q: Amazon ECS で独自のスケジューラーを使用できますか?
ECS には Blox (コンテナの管理とオーケストレーションのためのオープンソースプロジェクトのコレクション) が用意されています。Blox では、Amazon ECS からのイベントの使用、クラスター状態のローカルでの保存、API を使用したローカルデータストアのクエリを簡単に実行できます。Blox には、クラスター状態サーバーの使用方法のリファレンスとして使用できるデーモンスケジューラーも含まれています。詳細については、Blox GitHub ページを参照してください。
Q: Amazon Elastic Container Registry からプルするようコンテナインスタンスを設定するには、どうしたらよいですか?
Amazon ECR は Amazon ECS と統合されているので、Amazon ECS で実行中のアプリケーションのコンテナイメージの保存、実行、管理を簡単に行えます。必要な操作は、タスク定義で Amazon ECR リポジトリを指定して、インスタンスに AmazonEC2ContainerServiceforEC2Role をアタッチすることのみです。後は、Amazon ECS により、アプリケーションに適切なイメージが取得されます。
Q: Amazon ECS で AWS Fargate を使用するか、ECS のみを使用するかはどのように選択すればよいですか?
Amazon ECS は Fargate のテクノロジーをサポートしているため、AWS Fargate をお選びいただくと、Amazon EC2 インスタンスのプロビジョニングや管理をせずにコンテナを起動できます。AWS Fargate は、AWS でコンテナを起動して実行する最も簡単な方法です。コンプライアンスやガバナンスの要件をサポートするために EC2 インスタンスの制御性の向上が必要、またはより幅広いカスタマイズオプションが必要なお客様は、Fargate を使用せずに ECS を使用して EC2 インスタンスを起動してください。
セキュリティとコンプライアンス
Q: Amazon ECS は、異なる顧客が所有するコンテナをどのようにして分離するのですか?
Amazon ECS は、顧客によって管理されている Amazon EC2 インスタンスで、または AWS Fargate を使用して、コンテナを実行するスケジューリングを行い、EC2 利用者向けに用意されているのと同じ分離の管理とコンプライアンスの設定を基盤として構築されています。コンピュートインスタンスはお客様が指定した IP アドレス範囲で Virtual Private Cloud (VPC) 内に配置されます。インターネットに公開されるインスタンスと、プライベートな状態のままにするインスタンスを決定します。
- EC2 インスタンスは、IAM ロールを使用して ECS サービスにアクセスします。
- ECS タスクは、IAM ロールを使用してサービスおよびリソースにアクセスします。
- セキュリティグループとネットワーク ACL により、インスタンスを出入りするインバウンドとアウトバウンドのネットワークアクセスを制御できます。
- 業界標準の暗号化 IPsec VPN 接続を使用して、既存の IT インフラストラクチャと VPC のリソースを結びつけることができます。
- EC2 リソースは専用インスタンスとしてプロビジョニングできます。ハードウェア専有インスタンスは特定の顧客専用のハードウェアで実行される Amazon EC2 インスタンスで、これにより分離が強化されます。
Q: 自分のコンテナインスタンスにセキュリティ設定や分離フレームワークを追加適用できますか?
はい。 Amazon EC2 のお客様として、お客様はコンテナインスタンスのオペレーティングシステム (OS) へのルートアクセス権を持っています。OS のセキュリティ設定の所有権を取得することができ、モニタリング、パッチ管理、ログ管理、ホスト侵入検出などのセキュリティ機能のためのソフトウェアコンポーネントを追加で設定することができます。
Q: 複数のコンテナインスタンスを異なるセキュリティ設定で使用できますか? また、個々のタスクを異なる環境に分離できますか?
はい。好みのツールを使用して、異なるコンテナインスタンスを設定できます。Amazon ECS では、クラスターの構造やターゲット指定起動によって、異なるコンテナインスタンスでのタスク配置を管理できます。
Q: Amazon ECS では、プライベートまたは内部ソースから Docker イメージを取得できますか?
はい。VPC 内のプライベート Docker イメージレジストリ、または Amazon Elastic Container Registry (ECR) のような VPC 外でアクセスできるレジストリにアクセスするようコンテナインスタンスを設定できます。
Q: ECS タスクに対して IAM ロールをどのように設定すればよいですか?
まず、Amazon EC2 Container Service Task Role サービスロールを使用し、必要なアクセス権限を使用するポリシーをアタッチして、タスク用の IAM ロールを作成する必要があります。新規のタスク定義またはタスク定義のリビジョンを作成するときには、[Task Role] ドロップダウンから選択するか、JSON 形式で保存された taskRoleArn を使用してロールを指定できます。
Q: Amazon ECS はどのコンプライアンスプログラムに従っていますか?
Amazon ECS は、PCI DSS Level 1、ISO 9001、ISO 27001、ISO 27017、ISO 27018、SOC 1、SOC 2、SOC 3、HIPAA 適合の基準を満たしています。
詳細については、コンプライアンスのページを参照してください。
Q: Amazon ECS は、保護医療情報 (PHI) やその他の HIPAA 規制対象ワークロードに使用できますか?
はい。Amazon ECS は HIPAA 対応サービスです。AWS と Business Associate Addendum (BAA) を締結している場合は、Amazon ECS を使用して、AWS Fargate 起動タイプあるいは Amazon EC2 コンピューティングインスタンス上にデプロイされている Docker コンテナを使って、暗号化されている Protected Health Information (PHI) を処理することができます。
詳細については、HIPAA コンプライアンスのページを参照してください。PHI の処理、保存、転送を予定しているものの、まだ AWS との BAA を締結していない場合、詳細についてお問い合わせください。
Q: Amazon ECS を使用して、米国政府の規制対象ワークロードを扱うことや、機密扱いの管理された非格付け情報 (CUI) を処理することはできますか?
はい。AWS GovCloud (米国) リージョンを使用すれば、Amazon ECS で管理されているコンテナとクラスタは、自身のコンテナを使って、機密扱いのデータおよび規制対象ワークロードの要件を満たすことができます。
詳細については、AWS GovCloud のページを参照してください。
サービスレベルアグリーメント (SLA)
Q: Amazon ECS の SLA は何を保証していますか?
Compute SLA は、Amazon ECS に最低 99.99% の月間稼働率を保証しています。
Q: SLA サービスクレジットの資格を有しているかどうかは、どうすれば分かりますか?
同じリージョン内でタスクを実行している複数のアベイラビリティーゾーンで、毎月の課金期間中の稼働率が 99.99% 未満なら、Compute SLA 対象の Amazon ECS に対する SLA クレジットの資格があります。
SLA の利用規約に関するすべての詳細、およびクレジット請求方法の詳細については、Compute SLA の詳細ページを参照してください。
Amazon ECS の開始方法