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

タスク定義の作成

Docker コンテナを Amazon ECS で実行するには、タスク定義を作成する必要があります。

1 つのタスク定義に複数のコンテナとデータボリュームを定義できます。タスク定義で使用できるパラメーターの詳細については、「タスク定義パラメーター」を参照してください。

新しいタスク定義を作成するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

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

  3. [Task Definitions] ページで、[Create new Task Definition] を選択します。

  4. [Select compatibilities] ページで、タスクで使用する起動タイプを選択し、[Next step] を選択します。

    注記

    Fargate は Windows コンテナと互換性がありません。

  5. (オプション) JSON 形式のタスク定義の場合は、以下の手順を実行します。

    1. [Configure task and container definitions] ページで、ページの下部までスクロールし、[Configure via JSON] を選択します。

    2. JSON 形式のタスク定義をテキスト領域に貼り付け、[Save] を選択します。

    3. 情報を確認し、[Create] を選択します。

    ページの末尾までスクロールし、[Configure via JSON] を選択します。

  6. 選択した起動タイプに応じて、以下のいずれかのタブの手順に従います。

Fargate 起動タイプEC2 起動タイプ
Fargate 起動タイプ

Fargate 起動タイプの互換性テンプレートの使用

[Fargate] を選択した場合は、以下の手順を実行します。

  1. [Task Definition Name] に、タスク定義の名前を入力します。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。

  2. (オプション) [Task Role] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

    注記

    ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロール作成のヒントについては、「タスク用の IAM ロールとポリシーの作成」を参照してください。

  3. [Task execution IAM role] で、タスク実行ロールを選択するか、[Create new role] を選択してコンソールで自動的に作成します。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。

  4. [Task size] で、[Task memory (GB)] および [Task CPU (vCPU)] の値を選択します。次の表では、有効な組み合わせを示しています。

    CPU の値 メモリの値
    256 (.25 vCPU) 512 MB、1 GB、2 GB
    512 (.5 vCPU) 1 GB、2 GB、3 GB、4 GB
    1024 (1 vCPU) 2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB
    2048 (2 vCPU) 4 GB ~ 16 GB (1 GB のインクリメント)
    4096 (4 vCPU) 8 GB ~ 30 GB (1 GB のインクリメント)
  5. タスク定義内のコンテナごとに、以下の手順を実行します。

    1. [Add container] を選択します。

    2. コンテナ定義で使用する必須のフィールドとオプションのフィールドにそれぞれ入力します (コンテナ定義のその他のパラメーターは [Advanced container configuration] メニューから使用できます)。詳細については、「タスク定義パラメーター」を参照してください。

    3. [Add] を選択して、タスク定義にコンテナを追加します。

  6. (オプション) タスクのデータボリュームを定義するには、[Add volume] を選択します。詳細については、「タスクでのデータボリュームの使用」を参照してください。

    1. [Name] に、ボリュームの名前を入力します。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。

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

EC2 起動タイプ

EC2 起動タイプの互換性テンプレートの使用

[EC2] を選択した場合は、以下の手順を実行します。

  1. [Task Definition Name] に、タスク定義の名前を入力します。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。

  2. (オプション) [Task Role] で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。詳細については、「タスク用の IAM ロール」を参照してください。

    EC2 起動タイプを使用するタスクの場合、これらのアクセス権限は通常、Amazon ECS コンテナインスタンスの IAM ロールによって付与されます。詳細については、「Amazon ECS コンテナインスタンスの IAM ロール」を参照してください。

    注記

    ここには、[Amazon EC2 Container Service Task Role] 信頼関係があるロールのみが表示されます。タスク用の IAM ロールを作成する方法の詳細については、「タスク用の IAM ロールとポリシーの作成」を参照してください。

  3. (オプション) [Network Mode] で、タスクのコンテナに使用する Docker ネットワークモードを選択します。使用可能なネットワークモードは、Docker run リファレンスの「ネットワーク設定」で説明しているものと同じです。

    デフォルトの Docker ネットワークモードは bridge です。ネットワークモードを none に設定した場合、コンテナ定義にポートマッピングを指定することはできず、タスクのコンテナに外部接続がなくなります。ネットワークモードが awsvpc の場合、タスクに Elastic Network Interface が割り当てられます。host および awsvpc ネットワークモードでは、コンテナのネットワークパフォーマンスは最大限に高まります。bridge モードとは異なり、仮想化ネットワークスタックではなく、Amazon EC2 ネットワークスタックを使用するためです。ただし、公開されるコンテナポートは対応するホストポートに直接マッピングされるため、ポートマッピングが使用されている場合は、1 つのコンテナインスタンスで同じタスクの複数のインスタンスを実行することはできません。

  4. (オプション) [Task execution role] (タスク実行ロール) で、AWS API を呼び出すためのアクセス権限をタスクのコンテナに付与する IAM ロールを選択します。

    EC2 起動タイプを使用するタスクの場合、これらのアクセス権限は通常、[Task Role] (タスクロール) として先ほど指定した Amazon ECS コンテナインスタンスの IAM ロールによって付与されるため、タスク実行ロールを指定する必要はありません。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。

  5. (省略可能) [Task size] で、[Task memory (GB)] および [Task CPU (vCPU)] の値を選択します。サポートされている Task CPU (vCPU) の値は 128 CPU ユニット (0.125 vCPU) ~ 10240 CPU ユニット (10 vCPU) です。

    注記

    タスクレベル CPU およびメモリのパラメータは Windows コンテナでは無視されます。Windows コンテナではコンテナレベルリソースを指定することをお勧めします。

  6. タスク定義内のコンテナごとに、以下の手順を実行します。

    1. [Add container] を選択します。

    2. コンテナ定義で使用する必須のフィールドとオプションのフィールドにそれぞれ入力します (コンテナ定義のその他のパラメーターは [Advanced container configuration] メニューから使用できます)。詳細については、「タスク定義パラメーター」を参照してください。

    3. [Add] を選択して、タスク定義にコンテナを追加します。

  7. (オプション) [Constraint] で、このタスク定義から作成されるタスクがクラスターにどのように配置されるかを定義します。EC2 起動タイプを使用するタスクの場合、アベイラビリティーゾーン、インスタンスタイプ、またはカスタム属性に基づいたタスク配置の制約を使用できます。詳細については、「Amazon ECS タスク配置の制約事項」を参照してください。

  8. (オプション) タスクのデータボリュームを定義するには、[Add volume] を選択します。詳細については、「タスクでのデータボリュームの使用」を参照してください。

    1. [Name] に、ボリュームの名前を入力します。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。

    2. (オプション) [Source Path] に、コンテナに渡すホストコンテナインスタンスのパスを入力します。このフィールドを空のままにした場合、Docker デーモンによってホストパスが割り当てられます。ソースパスを指定した場合、手動で削除するまで、データボリュームはホストコンテナインスタンス上の指定した場所に保持されます。ソースパスがホストコンテナインスタンスに存在しない場合、Docker デーモンによってそのパスが作成されます。その場所が存在する場合は、ソースパスフォルダーの内容がコンテナにエクスポートされます。

  9. [Create] を選択します。

タスク定義テンプレート

以下に示しているのは、空のタスク定義テンプレートです。このテンプレートを使用してタスク定義を作成し、コンソールの JSON 入力領域に貼り付けるか、ファイルに保存して AWS CLI --cli-input-json オプションで使用できます。 これらのパラメータの詳細については、タスク定義パラメーターを参照してください。

{ "family": "", "taskRoleArn": "", "executionRoleArn": "", "networkMode": "bridge", "containerDefinitions": [ { "name": "", "image": "", "cpu": 0, "memory": 0, "memoryReservation": 0, "links": [ "" ], "portMappings": [ { "containerPort": 0, "hostPort": 0, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "" ], "command": [ "" ], "environment": [ { "name": "", "value": "" } ], "mountPoints": [ { "sourceVolume": "", "containerPath": "", "readOnly": true } ], "volumesFrom": [ { "sourceContainer": "", "readOnly": true } ], "linuxParameters": { "capabilities": { "add": [ "" ], "drop": [ "" ] }, "devices": [ { "hostPath": "", "containerPath": "", "permissions": [ "write" ] } ], "initProcessEnabled": true }, "hostname": "", "user": "", "workingDirectory": "", "disableNetworking": true, "privileged": true, "readonlyRootFilesystem": true, "dnsServers": [ "" ], "dnsSearchDomains": [ "" ], "extraHosts": [ { "hostname": "", "ipAddress": "" } ], "dockerSecurityOptions": [ "" ], "dockerLabels": { "KeyName": "" }, "ulimits": [ { "name": "memlock", "softLimit": 0, "hardLimit": 0 } ], "logConfiguration": { "logDriver": "journald", "options": { "KeyName": "" } } } ], "volumes": [ { "name": "", "host": { "sourcePath": "" } } ], "placementConstraints": [ { "type": "memberOf", "expression": "" } ], "requiresCompatibilities": [ "EC2" ], "cpu": "", "memory": "" }

このタスク定義テンプレートは、以下の AWS CLI コマンドを使用して生成できることに注意してください。

aws ecs register-task-definition --generate-cli-skeleton

このページの内容: