Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Amazon ECS コンテナインスタンス

Amazon ECS コンテナインスタンスは、Amazon ECS コンテナエージェントを実行していて、クラスターに登録されている Amazon EC2 インスタンスです。EC2 起動タイプを使用して Amazon ECS でタスクを実行すると、タスクはアクティブなコンテナインスタンスに配置されます。

注記

Fargate 起動タイプを使用するタスクは、AWS が管理するインフラストラクチャ上にデプロイされるため、このトピックは適用されません。

コンテナインスタンスの概念

  • コンテナインスタンスは、Amazon ECS コンテナエージェントを実行していれば、いずれかのクラスターに登録できます。Amazon ECS-optimized AMI を使用している場合、エージェントはすでにインストールされています。別のオペレーティングシステムを使用するには、エージェントをインストールします。詳細については、「Amazon ECS コンテナエージェント」を参照してください。

  • Amazon ECS コンテナエージェントは、お客様に代わって Amazon ECS を呼び出すため、起動するコンテナインスタンスには、アカウントに認証されて必要なリソースに対するアクセス許可を付与する IAM ロールが必要です。詳細については、「Amazon ECS コンテナインスタンス IAM ロール」を参照してください。

  • タスクに関連付けられたコンテナのいずれかに外部接続が必要な場合は、ネットワーク Amazon ECS コンテナインスタンスのポートにネットワークポートをマッピングして、それらのインスタンスがインターネットから到達可能になるようにできます。コンテナインスタンスのセキュリティグループでは、公開するポートへの受信アクセスを許可する必要があります。詳細については、Amazon VPC 入門ガイド の「セキュリティグループの作成」を参照してください。

  • コンテナインスタンスを VPC 内で起動することを強くお勧めします。これは、Amazon VPC がネットワークをより詳細に制御し、より広範な設定機能を提供するためです。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 と Amazon Virtual Private Cloud」を参照してください。

  • コンテナインスタンスは、Amazon ECS サービスエンドポイントと通信するためのアクセス権限を必要とします。この操作は、インターフェイス VPC エンドポイントを通じて、またはパブリック IP アドレスを持つコンテナインスタンスを通じて実行することができます。

    インターフェイス VPC エンドポイントの詳細については、Amazon Elastic Container Service Developer Guideの「Amazon ECS インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。

    インターフェイス VPC エンドポイントを設定しておらず、コンテナインスタンスにパブリック IP アドレスがない場合、ネットワークアドレス変換 (NAT) を使用してこのアクセスを提供する必要があります。詳細については、の「NAT ゲートウェイ」およびこのガイドの「Amazon VPC ユーザーガイド」および「HTTP プロキシ設定」を参照してください。詳細については、「Tutorial: Creating a VPC with Public and Private Subnets for Your Clusters」を参照してください。

  • コンテナインスタンス用に選択する Amazon EC2 インスタンスのタイプによって、クラスターで使用できるリソースが決まります。Amazon EC2 は、さまざまなインスタンスタイプが用意されており、タイプごとに、タスクの実行に使用できる CPU、メモリ、ストレージ、ネットワークキャパシティーが異なります。詳細については、「Amazon EC2 インスタンス」を参照してください。

  • 各コンテナインスタンスに、それぞれに固有の状態情報がコンテナインスタンスにローカルで保存され、Amazon ECS にも保存されているため、以下のような制限があります。

    • あるクラスターからインスタンスを登録解除し、別のクラスターに再登録しないでください。コンテナインスタンスリソースを再配置するには、1 つのクラスターからコンテナインスタンスを終了し、新しいクラスターで最新の Amazon ECS-optimized Amazon Linux 2 AMI で新しいコンテナインスタンスを起動することをお勧めします。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「インスタンスの削除」および「Amazon ECS コンテナインスタンスの起動」を参照してください。

    • コンテナインスタンスを停止してそのインスタンスタイプを変更することはできません。代わりに、コンテナインスタンスを終了し、必要なクラスター内の最新の Amazon ECS-optimized Amazon Linux 2 AMI で、必要なサイズの新しいコンテナインスタンスを起動することをお勧めします。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「インスタンスの削除」およびこのガイドの「Amazon ECS コンテナインスタンスの起動」を参照してください。

コンテナインスタンスのライフサイクル

Amazon ECS コンテナエージェントがインスタンスをクラスターに登録すると、コンテナインスタンスのステータスは ACTIVE、エージェントの接続ステータスは TRUE としてレポートされます。このコンテナインスタンスはタスクの実行リクエストを受けることができます。

Amazon ECS コンテナインスタンスを停止した (終了はしない) 場合、ステータスは ACTIVE のままになりますが、エージェント接続ステータスは数分以内に FALSE に移行します。コンテナインスタンスで実行されていたタスクはすべて停止します。コンテナインスタンスを再び開始すると、コンテナエージェントは Amazon ECS サービスと再接続し、インスタンスでタスクを再実行できるようになります。

重要

コンテナインスタンスを停止して開始するか、再起動した場合、以前の一部のバージョンの Amazon ECS コンテナエージェントは、元のコンテナインスタンス ID を登録解除せずに、そのインスタンスを再登録します。この場合、Amazon ECS では、クラスター内のコンテナインスタンスが実際の数より多く一覧表示されます。(同じ Amazon EC2 インスタンス ID に対してコンテナインスタンス ID が重複している場合は、重複しているコンテナインスタンスのうち、インスタンスのステータスが ACTIVE でエージェントの接続ステータスが FALSE になっているものを安全に登録解除できます。) この問題は、最新のバージョンの Amazon ECS コンテナエージェントで修正されています。最新バージョンへの更新の詳細については、「Amazon ECS コンテナエージェントの更新」を参照してください。

コンテナインスタンスのステータスを DRAINING に変更すると、新しいタスクはそのコンテナインスタンスに配置されません。そのコンテナインスタンスで実行されているサービスタスクは、可能な場合は削除され、システム更新を実行できるようになります。詳細については、「コンテナインスタンスのドレイン」を参照してください。

コンテナインスタンスを登録解除または終了した場合、コンテナインスタンスのステータスは直ちに INACTIVE に変わり、コンテナインスタンスを一覧表示しても、そのコンテナインスタンスはレポートされなくなります。ただし、終了後 1 時間は、コンテナインスタンスの内容を表示できます。1 時間後、インスタンスの内容は表示できなくなります。

アカウントのインスタンスのロールを確認する

Amazon ECS コンテナエージェントで、Amazon ECS API への呼び出しを実行します。エージェントを実行するコンテナインスタンスには、エージェントがユーザーに属していることをサービスに伝える IAM ポリシーとロールが必要です。

ほとんどの場合、コンソールの初回実行時には、Amazon ECS インスタンスのロールが自動的に作成されます。以下の手順を使用して、アカウントにすでに Amazon ECS サービスロールがあるかどうかを確認できます。

IAM コンソールで ecsInstanceRole を確認するには

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. ロールのリストで ecsInstanceRole を検索します。ロールが存在する場合は、ロールを作成する必要はありません。ロールが存在しない場合は、「Amazon ECS コンテナインスタンス IAM ロール」の手順に従ってロールを作成します。