次の図は、アプリケーションのライフサイクルと Amazon ECS コンポーネントとの連携を示しています。

アプリケーションをコンテナ上で実行できるように設計する必要があります。コンテナとは、ソフトウェアアプリケーションの実行に必要なものをすべて保持する、標準化されたソフトウェア開発の単位です。これには、関連するコード、ランタイム、システムツール、およびシステムライブラリが含まれます。コンテナは、イメージと呼ばれる読み取り専用テンプレートから作成されます。イメージは通常 Dockerfile から構築されます。Dockerfile は、コンテナを構築するための手順を含むプレーンテキストファイルです。これらのイメージは、Amazon ECR など、構築された後にダウンロード可能な場所であるレジストリに保存されます。
イメージを作成して保存した後、Amazon ECS のタスク定義を作成します。タスク定義はアプリケーションのブループリントです。これは、アプリケーションを形成するパラメータと 1 つ以上のコンテナを記述する JSON 形式のテキストファイルです。例えば、オペレーティングシステムのパラメータ、使用するコンテナ、アプリケーションで開くポート、タスクのコンテナで使用するデータボリュームなどの指定に使用できます。タスク定義で使用できる特定のパラメータは、お客様の特定のアプリケーションのニーズによって異なります。
タスク定義を定義したら、それをサービスまたはタスクとしてクラスターにデプロイします。クラスターは、クラスターに登録されているキャパシティインフラストラクチャ上で実行されるタスクまたはサービスを論理的にグループ化したものです。
タスクはクラスター内のタスク定義のインスタンス化です。スタンドアロンタスクを実行することもできますし、サービスの一部としてタスクを実行することもできます。Amazon ECS サービスを使用すると、Amazon ECS クラスターで必要な数のタスクを同時に実行して維持できます。仕組みとしては、タスクがいずれかの理由で失敗または停止した場合に、Amazon ECS サービススケジューラがタスク定義に基づいて別のインスタンスを起動することによって動作します。これは、それを置き換え、サービス内の必要な数のタスクを維持するために行われます。
コンテナエージェントは Amazon ECS クラスター内の各コンテナインスタンス上で実行されます。エージェントは、現在実行中のタスクとリソースのコンテナの使用率に関する情報を Amazon ECS に送信します。Amazon ECS からのリクエストを受信するたびに、タスクを開始および停止します。
タスクまたはサービスをデプロイしたら、次のいずれかのツールを使用してデプロイとアプリケーションを監視できます。
-
CloudWatch
-
Runtime Monitoring
容量
容量は、コンテナが実行されるインフラストラクチャです。以下のオプションが利用できます。
-
Amazon EC2 インスタンス
-
サーバーレス (AWS Fargate)
-
オンプレミス仮想マシン (VM) またはサーバー
クラスターを作成する際、インフラストラクチャを指定します。タスク定義を登録する際、インフラストラクチャタイプも指定します。タスク定義では、インフラストラクチャを「起動タイプ」と呼びます。スタンドアロンタスクを実行する、またはサービスをデプロイする際にも起動タイプを使用します。起動タイプのオプションについては、Amazon ECS 起動タイプ を参照してください。
ネットワーク
AWS リソースはサブネットに作成されます。EC2 インスタンスを使用する場合、Amazon ECS はクラスターの作成時に指定したサブネットでインスタンスを起動します。タスクはインスタンスのサブネットで実行されます。Fargate またはオンプレミス仮想マシンの場合は、タスクを実行するとき、またはサービスを作成するときにサブネットを指定します。
アプリケーションに応じて、サブネットはプライベートサブネットでもパブリックサブネットでもよく、サブネットは次の AWS リソースのどれにあってもかまいません。
-
アベイラビリティーゾーン
-
ローカルゾーン
-
Wavelength Zone
-
AWS リージョン
-
AWS Outposts
詳細については、「共有サブネット、Local Zones、および Wavelength Zones の Amazon ECS アプリケーション」または「AWS OutpostsのAmazon Elastic Container Service」を参照してください。
次のいずれかの方法を使用して、アプリケーションをインターネットに接続できます。
-
インターネットゲートウェイを持つパブリックサブネット
大量の帯域幅や最小のレイテンシーを必要とするパブリックアプリケーションがある場合は、パブリックサブネットを使用してください。該当するシナリオには、ビデオストリーミングやゲームサービスが含まれます。
-
NAT ゲートウェイを持つプライベートサブネット
外部からの直接アクセスからコンテナを保護するには、プライベートサブネットを使用してください。該当するシナリオには、支払い処理システムや、ユーザーデータとパスワードを格納するコンテナなどがあります。
AWS PrivateLink
トラフィックをパブリックインターネットに公開することのない、VPC、AWS サービス、オンプレミスネットワークの間のプライベート接続を提供するには、AWS PrivateLink を使用してください。
機能アクセス
Amazon ECS アカウント設定を使用して、次の機能にアクセスできます。
-
Container Insights
CloudWatch Container Insights は、コンテナ化されたアプリケーションおよびマイクロサービスのメトリクスとログを収集、集約、要約します。このメトリクスには、CPU、メモリ、ディスク、ネットワークなどのリソース使用率が含まれます。
-
awsvpc
トランキング特定の EC2 インスタンスタイプでは、新しく起動したコンテナインスタンスで追加のネットワークインターフェイス (ENI) を使用できます。
-
タグ付け認可
ユーザーには、リソースを作成するアクションの許可が必要です (
ecsCreateCluster
など)。リソース作成アクションでタグが指定されている場合、AWS はecs:TagResource
アクションに対して追加の認可を実行して、ユーザーまたはロールがタグを作成するための許可を持っているかどうかを確認します。 Fargate FIPS-140 コンプライアンス
Fargate は、機密情報を保護する暗号モジュールのセキュリティ要件を指定する連邦情報処理標準 (FIPS-140) をサポートしています。これは現在の米国およびカナダの政府標準であり、Federal Information Security Management Act (FISMA) または Federal Risk and Authorization Management Program (FedRAMP) への準拠が要求されるシステムに適用されます。
-
Fargate タスクの廃止時間の変更
Fargate タスクが廃止されるまでの待機時間を設定できます。
-
デュアルスタック VPC
タスクが IPv4、IPv6、またはその両方を介して通信できるようにします。
-
Amazon リソースネーム (ARN) 形式
タグ付け認可などの特定の機能には、新しい Amazon リソースネーム (ARN) 形式が必要です。
詳しくは、「アカウント設定による Amazon ECS 機能へのアクセス」を参照してください。
IAM ロール
IAM ロールは、特定の許可があり、 アカウントで作成できる IAM アイデンティティです。Amazon ECS では、コンテナやサービスなどの Amazon ECS リソースにアクセス許可を付与するロールを作成できます。
Amazon ECS の一部の機能にはロールが必要です。詳しくは、「Amazon ECS の IAM ロール」を参照してください。
ロギング
ログ記録およびモニタリングは、Amazon ECS ワークロードの信頼性、可用性、パフォーマンスを維持する上で重要な要素です。以下のオプションが利用できます。
-
Amazon CloudWatch ログ- ログを Amazon CloudWatch にルーティングする
-
Amazon ECS 用 FireLens - ログを AWS サービスまたは AWS Partner Network の宛先にルーティングして、ログの保存と分析を行います。AWS Partner Network は、プログラム、専門知識、リソースを活用して顧客向けサービスの構築、マーケティング、販売を行うパートナーのグローバルコミュニティです。