コンソールを使用したタスク定義の作成 - Amazon Elastic Container Service

コンソールを使用したタスク定義の作成

Amazon ECS コンソールを使用して、タスク定義を作成します。タスク定義の作成プロセスをできるだけ簡単にするために、コンソールには、以下で説明する多くの選択肢に対するデフォルトの選択肢があります。コンソール内のほとんどのセクションには、詳細なコンテキストを提供するヘルプパネルもあります。

タスク定義は、コンソールを使用するか、JSON ファイルを編集して作成できます。

JSON 検証

Amazon ECS コンソールの JSON エディタは、JSON ファイル内で以下を検証します。

  • このJSON ファイルは有効です

  • ファイルに外部キーは含まれていません

  • ファイルに familyName パラメータが含まれています

  • containerDefinitions の下に少なくとも 1 つのエントリがあります

AWS CloudFormation スタック

次の動作は、2023 年 1 月 11 日以前に新しいコンソールで作成されたタスク定義に適用されます。

タスク定義の作成時、Amazon ECS コンソールは、名前が「ECS-Console-V2-TaskDefinition-」で始まる CloudFormation スタックを自動的に作成します。AWS CLI または SDK を使用してタスク定義を登録解除する場合は、手動でタスク定義スタックを削除する必要があります。詳細については、「AWS CloudFormation ユーザーガイド」の「スタックの削除」を参照してください。

2023 年 1 月 12 日以降に作成されたタスク定義では、CloudFormation スタックの自動的な作成は行われません。

Amazon ECS console
  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. ナビゲーションペインで、[Task definitions] (タスク定義) を選択します。

  3. [Create new task definition] (新しいタスク定義の作成)、[Create new task definition] (新しいタスク定義の作成) の順に選択します。

  4. [Task definition family] (タスク定義ファミリー) を使用する場合、タスク定義ファミリーには、タスク定義に一意の名前を指定します。

  5. タスク定義で定義するコンテナごとに、以下のステップを実行します。

    1. [Name] (名前) に、コンテナの名前を入力します。

    2. [Image URI] (イメージ URI) には、コンテナの開始に使用するイメージを指定します。Amazon ECR Public Gallery レジストリ内の画像は、Amazon ECR Public レジストリ名の使用でのみ指定することができます。たとえば、public.ecr.aws/ecs/amazon-ecs-agent:latestが指定されている場合は、Amazon ECR パブリックギャラリーでホストされている Amazon Linux コンテナが使用されます。他のすべてのリポジトリの場合は、次のいずれかを使用してリポジトリを指定します。repository-url/image:tagまたはrepository-url/image@digestでの形式。

    3. [Essential container] (基本コンテナ) を使用する場合、タスク定義に 2 つ以上のコンテナが定義されている場合、コンテナを基本と見なすかどうかを指定できます。コンテナが [essential] (基本) とマークされている場合、そのコンテナが停止すると、タスクは停止します。各タスク定義には、少なくとも 1 つの基本コンテナを含む必要があります。

    4. ポートマッピングにより、コンテナはホスト上のポートにアクセスしてトラフィックを送受信できるようになります。[Port mappings] (ポートマッピング) で、次のいずれかを実行]ます。

      • [awsvpc] ネットワークモードを使用する場合、[Container port] (コンテナポート) と [Protocol] (プロトコル) で、コンテナに使用するポートマッピングを選択します。

      • [bridge] ネットワークモードを使用する場合、[Container port] (コンテナポート) と [Protocol] (プロトコル) で、コンテナに使用するポートマッピングを選択します。次のページで [bridge] (ブリッジ) ネットワークモードを選択します。選択した後、[Previous] (戻る) を選択し、次に [Host port] (ホストポート) で、コンテナ用に予約するコンテナインスタンスのポート番号を指定します。

      追加のコンテナポートマッピングを指定するには、[Add more port mappings] (ポートマッピングを追加) を選択します。

    5. [Environment variables] (環境変数) セクションを展開して、コンテナに挿入する環境変数を指定します。環境変数は、キーバリューペアを使用して個別に指定するか、Amazon S3 バケットでホストされている環境変数ファイルを指定して一括で指定できます。環境変数ファイルのフォーマット方法については、コンテナへの環境変数の受け渡し を参照してください。

    6. (オプション) コンテナが正常かどうかを判断するコマンドを設定するには、[HealthCheck] を展開して、次の項目を設定します。

      • [Command] (コマンド) には、カンマで区切られたコマンドのリストを入力します。コマンド引数を直接実行するための CMD、またはコンテナのデフォルトシェルでコマンドを実行するための CMD-SHELL を使用してコマンドを実行できます。これらのいずれも指定しない場合は CMD が使用されます。

      • [Interval] (間隔) に、各ヘルスチェックの間隔を秒数で入力します。有効な値は 5~30 です。

      • [Timeout] (タイムアウト) には、成功まで待機しているヘルスチェックが、失敗したと見なされるまでの期間 (秒単位) を入力します。有効な値は 2~60 です。

      • [Start period] (開始時期) には、ヘルスチェックコマンドを実行する前にコンテナがブートストラップするのを待つ期間 (秒単位) を入力します。有効な値は 0~300 です。

      • [Retries] (再試行) には、障害発生時にヘルスチェックコマンドを再試行する回数を入力します。有効な値は 1~10 です。

    7. (オプション) Dockerfile の値の一部を上書きするには、[Docker の設定] を展開し、次の項目を設定します。

      • [コマンド] には、コンテナに対する実行可能なコマンドを入力します。

        このパラメータは、Docker Remote API の 「コンテナの作成」セクションにある Cmd、および、docker runCOMMAND オプションにマップされます。これにより、「Dockerfile」にある CMD 命令が上書きされます。

      • [エントリポイント] で、コンテナに渡される Docker ENTRYPOINT を入力します。

        このパラメータは、Docker Remote API の 「コンテナの作成」セクションにある Entrypoint、および、docker run--entrypoint オプションにマップされます。これにより、「Dockerfile」にある ENTRYPOINT 命令が上書きされます。

      • [作業ディレクトリ] には、エントリポイントと提供されたコマンド命令をコンテナが実行するための、ディレクトリを入力します。

        このパラメータは、Docker Remote API の 「コンテナの作成」セクションにある WorkingDir、および、docker run--workdir オプションにマップされます。これにより、「Dockerfile」にある WORKDIR 命令が上書きされます。

    8. (オプション) [] を選択します。コンテナを追加するをクリックして、タスク定義にコンテナを追加します。すべてのコンテナが定義されたら、[Next] (次へ) を選択します。

  6. [App environment] (アプリケーション環境) で、アプリケーション環境を選択します。コンソールのデフォルトは、[AWS Fargate (serverless)] です Amazon ECS は、この値を使用して検証を実行し、タスク定義パラメータがインフラストラクチャタイプに対して有効であることを確認します。

  7. [Operating system/Architecture] (オペレーティングシステム/アーキテクチャ) を使用する場合、タスクのオペレーティングシステムと CPU アーキテクチャを選択します。

    タスクを 64 ビット ARM アーキテクチャで実行するには、Linux/ARM64 を選択します。詳細については、「ランタイムプラットフォーム」を参照してください。

    Windows コンテナで AWS Fargate(serverless) (サーバーレス) タスクを実行するには、サポートされている Windows オペレーティングシステムを選択します。詳細については、「タスクオペレーションシステム」を参照してください。

  8. [Task size] (タスクサイズ) では、タスク用に予約する CPU とメモリの値を選択します。CPU 値は vCPUs として指定され、メモリは GB として指定されます。

    Fargate でホストされるタスクの場合、次の表に有効な CPU とメモリの組み合わせを示します。

    CPU の値

    メモリの値

    AWS Fargate でサポートされるオペレーティングシステム

    256 (.25 vCPU)

    512 MiB、1 GB、2 GB

    Linux

    512 (.5 vCPU)

    1 GB、2 GB、3 GB、4 GB

    Linux

    1,024 (1 vCPU)

    2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB

    Linux、Windows

    2,048 (2 vCPU)

    4 GB ~ 16 GB (1 GB のインクリメント)

    Linux、Windows

    4,096 (4 vCPU)

    8 GB ~ 30 GB (1 GB のインクリメント)

    Linux、Windows

    8192 (8 vCPU)

    注記

    このオプションには Linux プラットフォーム 1.4.0 以降が必要です。

    16 GB~60 GB (4 GB のインクリメント)

    Linux

    16384 (16vCPU)

    注記

    このオプションには Linux プラットフォーム 1.4.0 以降が必要です。

    32 GB~120 GB (8 GB のインクリメント)

    Linux

    Amazon EC2 でホストされているタスクの場合、サポートされているタスクの CPU 値は 128 CPU ユニット (0.125 vCPU) ~ 10240 CPU ユニット (10 vCPU) です。

    注記

    タスクレベル CPU およびメモリのパラメータは Windows コンテナでは無視されます。

  9. [Container size] (コンテナサイズ) セクションを展開して、コンテナに適用するメモリ量 (GB) と、Amazon ECS コンテナエージェントがコンテナ用に予約する CPU ユニット数を入力します。

    コンテナごとに、[追加] を選択してから以下の手順を実行します。

    1. [コンテナ] で、対象のコンテナを選択します。

    2. [CPU] には、Amazon ECS コンテナエージェントがコンテナ用に予約した CPU ユニットの数を入力します。

      タスク内のすべてのコンテナ用に予約される CPU の合計量は、タスクレベルの CPU (CPU) 値より小さくする必要があります。

      指定した値に 1024 を乗算して、Amazon EC2 インスタンスタイプごとに使用可能な CPU ユニットの数を決定できます。例えば、t3 ナノインスタンスの値は 2048 です。詳細については、「Amazon EC2 インスタンス」を参照してください。

    3. [メモリ] には、コンテナに提供するメモリの量を GB 単位で入力します。

      コンテナは、指定したメモリを超えようとすると、強制終了されます。タスク内のすべてのコンテナ用に予約されるメモリの合計量は、タスクの [Memory] (メモリ) 値より小さくする必要があります (指定されている場合)。

    4. [GPU] では、コンテナインスタンス用の GPU ユニット数を入力します。GPU サポートを使用する Amazon EC2 インスタンスには、各 GPU について 1 つの GPU ユニットが装備されます。詳細については、「Amazon ECS での GPU の使用」を参照してください。

  10. (オプション) [Task roles, network mode] (タスクロール、ネットワークモード) セクションを展開し、次の内容を指定します。

    1. [Task role] (タスクロール) では、タスクに割り当てる IAM ロールを選択します。タスク IAM ロールは、タスク内のコンテナが AWS APIを呼び出すアクセス権限を提供します。

    2. [Network mode] (ネットワークモード) の場合、使用するネットワークモードを選択します。デフォルトは、awsvpc モードです。詳細については、Amazon ECS タスクネットワーキングを参照してください。

      ネットワークモードで [bridge] を選択した場合は、[Previous] (戻る) を選択し、[Port mappings] (ポートマッピング) の [Host port] (ホストポート) で、コンテナ用に予約するコンテナインスタンスのポート番号を入力します。

  11. (オプション) [Storage] (ストレージ) セクションを使用して、Fargate でホストされるタスクのエフェメラルストレージ量を拡張したり、タスクのデータボリューム構成を追加できます。

    1. Fargate タスクに使用可能なエフェメラルストレージをデフォルト値の 20 GiB を超えて拡張するには、[Amount] (量) に最大で 200 GiB までの値を入力します。

  12. (オプション) タスク定義のデータボリューム設定を追加するには、[Add volume] (ボリュームを追加) を選択します。

    ボリュームタイプ ステップ

    バインドマウント

    1. [Volume type] (ボリュームタイプ) を使用する場合、[Bind mount] (バインドマウント) を選択します。

    2. [Volume name] (ボリューム名) には、データボリュームの名前を入力します。データボリューム名は、コンテナマウントポイントを作成するときに使用されます。

    3. [Add mount point] (マウントポイントの追加) を選択し、次の設定を行います。

      • [Container] (コンテナ) には、マウントポイントのコンテナを選択します。

      • [Source volume] (ソースボリューム) を使用する場合、コンテナにマウントするデータボリュームを選択します。

      • [Container path] (コンテナパス) に、ボリュームをマウントするコンテナのパスを指定します。

      • [Read only] (読み取り専用) では、ボリュームを読み取り専用にするかどうかを選択します。

    4. マウントポイントを追加するには、[Add mount point] (マウントポイントの追加)。

    EFS
    1. [Volume type] (ボリュームタイプ) で、[EFS] を選択します。

    2. [Volume name] (ボリューム名) には、データボリュームの名前を入力します。

    3. [File system ID] (ファイルシステム ID) で、Amazon EFS のファイルシステム ID を選択します。

    4. (オプション) [Root directory] (ルートディレクトリ) には、ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリを入力します。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。

      EFS アクセスポイントを使用する予定の場合は、このフィールドを空白のままにします。

    5. (オプション) [Access point] (アクセスポイント) で、使用するアクセスポイント ID を選択します。

    6. (オプション) Amazon EFS ファイルシステムと Amazon ECS ホスト間のデータを暗号化する場合、または、ボリュームをマウントするときにタスク実行ロールを使用する場合は、[Advanced configurations] (詳細設定) を選択し、以下を設定します。

      • Amazon EFS ファイルシステムと Amazon ECS ホスト間のデータを暗号化するには、[Transit encryption] (トランジットの暗号化) を選択し、[Port] (ポート) に、Amazon ECS ホストと Amazon EFS サーバーの間で暗号化されたデータを送信する際に使用するポートを入力します。転送中の暗号化ポートを指定しないと、Amazon EFS マウントヘルパーが使用するポート選択方式が使用されます。詳細については、[Amazon Elastic File System User Guide] (Amazon Elastic File System ユーザーガイド) の[EFS Mount Helper] (EFS マウントヘルパー) を参照してください。

      • Amazon EFS ファイルシステムをマウントするときに、タスク定義で定義した Amazon ECS タスクの IAM ロールを使用するには、[IAM authorization] (IAM 認証) を選択します。

    7. [Add mount point] (マウントポイントの追加) を選択し、次の設定を行います。

      • [Container] (コンテナ) には、マウントポイントのコンテナを選択します。

      • [Source volume] (ソースボリューム) を使用する場合、コンテナにマウントするデータボリュームを選択します。

      • [Container path] (コンテナパス) に、ボリュームをマウントするコンテナのパスを指定します。

      • [Read only] (読み取り専用) では、ボリュームを読み取り専用にするかどうかを選択します。

    8. マウントポイントを追加するには、[Add mount point] (マウントポイントの追加)。

    Docker

    1. [Volume type] (ボリュームタイプ) で、[Docker volume] (Docker ボリューム) を選択します。

    2. [Volume name] (ボリューム名) には、データボリュームの名前を入力します。データボリューム名は、コンテナマウントポイントを作成するときに使用されます。

    3. [Driver] (ドライバー) に、Docker ボリュームの設定を入力します。Windows コンテナでは、local ドライバーの使用のみがサポートされます。バインドマウントを使用するには、host を指定します。

    4. [Scope] (スコープ) で、ボリュームのライフサイクルを選択します。

      • タスクの開始時と停止時にライフサイクルが続くようにするには、[Task] (タスク) を選択します。

      • タスクが停止した後もボリュームを維持するには、[Shared] (共有) を選択します。

    5. [Add mount point] (マウントポイントの追加) を選択し、次の設定を行います。

      • [Container] (コンテナ) には、マウントポイントのコンテナを選択します。

      • [Source volume] (ソースボリューム) を使用する場合、コンテナにマウントするデータボリュームを選択します。

      • [Container path] (コンテナパス) に、ボリュームをマウントするコンテナのパスを指定します。

      • [Read only] (読み取り専用) では、ボリュームを読み取り専用にするかどうかを選択します。

    6. マウントポイントを追加するには、[Add mount point] (マウントポイントの追加)。

    FSx for Windows File Server
    1. [ボリュームタイプ] で、[FSx for Windows File Server] を選択します。

    2. [ファイルシステム ID] で、FSx for Windows File Server システムの ID を選択します。

    3. [ルートディレクトリ] で、ホスト内にルートディレクトリとしてマウントするための、FSx for Windows File Server ファイルシステム内のディレクトリを入力します。

    4. [認証情報パラメータ] で、認証情報の保存方法を選択します。

      • Secrets Manager を使用するために、Secrets Manager のシークレットの、Amazon リソースネーム (ARN) を入力します。

      • Systems Manager を使用するために、Systems Manager パラメータの Amazon リソースネーム (ARN) を入力します。

    5. [ドメイン] に、AWS Directory Service マネージドの Microsoft AD (Active Directory)、またはセルフホスト型 EC2 AD によってホストされる完全修飾ドメイン名を入力します。

    6. [Add mount point] (マウントポイントの追加) を選択し、次の設定を行います。

      • [Container] (コンテナ) には、マウントポイントのコンテナを選択します。

      • [Source volume] (ソースボリューム) を使用する場合、コンテナにマウントするデータボリュームを選択します。

      • [Container path] (コンテナパス) に、ボリュームをマウントするコンテナのパスを指定します。

      • [Read only] (読み取り専用) では、ボリュームを読み取り専用にするかどうかを選択します。

    7. マウントポイントを追加するには、[Add mount point] (マウントポイントの追加)。

  13. (オプション) [Use log collection] (ログコレクションを使用) を選択し、ログ構成を指定します。使用可能なログドライバーごとに、指定するログドライバーオプションがあります。デフォルトのオプションでは、コンテナログを CloudWatch Logs に送信します。その他のログドライバオプションは、AWS FireLens を使用して構成されます。詳細については、「カスタムログルーティング」を参照してください。

    以下では、各コンテナログの送信先について詳しく説明します。

    • Amazon CloudWatch — コンテナログを CloudWatch Logs に送信するようにタスクを設定します。デフォルトのログドライバオプションが提供され、ユーザーに代わり CloudWatch ロググループを作成します。別のロググループ名を指定するには、ドライバーオプションの値を変更します。

    • Amazon Kinesis Data Firehose — Kinesis Data Firehose にコンテナログを送信するようタスクを設定します。Kinesis Data Firehose 配信ストリームにログを送信するデフォルトのログドライバーオプションが提供されています。別の配信ストリーム名を指定するには、ドライバーオプションの値を変更します。

    • Amazon Kinesis Data Streams — Kinesis Data Streams にコンテナログを送信するようタスクを設定します。Kinesis Data Streams のストリームにログを送信するデフォルトのログドライバーオプションが提供されています。別のストリーム名を指定するには、ドライバーオプションの値を変更します。

    • Amazon OpenSearch Service — コンテナログを OpenSearch Service ドメインに送信するようタスクを設定します。ログドライバーオプションを提供する必要があります。詳細については、「Amazon OpenSearch Service ドメインへのログの転送」を参照してください。

    • Amazon S3 — Amazon S3 バケットにコンテナログを送信するようタスクを設定します。デフォルトのログドライバーオプションが提供されていますが、有効な Amazon S3 バケット名を指定する必要があります。

  14. (オプション) [Use trace collection] (トレースコレクションを使用) を選択し、アプリケーションから AWS X-Ray にトレースデータをルーティングするようにタスクを設定します。このオプションを選択すると、Amazon ECS はトレースデータを送信するように事前設定された OpenTelemetry コンテナサイドカーで使用する AWS Distro を作成します。詳しくは、「アプリケーショントレースデータの収集」を参照してください。

    重要

    トレースコレクションを使用する場合、タスク定義には必要なアクセス許可を持つタスクの IAM ロールが必要です。詳しくは、「AWS X-Ray を使用した AWS Distro for OpenTelemetry の統合に必要な IAM 権限」を参照してください。

  15. (オプション) [Use metric collection] (トレースコレクションを使用) オプションを選択し、タスクのメトリクスを収集し、Amazon CloudWatch または Amazon Managed Service for Prometheus に送信します。このオプションを選択すると、Amazon ECS はアプリケーションメトリクスを送信するよう事前に設定された OpenTelemetry コンテナサイドカーで使用する AWS Distro を作成します。詳細については、「アプリケーションメトリクスを収集する」を参照してください。

    1. [Amazon CloudWatch] を選択した場合、カスタムアプリケーションメトリクスはカスタムメトリクスとして CloudWatch にルーティングされます。詳細については、「アプリケーションメトリクスを Amazon CloudWatch にエクスポートする」を参照してください。

      重要

      Amazon CloudWatch にアプリケーションメトリクスをエクスポートする場合、タスク定義には、必要なアクセス権限を持つタスク IAM ロールが必要です。詳しくは、「OpenTelemetry 用 AWS Distro と Amazon CloudWatch の統合に必要な IAM 許可」を参照してください。

    2. [Amazon Managed Service for Prometheus (Prometheus libraries instrumentation)] (Prometheus 向け Amazon マネージドサービス (Prometheus ライブラリ計測)) を選択した場合、タスクレベルの CPU、メモリ、ネットワーク、ストレージのメトリクスとカスタムアプリケーションメトリクスが Amazon Managed Service for Prometheus にルーティングされます。[Workspace remote write endpoint] (Workspace のリモート書き込み用エンドポイント) には、Prometheus ワークスペースのリモート書き込みエンドポイント URL を入力します。[Scraping target] (スクレイピングターゲット) には、AWS Distro for OpenTelemetry コレクターがメトリクスデータをスクレイプするために使用できるホストとポートを入力します。詳しくは、「アプリケーションメトリクスを Amazon Managed Service for Prometheus にエクスポートする」を参照してください。

      重要

      Amazon Managed Service for Prometheus にアプリケーションメトリクスをエクスポートする場合、タスク定義には、必要なアクセス権限を持つタスク IAM ロールが必要です。詳しくは、「OpenTelemetry 用 AWS Distro と Amazon Managed Service for Prometheus の統合に必要な IAM 許可」を参照してください。

    3. [Amazon Managed Service for Prometheus (Open Telemetry instrumentation)] (Prometheus 向け Amazon マネージドサービス (OpenTelemetry 計測)) を選択した場合、タスクレベルの CPU、メモリ、ネットワーク、ストレージのメトリクスとカスタムアプリケーションメトリクスが Amazon Managed Service for Prometheus にルーティングされます。[Workspace remote write endpoint] (Workspace のリモート書き込み用エンドポイント) には、Prometheus ワークスペースのリモート書き込みエンドポイント URL を入力します。詳しくは、「アプリケーションメトリクスを Amazon Managed Service for Prometheus にエクスポートする」を参照してください。

      重要

      Amazon Managed Service for Prometheus にアプリケーションメトリクスをエクスポートする場合、タスク定義には、必要なアクセス権限を持つタスク IAM ロールが必要です。詳細については、「OpenTelemetry 用 AWS Distro と Amazon Managed Service for Prometheus の統合に必要な IAM 許可」を参照してください。

  16. (オプション) [Tags] (タグ) を展開します。タグをキーバリューペアとしてタスク定義に追加します。

    タグを追加または削除します。

    • [タグを追加] [Add tag] (タグを追加) を選択し、以下を実行します。

      • [キー] にはキー名を入力します。

      • [] にキー値を入力します。

    • [タグの削除] タグの横にある [タグの削除] を選択します。

  17. [Next] (次) を選択して、タスク定義を確認します。

  18. [Review and create] (確認と作成) ページで、各タスク定義セクションを確認します。[Edit (編集)] を選択して、変更を加えることができます。タスク定義が完了したら、[Create] (作成) を選択して、タスク定義を登録します。

Amazon ECS console JSON editor
  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. ナビゲーションペインで、[Task Definitions] を選択します。

  3. [Create new task definition] (新しいタスク定義の作成)、[Create new task definition with JSON] (JSON で新しいタスク定義を作成) の順に選択します。

  4. JSON エディタボックスで、JSON ファイルを編集し、

    JSON は、JSON 検証 で指定された検証チェックに合格する必要があります。

  5. [Create] (作成) を選択します。