アプリケーションの設計 - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アプリケーションの設計

アプリケーションのタスク定義を作成して、アプリケーションを設計します。タスク定義には、アプリケーションに関する情報を定義する以下のパラメータが含まれています。

  • 使用する起動タイプ。タスクがホストされるインフラストラクチャを決定します。

    EC2 起動タイプを使用する場合は、インスタンスタイプも選択します。GPU などの一部のインスタンスタイプでは、追加のパラメータを設定する必要があります。詳細については、「タスク定義のユースケース」を参照してください。

  • コンテナイメージ。アプリケーションコードと、アプリケーションコードの実行に必要なすべての依存関係を保持します。

  • タスク内のコンテナに使用するネットワークモード

    ネットワークモードは、タスクがネットワーク経由でどのように通信するかを決定します。

    EC2 インスタンスで実行されるタスクには複数のオプションがありますが、 awsvpcネットワークモードを使用することをお勧めします。awsvpc ネットワークモードでは、アプリケーションが VPCs 内の相互に通信する方法や、他の サービスと通信する方法をより細かく制御できるため、コンテナネットワークが簡素化されます。

    Fargate で実行されるタスクでは、 awsvpcネットワークモードのみを使用できます。

  • タスクに使用するログ記録構成。

  • タスク内のコンテナで使用されるデータボリューム。

タスク定義パラメータの完全なリストについては、「タスク定義パラメータ」を参照してください。

タスク定義を作成する際には、次のガイドラインに従ってください。

  • 各タスク定義ファミリーは 1 つのビジネス目的にのみ使用してください。

    複数の種類のアプリケーションコンテナを同じタスク定義にグループ化する場合、それらのコンテナを個別にスケールすることはできません。例えば、ウェブサイトと API の両方が同じレートでスケールアウトする必要がある可能性はほとんどありません。トラフィックが増加すると、API コンテナとは異なる数のウェブコンテナが必要になります。これらの 2 つのコンテナが同じタスク定義にデプロイされる場合、各タスクは同じ数のウェブコンテナと API コンテナを実行します。

  • 各アプリケーションのバージョンを、タスク定義ファミリー内のタスク定義リビジョンと一致させます。

    タスク定義ファミリー内では、各タスク定義リビジョンを、特定のコンテナイメージの設定のポイントインタイムスナップショットとみなします。これは、コンテナがアプリケーションコードの特定のバージョンを実行するために必要なすべてもののスナップショットであるのと似ています。

    アプリケーションコードのバージョン、コンテナイメージタグ、およびタスク定義リビジョンの間に one-to-one マッピングがあることを確認します。一般的なリリースプロセスには、git commit SHA でタグ付けされたコンテナイメージに変換される git commit が含まれます。その後、そのコンテナイメージタグは、独自の Amazon ECS タスク定義リビジョンを取得します。最後に、Amazon ECS サービスが更新され、新しいタスク定義リビジョンをデプロイするように指示されます。

  • タスク定義ファミリーごとに異なる IAM ロールを使用します。

    各タスク定義を独自の IAM ロールで定義します。この推奨事項は、各ビジネスコンポーネントに独自のタスク定義ファミリーを提供するという推奨事項と合わせて実行される必要があります。これらのベストプラクティスの両方を実装することで、各サービスが AWS アカウント内のリソースに対して持つアクセスの量を制限できます。例えば、パスワードデータベースに接続するためのアクセス権を認証サービスに付与できます。同時に、注文サービスのみがクレジットカードの支払情報にアクセスできるようにすることもできます。