メニュー
Amazon EC2 Container Service
開発者ガイド (API Version 2014-11-13)

タスク定義の作成

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

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

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

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

  2. ナビゲーションバーから、タスク定義を登録するリージョンを選択します。

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

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

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

    1. [Create a Task Definition] ページで、ページの下部までスクロールし、[Configure via JSON] を選択します。

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

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

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

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

    注記

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

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

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

  9. (オプション) [Constraint] で、このタスク定義から作成されるタスクがクラスターにどのように配置されるか (特定のインスタンスタイプまたは特定のカスタム属性のコンテナインスタンスなど) を定義します。詳細については、「Amazon ECS タスク配置の制約事項」を参照してください。

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

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

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

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

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

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

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

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

タスク定義テンプレート

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

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

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

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

このページの内容: