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

タスク定義パラメータ

タスク定義は、タスクファミリ、IAM タスクロール、ネットワークモード、コンテナ定義、ボリューム、タスク配置の制約事項、起動タイプの各部分に分かれています。ファミリはタスクの名前であり、各ファミリに複数のリビジョンを含めることもできます。IAM タスクロールでは、タスクのコンテナに必要なアクセス権限を指定します。コンテナ用のネットワークの設定方法は、ネットワークモードによって決定されます。コンテナ定義では、使用するイメージ、コンテナの CPU とメモリの割り当て量のほか、多くのオプションを指定します。ボリュームでは、コンテナ間でデータを共有したり、コンテナが実行中でないときでもコンテナインスタンスにデータを保持したりするように指定します。タスク配置の制約事項は、インフラストラクチャ内のタスクの配置方法をカスタマイズします。起動タイプは、タスクが使用するインフラストラクチャを決定します。

ファミリとコンテナ定義はタスク定義に必須ですが、タスクロール、ネットワークモード、ボリューム、タスク配置の制約事項、起動タイプはオプションです。

ファミリー

family

タイプ: 文字列

必須: はい

タスク定義を登録するときに、ファミリ (複数バージョンのタスク定義の名前のようなもの) を指定する必要があります。登録したタスク定義には、リビジョン番号が与えられます。特定のファミリに登録した最初のタスク定義には、リビジョン 1 が与えられ、その後に登録したタスク定義には、リビジョン 2 というように続きます。

タスクロール

taskRoleArn

タイプ: 文字列

必須: いいえ

タスク定義を登録するときに、IAM ロールのタスクロールを割り当てて、タスクのコンテナに、関連するポリシーに指定された AWS API を呼び出すためのアクセス権限を付与できます。詳細については、「タスク用の IAM ロール」を参照してください。

Windows 上のタスク用の IAM ロールでは、Amazon ECS-optimized Windows AMI を起動するときに -EnableTaskIAMRole オプションを設定する必要があります。また、コンテナでは、この機能を利用するために一部の設定コードを実行する必要があります。詳細については、「Windows タスク用の IAM ロール」を参照してください。

タスク実行ロール

executionRoleArn

タイプ: 文字列

必須: いいえ

タスク定義を登録するとき、タスクのコンテナがユーザーに代わってコンテナイメージを取得して、CloudWatch にコンテナログを発行するためのタスク実行ロールを提供することができます。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。

ネットワークモード

networkMode

タイプ: 文字列

必須: いいえ

タスクのコンテナで使用する Docker ネットワーキングモード。有効な値は、nonebridgeawsvpc および host です。デフォルトの Docker ネットワークモードは bridge です。

ネットワークモードを none に設定すると、タスクのコンテナの外部接続がなくなるため、コンテナの定義にポートマッピングを指定することはできません。

ネットワークモードが bridge の場合、タスクは Docker の組み込み仮想ネットワークを使用して、各コンテナインスタンス内で実行されます。

ネットワークモードが host の場合、タスクは、Docker の組み込み仮想ネットワークをバイパスし、コンテナポートは EC2 インスタンスのネットワークインターフェイスに直接マッピングされます。このモードで、ポートマッピングが使用されている場合、1 つのコンテナインスタンスで同じタスクのインスタンスを複数実行することはできません。

ネットワークモードが awsvpc の場合は、タスクに Elastic Network Interface が割り当てられるため、タスク定義を使用したサービスの作成時またはタスクの実行時に NetworkConfiguration を指定する必要があります。詳細については、「タスクネットワーキングと awsvpc ネットワークモード」を参照してください。現在、awsvpc ネットワークモードをサポートしているのは、Amazon ECS-optimized AMI、ecs-init パッケージがある他の Amazon Linux バリアント、または AWS Fargate インフラストラクチャのみです。

host および awsvpc ネットワークモードでは、コンテナのネットワークパフォーマンスは最大限に高まります。bridge モードとは異なり、仮想化ネットワークスタックではなく、Amazon EC2 ネットワークスタックを使用するためです。host および awsvpc ネットワークモードでは、公開されるコンテナポートは対応するホストポート (host ネットワークモードの場合) またはアタッチされた Elastic Network Interface ポート (awsvpc ネットワークモードの場合) に直接マッピングされるため、動的ホストポートマッピングは利用できません。

Windows 用の Docker では、Linux 用の Docker とは異なるネットワークモード (NAT と呼ばれる) が使用されます。Windows コンテナにタスク定義を登録するときに、ネットワークモードを指定しないでください。AWS マネジメントコンソール を使用して Windows コンテナにタスク定義を登録する場合は、default ネットワークモードを選択する必要があります。

Fargate 起動タイプを使用している場合、awsvpc ネットワークモードが必要です。EC2 起動タイプを使用している場合、使用可能なネットワークモードは、基板となる EC2 インスタンスのオペレーティングシステムによって異なります。Linux の場合は、どのネットワークモードも使用できます。Windows の場合は、上記のように NAT モードのみ使用できます。

コンテナ定義

タスク定義を登録するときは、コンテナインスタンスの Docker デーモンに渡されるコンテナ定義のリストを指定する必要があります。以下のパラメータをコンテナ定義で使用できます。

標準のコンテナ定義のパラメータ

以下のタスク定義のパラメータは必須であるか、ほとんどのコンテナ定義で使用されます。

name

タイプ: 文字列

必須: はい

コンテナの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。 タスク定義で複数のコンテナをリンクする場合、あるコンテナの name を別のコンテナの links に入力してコンテナを接続できます。このパラメータは、Docker Remote APIコンテナを作成する セクションの name にマッピングし、--name オプションを docker run にマッピングします。

image

タイプ: 文字列

必須: はい

コンテナの開始に使用するイメージ。この文字列は Docker デーモンに直接渡されます。Docker Hub レジストリのイメージはデフォルトで使用できます。repository-url/image:tag または repository-url/image@digest で他のリポジトリを指定することもできます。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコア、コロン、ピリオド、スラッシュ、シャープ記号を使用できます。 このパラメータは、Docker Remote APIコンテナを作成する セクションの Imagedocker runIMAGE パラメータにマッピングします。

  • 新しいタスクが開始されると、Amazon ECS コンテナエージェントは、指定されたイメージおよびタグの最新バージョンをプルしてコンテナで使用します。ただし、リポジトリイメージの後続の更新がすでに実行されているタスクに反映されることはありません。

  • プライベートレジストリのイメージがサポートされています。詳細については、「タスクのプライベートレジストリの認証」を参照してください。

  • Amazon ECR リポジトリのイメージは、registry/repository:tag または registry/repository@digest の完全な命名規則を使用して指定できます。たとえば、aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app:latest または aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE

  • Docker ハブの公式リポジトリのイメージでは、1 つの名前 (例: ubuntumongo) を使用します。

  • Docker ハブの他のリポジトリのイメージは、組織名で修飾されます (例: amazon/amazon-ecs-agent)。

  • 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: quay.io/assemblyline/ubuntu)。

memory

タイプ: 整数

必須: いいえ

コンテナに適用されるメモリのハード制限 (MiB 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。このパラメータは、Docker Remote APIコンテナを作成する セクションの Memory にマッピングし、--memory オプションを docker run にマッピングします。

Fargate 起動タイプを使用するタスクにコンテナが含まれる場合、このフィールドはオプションです。その場合、タスク内のすべてのコンテナ用に予約されるメモリの合計量が、タスクの memory の値を下回ることが唯一の要件となります。

EC2 起動タイプを使用するタスクにコンテナが含まれる場合、コンテナの定義で memorymemoryReservation の一方または両方にゼロ以外の整数を指定する必要があります。両方を指定する場合、memorymemoryReservation より大きいことが必要です。memoryReservation を指定する場合、コンテナが配置されているコンテナインスタンスの使用可能なメモリリソースからその値が減算されます。それ以外の場合は、memory の値が使用されます。

Docker デーモンによってコンテナ用に 4 MiB 以上のメモリが予約されるため、コンテナ用に 4 MiB 未満のメモリを指定しないでください。

注記

特定のインスタンスタイプでタスクにできるだけ多くのメモリを提供してリソースの使用率を最大限に高めるには、「コンテナインスタンス メモリ管理」を参照してください。

memoryReservation

タイプ: 整数

必須: いいえ

コンテナ用に予約するメモリのソフト制限 (MiB 単位)。システムメモリが競合している場合、Docker はコンテナメモリをこのソフト制限に維持しようとします。ただし、コンテナは必要に応じて、memory パラメータで指定したハード制限 (該当する場合)、またはコンテナインスタンスの使用可能なメモリの、いずれか先に達するまで、追加のメモリを消費できます。このパラメータは、Docker Remote APIコンテナを作成する セクションの MemoryReservation にマッピングし、--memory-reservation オプションを docker run にマッピングします。

コンテナ定義で memorymemoryReservation の一方または両方を 0 以外の整数を指定する必要があります。両方を指定する場合、memorymemoryReservation より大きいことが必要です。memoryReservation を指定する場合、コンテナが配置されているコンテナインスタンスの使用可能なメモリリソースからその値が減算されます。それ以外の場合は、memory の値が使用されます。

たとえば、コンテナが通常 128 MiB のメモリを使用しているが、短期間に 256 MiB のメモリにバーストする場合は、memoryReservation を 128 MiB に、memory ハード制限を 300 MiB に設定できます。この設定により、コンテナは、コンテナインスタンスの残りのリソースから 128 MiB のメモリのみを確保できますが、必要に応じて追加のメモリリソースを消費できるようにもなります。

Docker デーモンによってコンテナ用に 4 MiB 以上のメモリが予約されるため、コンテナ用に 4 MiB 未満のメモリを指定しないでください。

portMappings

タイプ: オブジェクト配列

必須: いいえ

ポートマッピングにより、コンテナはホストコンテナインスタンス上のポートにアクセスしてトラフィックを送受信できるようになります。

awsvpc ネットワークモードを使用するタスク定義では、containerPort のみを指定する必要があります。hostPort は、空白のままにするか、containerPort と同じ値にする必要があります。

Windows のポートマッピングでは、localhost の代わりに NetNAT ゲートウェイを使用します。Windows のポートマッピングにはループバックが存在しないため、ホスト自体からコンテナのマッピングされたポートにアクセスすることはできません。

このパラメータは、Docker Remote APIコンテナを作成する セクションの PortBindings にマッピングし、--publish オプションを docker run にマッピングします。タスク定義のネットワークモードを host に設定している場合、ホストポートは未定義であるか、ポートマッピングのコンテナポートと一致する必要があります。

注記

タスクが RUNNING ステータスに達すると、手動および自動で割り当てられたホストとコンテナポートが次の場所で表示されます。

  • コンソール: 指定されたタスクのコンテナ詳細の [Network Bindings] セクション。

  • AWS CLI: describe-tasks コマンド出力の networkBindings セクション。

  • API: DescribeTasks レスポンス。

containerPort

タイプ: 整数

必須: はい (portMappings を使用する場合)

ユーザーが指定したホストポートまたは自動的に割り当てられたホストポートにバインドされるコンテナポートの番号。

Fargate 起動タイプを使用するタスク内のコンテナを使う場合、containerPort を使用して公開ポートを指定する必要があります。

EC2 起動タイプを使用するタスク内のコンテナを使用し、ホストポートではなくコンテナポートを指定した場合、コンテナには一時ポート範囲内のホストポートが自動的に割り当てられます。詳細については、「hostPort」を参照してください。この方法で自動的にマッピングされるポートは、コンテナインスタンスの 100 個の予約済みポート制限にはカウントされません。

hostPort

タイプ: 整数

必須: いいえ

コンテナ用に予約するコンテナインスタンスのポート番号。

Fargate 起動タイプを使用するタスク内のコンテナを使う場合、hostPort は、空白のままにするか、containerPort と同じ値にする必要があります。

EC2 起動タイプを使用するタスク内のコンテナを使う場合、予約されていないホストポートをコンテナポートマッピングに指定できます (これは静的ホストポートマッピングと呼ばれます)。または、containerPort の指定時に hostPort を省略することもできます (または 0 に設定)。後者の場合、コンテナインスタンスのオペレーティングシステムと Docker バージョンに、一時ポート範囲のポートが自動的に割り当てられます (これは動的ホストポートマッピングと呼ばれる)。

デフォルトの一時ポート範囲は 49153–65535 で、この範囲は 1.6.0 より前の Docker バージョンで使用されます。Docker バージョン 1.6.0 以降では、Docker デーモンは /proc/sys/net/ipv4/ip_local_port_range (最新の Amazon ECS-optimized AMI では 32768 ~ 61000) から一時ポート範囲の読み取りを試行します。このカーネルパラメータが使用できない場合は、デフォルトの一時ポート範囲が使用されます。一時ポート範囲は自動割り当て用に予約されているため、この範囲にはホストポートを指定しないでください。一般的に、32768 より小さい番号のポートは一時ポート範囲に含まれません。

デフォルトの予約済みポートは、SSH 用の 22、Docker ポートの 2375 および 2376、Amazon ECS コンテナエージェントポートの 51678 です。実行中のタスク用にユーザーが以前に指定したホストポートもそのタスクの実行中は予約されます (タスクが停止すると、そのホストポートは解放されます)。現在予約されているポートは、describe-container-instances 出力の remainingResources に表示されます。コンテナインスタンスには、デフォルトの予約済みポートを含めて、一度に最大 100 個の予約済みポートを割り当てることができます。自動的に割り当てられるポートは、この 100 個の予約済みポート制限にはカウントされません。

protocol

タイプ: 文字列

必須: いいえ

ポートマッピングに使用されるプロトコル。有効な値は、tcp および udp です。デフォルト: tcp

重要

UDP サポートは、バージョン 1.2.0 以降の Amazon ECS コンテナエージェント (amzn-ami-2015.03.c-amazon-ecs-optimized AMI など)、またはバージョン 1.3.0 以降に更新したコンテナエージェントで起動されたコンテナインスタンスでのみ使用できます。コンテナエージェントを最新バージョンに更新するには、「Amazon ECS コンテナエージェントの更新」を参照してください。

ホストポートを指定する場合は、以下の構文を使用します。

"portMappings": [ { "containerPort": integer, "hostPort": integer } ... ]

自動的に割り当てられるホストポートが必要な場合は、以下の構文を使用します。

"portMappings": [ { "containerPort": integer } ... ]

詳細コンテナ定義パラメータ

以下の詳細コンテナ定義パラメータにより、Amazon ECS コンテナインスタンスでのコンテナの起動に使用する docker run コマンドに拡張機能が追加されます。

ヘルスチェック

healthCheck

ヘルスチェックのコマンドおよびコンテナの関連する設定パラメータです。このパラメータは、Docker Remote APIコンテナを作成する セクションの HealthCheckdocker runHEALTHCHECK パラメータにマッピングします。

注記

Amazon ECS コンテナエージェントは、タスク定義で指定されたヘルスチェックのみをモニターし報告します。Amazon ECS は Docker コンテナイメージに埋め込まれ、コンテナ定義で指定されていない Docker ヘルスチェックを監視しません。コンテナ定義で指定されているヘルスチェックのパラメータは、コンテナイメージ内に存在する Docker ヘルスチェックを上書きします。

タスクの healthStatus からタスクヘルスが報告されます。これは、タスクの主要なコンテナのヘルスより決定されます。タスクの主要なコンテナが HEALTHY と報告される場合、タスクステータスも同じく HEALTHY と報告します。タスクの主要なコンテナのいずれかが UNHEALTHY あるいは UNKNOWN と報告される場合、タスクステータスも同様に該当する UNHEALTHY あるいは UNKNOWN と報告します。サービスのタスクが異常と報告される場合、このタスクはサービスから削除され、置き換えられます。

コンテナのヘルスチェックのサポートに関する内容を以下に示します。

  • コンテナのヘルスチェックには、Amazon ECS コンテナエージェントのバージョン 1.17.0 以降が必要です。詳細については、「Amazon ECS コンテナエージェントの更新」を参照してください。

  • バージョン 1.1.0 以降のプラットフォームバージョンを使用している場合、コンテナヘルスチェックは、Fargate タスクでサポートされます。詳細については、「AWS Fargate プラットフォームのバージョン」を参照してください。

  • コンテナヘルスチェックは、Classic Load Balancer を使用するように設定されたサービスの一部であるタスクではサポートされていません。

command

ヘルスかどうかを決定するためにコンテナが実行するコマンドを表す文字列配列。文字列配列は、コマンド引数を直接実行するための CMD、またはコンテナのデフォルトシェルのコマンドを実行するための CMD-SHELL で始めることができます。いずれも指定しない場合は、デフォルトで CMD が使用されます。

コンソールでのヘルスチェックの入力例を示します。

CMD-SHELL, curl -f http://localhost/ || exit 1

同様に、コンソールの JSON パネル、AWS CLI、または API で、ヘルスチェックを行う場合の入力例を以下に示します。

[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]

終了コードの 0 は成功を示し、ゼロ以外の終了コードは失敗を示します。詳細については、Docker Remote APIコンテナを作成する セクションの HealthCheck を参照してください。

interval

各ヘルスチェックの実行間の秒単位の間隔です。5〜300 秒を指定できます。デフォルト値は 30 秒です。

timeout

失敗と見なされる前にヘルスチェックが成功するまでに待機する期間 (秒単位) です。2〜60 秒を指定できます。デフォルト値は 5 秒です。

retries

コンテナが異常と見なされるまでに、失敗したヘルスチェックを再試行する回数です。1〜10 回を指定できます。デフォルト値は 3 回の再試行です。

startPeriod

再試行の最大回数でヘルスチェックが失敗とカウントされる前に、コンテナにブートストラップする時間を提供する猶予期間のオプションです。0〜300 秒を指定できます。デフォルトでは startPeriod は無効となっています。

環境

cpu

タイプ: 整数

必須: いいえ

Amazon ECS コンテナエージェントがコンテナ用に予約した cpu ユニットの数です。このパラメータは、Docker Remote APIコンテナを作成する セクションの CpuShares にマッピングし、--cpu-shares オプションを docker run にマッピングします。

Fargate 起動タイプを使用するタスクでは、このフィールドはオプションです。その場合、タスク内のすべてのコンテナ用に予約される CPU の合計量が、タスクレベルの cpu の値を下回ることが唯一の要件となります。

注記

Amazon EC2 Instances 詳細ページのインスタンスタイプに一覧表示されている vCPU 数に 1,024 を乗算して、Amazon EC2 インスタンスタイプごとに使用可能な CPU ユニットの数を判断できます。

Linux コンテナは、割り当てられた CPU ユニットと同じ比率を使用して、割り当てられていない CPU ユニットをコンテナインスタンス上の他コンテナと共有します。たとえば、単一コンテナタスクを単一コアインスタンスタイプで実行する場合、そのコンテナ用に 512 個の CPU ユニットを指定しており、そのタスクがコンテナインスタンスで実行される唯一のタスクであると、そのコンテナは 1,024 個の CPU ユニット配分すべてをいつでも使用できます。ただし、そのコンテナインスタンスで同じタスクの別のコピーを起動した場合、必要に応じてタスクごとに最低 512 個の CPU ユニットが確保され、各コンテナは最大 CPU ユニット配分を使用できますが (他方のコンテナが使用していない限り)、両方のタスクが常に 100% アクティブであれば、使用できるのは 512 個の CPU ユニットに制限されます。

Linux コンテナインスタンスでは、コンテナインスタンス上の Docker デーモンは、CPU 値を使用して、実行中のコンテナに対する相対 CPU 配分比率を計算します。詳細については、Docker ドキュメントの「CPU 配分の制約」を参照してください。Linux kernel が許可する CPU の有効な最小共有値は 2 です。ただし、CPU のパラメータは必要なく、コンテナ定義で 2 以下の CPU 値を使用できます。CPU 値が 2 未満の場合 (null を含む)、動作は Amazon ECS コンテナエージェントのバージョンによって異なります。

  • Agent versions <= 1.1.0: Null と 0 の CPU 値は Docker に 0 として渡され、Docker はそれを 1,024 個の CPU 配分に変換します。1 の CPU 値は Docker に 1 として渡され、Linux カーネルはそれを 2 個の CPU 配分に変換します。

  • Agent versions >= 1.2.0: Null、0、1 の CPU 値は Docker に 2 個の CPU 配分として渡されます。

Windows コンテナインスタンスでは、CPU 制限は絶対制限またはクォータとして適用されます。Windows コンテナはタスク定義で指定された一定量の CPU にのみアクセスします。

essential

型: ブール値

必須: いいえ

コンテナの essential パラメータが true とマークされている場合、そのコンテナが何らかの理由で失敗または停止すると、タスクに含まれる他のすべてのコンテナは停止されます。コンテナの essential パラメータが false とマークされている場合、その失敗はタスクに含まれる残りのコンテナに影響を与えません。このパラメータを省略した場合、コンテナは必須と見なされます。

すべてのタスクには少なくとも 1 つの必須のコンテナが必要です。アプリケーションが複数のコンテナで構成される場合は、用途が共通するコンテナをコンポーネントにグループ化し、それらのコンポーネントを複数のタスク定義に分ける必要があります。詳細については、「アプリケーションのアーキテクチャ」を参照してください。

"essential": true|false
entryPoint

重要

初期のバージョンの Amazon ECS コンテナエージェントは、entryPoint パラメータを正しく処理しません。entryPoint の使用時に問題が発生する場合は、コンテナエージェントを更新するか、代わりに command 配列項目としてコマンドと引数を入力します。

タイプ: 文字列配列

必須: いいえ

コンテナに渡されるエントリポイント。このパラメータは、Docker Remote APIコンテナを作成する セクションの Entrypoint にマッピングし、--entrypoint オプションを docker run にマッピングします。Docker ENTRYPOINT パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#entrypoint を参照してください。

"entryPoint": ["string", ...]
command

タイプ: 文字列配列

必須: いいえ

コンテナに渡すコマンド。このパラメータは、Docker Remote APIコンテナを作成する セクションの Cmd にマッピングし、 COMMAND パラメータを docker run にマッピングします。Docker CMD パラメータの詳細については、https://docs.docker.com/engine/reference/builder/#cmd を参照してください。

"command": ["string", ...]
workingDirectory

タイプ: 文字列

必須: いいえ

コンテナ内でコマンドを実行する作業ディレクトリ。このパラメータは、Docker Remote APIコンテナを作成する セクションの WorkingDir にマッピングし、--workdir オプションを docker run にマッピングします。

"workingDirectory": "string"
environment

タイプ: オブジェクト配列

必須: いいえ

コンテナに渡す環境変数。このパラメータは、Docker Remote APIコンテナを作成する セクションの Env にマッピングし、--env オプションを docker run にマッピングします。

重要

認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。

name

タイプ: 文字列

必須: はい (environment を使用する場合)

環境変数の名前。

value

タイプ: 文字列

必須: はい (environment を使用する場合)

環境変数の値。

"environment" : [ { "name" : "string", "value" : "string" }, { "name" : "string", "value" : "string" } ]
secrets

タイプ: オブジェクト配列

必須: いいえ

コンテナに環境変数として渡すシークレット。

name

タイプ: 文字列

必須: はい (environment を使用する場合)

コンテナの環境変数として設定する値。

valueFrom

タイプ: 文字列

必須: はい (environment を使用する場合)

コンテナに公開するシークレットです。サポートされている値は、AWS Systems Manager パラメータストア パラメータの名前または完全な ARN です。

注記

起動しているタスクと同じリージョンに Systems Manager パラメータストアパラメータが存在する場合は、シークレットの完全な ARN または名前のどちらも使用できます。別のリージョンにパラメータが存在する場合は、完全な ARN を指定する必要があります。

"secrets": [ { "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" } ]

ネットワーク設定

disableNetworking

型: ブール値

必須: いいえ

このパラメータが true のとき、ネットワーキングはコンテナ内で無効になります。このパラメータは、Docker Remote APIコンテナを作成する セクションの NetworkDisabled にマッピングされます。

注記

このパラメータは、awsvpc ネットワークモードを使用するタスクや Windows コンテナではサポートされていません。

"disableNetworking": true|false
links

タイプ: 文字列配列

必須: いいえ

link パラメータでは、コンテナがポートマッピングを必要とせずに互いに通信することを許可します。タスク定義のネットワークモードが bridge に設定されている場合にのみサポートされます。name:internalName 構造体は Docker リンクの name:alias に似ています。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。 Docker コンテナのリンクの詳細については、https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/ を参照してください。このパラメータは、Docker Remote APIコンテナを作成する セクションの Links にマッピングし、--link オプションを docker run にマッピングします。

注記

このパラメータは、awsvpc ネットワークモードを使用するタスクや Windows コンテナではサポートされていません。

重要

1 つのコンテナインスタンスに配置されたコンテナは、リンクやホストポートマッピングを必要とせずに互いに通信できる場合があります。セキュリティグループと VPC 設定を使用して、コンテナインスタンスでネットワークを分離します。

"links": ["name:internalName", ...]
hostname

タイプ: 文字列

必須: いいえ

コンテナに使用するホスト名。このパラメータは、Docker Remote APIコンテナを作成する セクションの Hostname にマッピングし、--hostname オプションを docker run にマッピングします。

注記

awsvpc ネットワークモードを使用している場合、hostname パラメータはサポートされません。

"hostname": "string"
dnsServers

タイプ: 文字列配列

必須: いいえ

コンテナに渡す DNS サーバーのリスト。このパラメータは、Docker Remote APIコンテナを作成する セクションの Dns にマッピングし、--dns オプションを docker run にマッピングします。

注記

このパラメータは Windows コンテナではサポートされません。

"dnsServers": ["string", ...]
dnsSearchDomains

タイプ: 文字列配列

必須: いいえ

パターン: ^[a-zA-Z0-9-.]{0,253}[a-zA-Z0-9]$

コンテナに渡す DNS 検索ドメインのリスト。このパラメータは、Docker Remote APIコンテナを作成する セクションの DnsSearch にマッピングし、--dns-search オプションを docker run にマッピングします。

注記

このパラメータは、awsvpc ネットワークモードを使用するタスクや Windows コンテナではサポートされていません。

"dnsSearchDomains": ["string", ...]
extraHosts

タイプ: オブジェクト配列

必須: いいえ

コンテナ上の /etc/hosts ファイルに追加する、ホスト名と IP アドレスのマッピングのリスト。

このパラメータは、Docker Remote APIコンテナを作成する セクションの ExtraHosts にマッピングし、--add-host オプションを docker run にマッピングします。

注記

このパラメータは Windows コンテナまたは、awsvpc ネットワークモードを使用するタスクではサポートされていません。

"extraHosts": [ { "hostname": "string", "ipAddress": "string" } ... ]
hostname

タイプ: 文字列

必須: はい (extraHosts を使用する場合)

/etc/hosts エントリで使用するホスト名。

ipAddress

タイプ: 文字列

必須: はい (extraHosts を使用する場合)

/etc/hosts エントリで使用する IP アドレス。

ストレージとログ記録

readonlyRootFilesystem

型: ブール値

必須: いいえ

このパラメータが true のとき、コンテナはそのルートファイルシステムへの読み取り専用アクセスを許可されます。このパラメータは、Docker Remote APIコンテナを作成する セクションの ReadonlyRootfs にマッピングし、--read-only オプションを docker run にマッピングします。

注記

このパラメータは Windows コンテナではサポートされません。

"readonlyRootFilesystem": true|false
mountPoints

型: オブジェクト

必須: いいえ

コンテナでのデータボリュームのマウントポイント。

このパラメータは、Docker Remote APIコンテナを作成する セクションの Volumesdocker run--volume オプションにマッピングされます。

Windows コンテナは $env:ProgramData と同じドライブに全部のディレクトリをマウントできます。Windows コンテナは、別のドライブにディレクトリをマウントできません。また、マウントポイントは複数のドライブにまたがることはできません。

sourceVolume

型: 文字列

必須: はい (mountPoints を使用する場合)

マウントするボリュームの名前。

containerPath

型: 文字列

必須: はい (mountPoints を使用する場合)

ボリュームをマウントするコンテナ上のパス。

readOnly

タイプ: ブール値

必須: いいえ

この値が true の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が false の場合、コンテナはボリュームに書き込むことができます。デフォルト値は false です。

volumesFrom

タイプ: オブジェクト配列

必須: いいえ

別コンテナからマウントするデータボリューム。このパラメータは、Docker Remote APIコンテナを作成する セクションの VolumesFrom にマッピングし、--volumes-from オプションを docker run にマッピングします。

sourceContainer

タイプ: 文字列

必須: はい (volumesFrom を使用する場合)

ボリュームのマウント元のコンテナの名前。

readOnly

型: ブール値

必須: いいえ

この値が true の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が false の場合、コンテナはボリュームに書き込むことができます。デフォルト値は false です。

"volumesFrom": [ { "sourceContainer": "string", "readOnly": true|false } ]
logConfiguration

タイプ: LogConfiguration オブジェクト

必須: いいえ

コンテナのログ設定の仕様。

Fargate 起動タイプを使用している場合、サポートされる値は awslogs だけです。タスク定義で awslogs ロギングドライバーを使用してコンテナログを CloudWatch Logs に送信する方法の詳細については、「awslogs ログドライバーを使用する」を参照してください。

このパラメータは、Docker Remote APIコンテナを作成する セクションの LogConfig にマッピングし、--log-driver オプションを docker run にマッピングします。デフォルトでは、コンテナは Docker デーモンと同じロギングドライバーを使用します。ただし、コンテナ定義でこのパラメータを使用してロギングドライバーを指定することで、コンテナは Docker デーモンとは異なるロギングドライバーを使用できます。コンテナに異なるロギングドライバーを使用するには、コンテナインスタンス (またはリモートログ記録オプションの別のログサーバー) でログシステムを適切に設定する必要があります。サポートされているさまざまなロギングドライバーのオプションの詳細については、Docker ドキュメントの「ロギングドライバーの設定」を参照してください。

注記

Amazon ECS では現在、Docker デーモンの使用可能なロギングドライバーがいくつかサポートされています (以下の有効な値を参照)。Amazon ECS コンテナエージェントの今後のリリースで他のログドライバーが追加される可能性があります。

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.

注記

コンテナインスタンスで実行される Amazon ECS コンテナエージェントは、ECS_AVAILABLE_LOGGING_DRIVERS 環境変数を使用して、そのインスタンスで使用できるロギングドライバーを登録する必要があります。その後、そのインスタンスに配置されたコンテナがこれらのログ設定オプションを使用できるようになります。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

"logConfiguration": { "logDriver": "json-file"|"syslog"|"journald"|"gelf"|"fluentd"|"awslogs"|"splunk", "options": {"string": "string" ...}
logDriver

タイプ: 文字列

有効な値: "json-file" | "syslog" | "journald" | "gelf" | "fluentd" | "awslogs" | "splunk"

必須: はい (logConfiguration を使用する場合)

コンテナに使用するログドライバー。上記の有効な値は、Amazon ECS コンテナエージェントがデフォルトで通信できるログドライバーです。

Fargate 起動タイプを使用している場合、サポートされる値は awslogs だけです。

注記

上記に示されていないカスタムドライバーがある場合、GitHub で入手できる Amazon ECS コンテナエージェントプロジェクトを fork し、そのドライバーを使用するようにカスタマイズできます。含めることを希望する変更について、プルリクエストを送信することをお勧めします。ただし、現在はこのソフトウェアの修正されたコピーの実行をサポートしていません。

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.

options

タイプ: 文字列間のマッピング

必須: いいえ

ログドライバーに送信する設定オプション。

This parameter requires version 1.19 of the Docker Remote API or greater on your container instance.

セキュリティ

privileged

型: ブール値

必須: いいえ

このパラメータが true のとき、コンテナには、ホストコンテナインスタンスに対する昇格されたアクセス権限 (root ユーザーと同様) が付与されます。

このパラメータは、Docker Remote APIコンテナを作成する セクションの Privileged にマッピングし、--privileged オプションを docker run にマッピングします。

注記

このパラメータは、Fargate 起動タイプを使用する Windows コンテナまたはタスクではサポートされていません。

"privileged": true|false
user

タイプ: 文字列

必須: いいえ

コンテナ内で使用するユーザー名。このパラメータは、Docker Remote APIコンテナを作成する セクションの User にマッピングし、--user オプションを docker run にマッピングします。

注記

このパラメータは Windows コンテナではサポートされません。

"user": "string"
dockerSecurityOptions

タイプ: 文字列配列

必須: いいえ

SELinux と AppArmor のマルチレベルセキュリティシステムのカスタムラベルになる文字列のリスト。

このパラメータは、Docker Remote APIコンテナを作成する セクションの SecurityOpt にマッピングし、--security-opt オプションを docker run にマッピングします。

注記

このパラメータは、Fargate 起動タイプを使用する Windows コンテナまたはタスクではサポートされていません。

"dockerSecurityOptions": ["string", ...]

注記

コンテナインスタンスで実行される Amazon ECS コンテナエージェントは、ECS_SELINUX_CAPABLE=true または ECS_APPARMOR_CAPABLE=true 環境変数を使用して登録する必要があります。その後、そのインスタンスに配置されたコンテナがこれらのセキュリティオプションを使用できるようになります。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

リソースの制限

ulimits

タイプ: オブジェクト配列

必須: いいえ

コンテナで設定する ulimits のリスト。このパラメータは、Docker Remote APIコンテナを作成する セクションの Ulimits にマッピングし、--ulimit オプションを docker run にマッピングします。

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.

注記

このパラメータは Windows コンテナではサポートされません。

"ulimits": [ { "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack", "softLimit": integer, "hardLimit": integer } ... ]
name

タイプ: 文字列

有効な値: "core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"

必須: はい (ulimits を使用する場合)

ulimittype

hardLimit

タイプ: 整数

必須: はい (ulimits を使用する場合)

ulimit タイプのハード制限。

softLimit

タイプ: 整数

必須: はい (ulimits を使用する場合)

ulimit タイプのソフト制限。

Docker のラベル

dockerLabels

タイプ: 文字列間のマッピング

必須: いいえ

コンテナに追加するラベルのキー/値マップ。このパラメータは、Docker Remote APIコンテナを作成する セクションの Labels にマッピングし、--label オプションを docker run にマッピングします。

This parameter requires version 1.18 of the Docker Remote API or greater on your container instance.

"dockerLabels": {"string": "string" ...}

その他のコンテナ定義のパラメータ

以下のコンテナ定義パラメータは、[Configure via JSON (JSON による設定)] オプションを使用して、Amazon ECS コンソールでタスク定義を登録するときに使用できます。詳細については、「タスク定義の作成」を参照してください。

Linux パラメータ

linuxParameters

型: LinuxParameters オブジェクト

必須: いいえ

KernelCapabilities など、コンテナに適用される Linux 固有のオプション。

注記

このパラメータは Windows コンテナではサポートされません。

"linuxParameters": { "capabilities": { "add": ["string", ...], "drop": ["string", ...] } }
capabilities

型: KernelCapabilities オブジェクト

必須: いいえ

Docker によって提供されているデフォルト設定に対して追加または削除する、コンテナ用の Linux 機能。デフォルトの機能およびデフォルト以外の使用可能な機能の詳細については、Docker run reference の「Runtime privilege and Linux capabilities」を参照してください。これらの Linux 機能の詳細については、Linux マニュアルページの「機能(7)」を参照してください。

注記

Fargate 起動タイプを使用するタスクを使用する場合は、capabilities はサポートされますが、以下に説明する add パラメータはサポートされていません。

add

タイプ: 文字列配列

有効な値: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"

必須: いいえ

Docker によって提供されているデフォルト設定に追加する、コンテナ用の Linux 機能。このパラメータは、Docker Remote APIコンテナを作成する セクションの CapAdd にマッピングし、--cap-add オプションは docker run にマッピングします。

注記

Fargate 起動タイプを使用するタスクを使用している場合、add パラメータはサポートされません。

drop

タイプ: 文字列配列

有効な値: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"

必須: いいえ

Docker によって提供されているデフォルト設定から削除する、コンテナ用の Linux 機能。このパラメータは、Docker Remote APIコンテナを作成する セクションの CapDrop にマッピングし、--cap-drop オプションは docker run にマッピングします。

devices

コンテナに公開するすべてのホストデバイス。このパラメータは、Docker Remote APIコンテナを作成する セクションの Devices にマッピングし、--device オプションは docker run にマッピングします。

注記

Fargate 起動タイプを使用するタスクを使用している場合、devices パラメータはサポートされません。

型: デバイスオブジェクト配列

必須: いいえ

hostPath

ホストコンテナインスタンス上のデバイスのパス。

型: 文字列

必須: はい

containerPath

ホストデバイスを公開するコンテナ内のパス。

型: 文字列

必須: いいえ

permissions

デバイス用のコンテナを提供する明示的なアクセス許可デフォルトでは、コンテナにはデバイスの readwrite、および mknod のアクセス許可があります。

タイプ: 文字列の配列

有効な値: read | write | mknod

initProcessEnabled

信号を転送しプロセスを利用するコンテナ内で、init を実行。このパラメータは、docker run--init オプションにマッピングされます。

This parameter requires version 1.25 of the Docker Remote API or greater on your container instance.

sharedMemorySize

/dev/shm ボリュームのサイズ値 (MiB) です。このパラメータは、docker run--shm-size オプションにマッピングされます。

注記

Fargate 起動タイプを使用するタスクを使用している場合、sharedMemorySize パラメータはサポートされません。

型: 整数

tmpfs

Tmpfs マウントのコンテナパス、マウントオプション、サイズ (MiB) です。このパラメータは、docker run--tmpfs オプションにマッピングされます。

注記

Fargate 起動タイプを使用するタスクを使用している場合、tmpfs パラメータはサポートされません。

型: Tmpfs オブジェクト配列

必須: いいえ

containerPath

Tmpfs ボリュームがマウントされる絶対ファイルパスです。

型: 文字列

必須: はい

mountOptions

Tmpfs ボリュームのマウントオプションのリストです。

タイプ: 文字列の配列

必須: いいえ

有効な値: "defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"

size

Tmpfs ボリュームのサイズ (MiB) です。

型: 整数

必須: はい

システムコントロール

systemControls

型: SystemControl オブジェクト

必須: いいえ

コンテナ内で設定する名前空間カーネルパラメータのリスト。このパラメータは、Docker Remote APIコンテナを作成する セクションの Sysctls にマッピングし、--sysctl オプションを docker run にマッピングします。

awsvpc または host ネットワークモードのいずれかを使用する単一のタスクで複数のコンテナに対してネットワーク関連の systemControls パラメータを指定することが推奨されない理由は次のとおりです。

  • awsvpc ネットワークモードを使用するタスクの場合、systemControls をコンテナ用に設定した場合、タスク内のすべてのコンテナに適用されます。単一のタスクの複数のコンテナに対して異なる systemControls を設定すると、最後に開始されたコンテナにより有効になる systemControls が決定します。

  • host ネットワークモードを使用するタスクでは、ネットワーク名前空間 systemControls はサポートされていません。

タスクのコンテナに使用するため IPC リソース名前空間を設定している場合は、次のようにシステムコントロールに適用されます。詳細については、「IPC モード」を参照してください。

  • host IPC モードを使用するタスクの場合、IPC 名前空間の systemControls はサポートされていません。

  • task IPC モードを使用するタスクでは、IPC 名前空間の systemControls 値はタスク内のすべてのコンテナに適用されます。

注記

このパラメータは、Fargate 起動タイプを使用する Windows コンテナまたはタスクではサポートされていません。

"systemControls": [ { "namespace":"string", "value":"string" } ]
namespace

型: 文字列

必須: いいえ

value を設定する名前空間カーネルパラメータ。

有効な IPC 名前空間値: "kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"、および "fs.mqueue.*" で始まる Sysctls

有効なネットワーク名前空間値: "net.*" で始まる Sysctls

value

型: 文字列

必須: いいえ

namespace 指定された名前空間カーネルパラメータの値。

インタラクティブ

interactive

型: ブール値

必須: いいえ

このパラメータは true で、コンテナ化されたアプリケーションをデプロイすることができます。これには stdin または tty を割り当てる必要があります。このパラメータは、Docker Remote APIコンテナを作成する セクションの OpenStdin にマッピングし、--interactive オプションを docker run にマッピングします。

擬似ターミナル

pseudoTerminal

型: ブール値

必須: いいえ

このパラメータが true の場合、TTY が割り当てられます。このパラメータは、Docker Remote APIコンテナを作成する セクションの Tty にマッピングし、--tty オプションを docker run にマッピングします。

ボリューム

タスク定義を登録する際、コンテナインスタンスの Docker デーモンに渡されるボリュームのリストをオプションで指定することができます。これにより、同じコンテナインスタンス上の他のコンテナで使用できるようになります。

使用できるデータボリュームの種類は以下のとおりです。

  • Docker ボリューム — コンテナインスタンスの /var/lib/docker/volumes に作成される Docker マネージドボリューム。Docker ボリュームドライバー (プラグインとも呼ばれる) は、ボリュームを外部ストレージシステム ( など) と統合するために使用します。組み込みの local ボリュームドライバーまたはサードパーティーのボリュームドライバーを使用できます。Docker ボリュームは、 起動タイプを使用する場合にのみサポートされます。Windows コンテナでは、 ドライバーの使用のみサポートされます。Docker ボリュームを使用するには、タスク定義で を指定します。詳細については、「ボリュームの使用」を参照してください。

  • バインドマウント — ホストマシン上のファイルやディレクトリがコンテナにマウントされます。バインドマウントのホストボリュームは、Fargate 起動タイプまたは 起動タイプを使用する場合にサポートされます。バインドマウントのホストボリュームを使用するには、タスク定義で sourcePath およびオプションの 値を使用します。詳細については、「バインドマウントの使用」を参照してください。

詳細については、「タスクでのデータボリュームの使用」を参照してください。

以下のパラメータをコンテナ定義で使用できます。

name

型: 文字列

必須: いいえ

ボリュームの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。この名前は、コンテナ定義 mountPointssourceVolume パラメータで参照されます。

dockerVolumeConfiguration

型: オブジェクト

必須: いいえ

このパラメータは、Docker ボリュームを使用する場合に指定します。Docker ボリュームは、 起動タイプを使用する場合にのみサポートされます。Windows コンテナでは、 ドライバーの使用のみサポートされます。バインドマウントを使用するには、代わりに host を指定します。

scope

型: 文字列

有効な値: task | shared

必須: いいえ

Docker ボリュームのスコープ。これにより、ボリュームのライフサイクルが決定されます。Docker ボリュームの範囲が の場合は、タスクが開始すると自動的にプロビジョンされ、タスクが停止すると破棄されます。Docker ボリュームの範囲が の場合は、タスクの停止後も保持されます。

autoprovision

タイプ: ブール値

デフォルト値: false

必須: いいえ

この値が true の場合は、Docker ボリュームが作成されます (まだ存在していない場合)。

注記

このフィールドは、scopeshared の場合のみ使用されます。

driver

型: 文字列

必須: いいえ

使用する Docker ボリュームドライバーの名前。ドライバーの値は、タスク配置に使用されるため、Docker で提供されているドライバー名と一致する必要があります。ドライバーが Docker プラグイン CLI を使用してインストール済みである場合は、docker plugin ls を使用してコンテナインスタンスからドライバー名を取得します。ドライバーが別の方法を使用してインストール済みである場合は、Docker プラグインの検出を使用してドライバー名を取得します。詳細については、「Docker プラグインの検出」を参照してください。このパラメータは、Docker Remote API の「ボリュームの作成」セクションの Driver と、「docker volume create」の --driver オプションにマッピングされます。

driverOpts

型: 文字列

必須: いいえ

パススルーする Docker ドライバー固有のオプションのマップ。このパラメータは、Docker Remote API の「ボリュームの作成」セクションの DriverOpts と、「docker volume create」の --opt オプションにマッピングされます。

labels

型: 文字列

必須: いいえ

Docker ボリュームに追加するカスタムメタデータ。このパラメータは、Docker Remote API の「ボリュームの作成」セクションの Labels と、「docker volume create」の --label オプションにマッピングされます。

host

必須: いいえ

バインドマウントを使用する場合、このパラメータが指定されます。Docker ボリュームを使用するには、代わりに dockerVolumeConfiguration を指定します。host パラメータの内容により、バインドマウントのデータボリュームがホストコンテナインスタンスで保持されるかどうかと、その保存場所が決まります。host パラメーターが空の場合、Docker デーモンはデータボリュームのホストパスを割り当てますが、関連付けられたコンテナの実行が停止した後にデータが保持されるとは限りません。

バインドマウントのホストボリュームは、EC2 起動タイプ、または Fargate 起動タイプ使用時にサポートされています。

Windows コンテナは $env:ProgramData と同じドライブに全部のディレクトリをマウントできます。Windows コンテナは、別のドライブにディレクトリをマウントできません。また、マウントポイントは複数のドライブにまたがることはできません。たとえば、C:\my\path:C:\my\path および D:\:D:\ はマウントできますが、D:\my\path:C:\my\path または D:\:C:\my\path はマウントできません。

sourcePath

型: 文字列

必須: いいえ

host パラメータを使用する場合は、sourcePath を指定して、コンテナに表示されるホストコンテナインスタンスのパスを宣言します。このパラメータが空の場合は、Docker デーモンによってホストパスが割り当てられています。host パラメーターに sourcePath の場所が含まれている場合、データボリュームは手動で削除するまでホストコンテナインスタンスの指定された場所に保持されます。sourcePath の場所がホストコンテナインスタンスに存在しない場は、Docker デーモンによって作成されます。その場所が存在する場合は、ソースパスフォルダーの内容がエクスポートされます。

タスク配置の制約事項

タスク定義の登録時、Amazon ECS でのタスク配置方法をカスタマイズするタスク配置の制約を指定できます。

Fargate 起動タイプを使用している場合、タスク配置の制約事項はサポートされません。デフォルトでは、Fargate タスクはアベイラビリティーゾーンにまたがって分散されています。

EC2 起動タイプを使用するタスクの場合、アベイラビリティーゾーン、インスタンスタイプ、またはカスタム属性に基づいたタスク配置の制約を使用できます。詳細については、「Amazon ECS タスク配置の制約事項」を参照してください。

以下のパラメータをコンテナ定義で使用できます。

expression

タイプ: 文字列

必須: いいえ

制約に適用されるクラスタークエリ言語式。詳細については、「クラスタークエリ言語」を参照してください。

type

タイプ: 文字列

必須: はい

制約事項のタイプ。選択対象を有効な候補グループに制約するには、memberOf を使用します。

起動タイプ

タスク定義を登録する際、タスクで使用する起動タイプを指定します。詳細については、「Amazon ECS 起動タイプ」を参照してください。

以下のパラメータをタスク定義で使用できます。

requiresCompatibilities

タイプ: 文字列配列

必須: いいえ

有効な値: EC2 | FARGATE

タスクが使用している起動タイプ。これにより、タスク定義で使用されているすべてのパラメータが、起動タイプの要件を満たしていることを確認できます。

有効な値は、FARGATE および EC2 です。起動タイプの詳細については、「Amazon ECS 起動タイプ」を参照してください。

タスクサイズ

タスク定義の登録時に、タスクに使用される CPU とメモリの合計量を指定できます。これは、コンテナ定義レベルの cpu および memory の値とは異なります。EC2 起動タイプを使用する場合、これらのフィールドはオプションです。Fargate 起動タイプを使用する場合、これらのフィールドは必須であり、サポートされている cpu および memory の両方に特定の値があります。

注記

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

以下のパラメータをタスク定義で使用できます。

cpu

タイプ: 文字列

必須: いいえ

注記

このパラメータは Windows コンテナではサポートされません。

タスクで使用されている CPU ユニットの数。タスク定義では、CPU ユニットを使用して整数 (例: 1024) で表すか、vCPU を使用して文字列 (例: 1 vCPU または 1 vcpu) で表すことができます。タスク定義が登録されると、vCPU 値は、CPU ユニットを示す整数に変換されます。

EC2 起動タイプを使用する場合、このフィールドはオプションです。サポートされている値は 128 CPU ユニット (0.125 vCPU) ~ 10240 CPU ユニット (10 vCPU) です。

Fargate 起動タイプを使用している場合、このフィールドは必須であり、次のいずれかの値を使用する必要があります。この値により memory パラメータのサポートされる値の範囲が決まります。

CPU の値 メモリの値 (MiB)
256 (.25 vCPU) 512 (0.5 GB)、1024 (1 GB)、2048 (2 GB)
512 (.5 vCPU) 1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB)
1024 (1 vCPU) 2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB)
2048 (2 vCPU) 4096 (4 GB)~16384 (16 GB) (1024 (1 GB) のインクリメント)
4096 (4 vCPU) 8192 (8 GB)~30720 (30 GB) (1024 (1 GB) のインクリメント)
memory

タイプ: 文字列

必須: いいえ

注記

このパラメータは Windows コンテナではサポートされません。

タスクが使用するメモリの量 (MiB 単位)。タスク定義では、MiB を使用した整数 (例: 1024) で表すか、GB を使用した文字列 (例: 1GB または 1 GB) で表すことができます。タスク定義が登録されると、GB 値は、MiB を示す整数に変換されます。

EC2 起動タイプを使用する場合、このフィールドはオプションです。

Fargate 起動タイプを使用している場合、このフィールドは必須であり、次のいずれかの値を使用する必要があります。この値により cpu パラメータのサポートされる値の範囲が決まります。

メモリの値 (MiB) CPU の値
512 (0.5 GB)、1024 (1 GB)、2048 (2 GB) 256 (.25 vCPU)
1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB) 512 (.5 vCPU)
2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB) 1024 (1 vCPU)
4096 (4 GB)~16384 (16 GB) (1024 (1 GB) のインクリメント) 2048 (2 vCPU)
8192 (8 GB)~30720 (30 GB) (1024 (1 GB) のインクリメント) 4096 (4 vCPU)

その他のタスク定義パラメータ

以下のタスク定義パラメータは、[Configure via JSON (JSON による設定)] オプションを使用して、Amazon ECS コンソールでタスク定義を登録するときに使用できます。詳細については、「タスク定義の作成」を参照してください。

IPC モード

ipcMode

型: 文字列

必須: いいえ

タスクのコンテナで使用する IPC リソースの名前空間。有効な値は hosttask または none です。host が指定されている場合、同じコンテナインスタンスで host IPC モードを指定したタスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じ IPC リソースを共有します。task が指定されている場合、指定したタスク内のすべてのコンテナは同じ IPC リソースを共有します。none が指定されている場合、タスクのコンテナ内の IPC リソースはプライベートです。タスク内またはコンテナインスタンスの他のコンテナと共有されることはありません。値を指定しない場合、IPC リソース名前空間の共有はコンテナインスタンスの Docker デーモンの設定によって異なります。詳細については、Docker run reference の「IPC settings」を参照してください。

host IPC モードを使用する場合は、意図せず IPC 名前空間が公開されるリスクが高いことに注意してください。詳細については、「Docker security」を参照してください。

タスクのコンテナに systemControls を使用して名前空間のカーネルパラメータを設定している場合は、次のように IPC リソース名前空間に適用されます。詳細については、「システムコントロール」を参照してください。

  • host IPC モードを使用するタスクの場合、systemControls に関連する IPC 名前空間はサポートされていません。

  • task IPC モードを使用するタスクでは、systemControls に関連する IPC 名前空間はタスク内のすべてのコンテナに適用されます。

注記

このパラメータは、Fargate 起動タイプを使用する Windows コンテナまたはタスクではサポートされていません。

PID モード

pidMode

型: 文字列

必須: いいえ

タスクのコンテナで使用するプロセス名前空間。有効な値は host または task です。host が指定されている場合、同じコンテナインスタンスで host PID モードを指定したタスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じ IPC リソースを共有します。task が指定されている場合、指定したタスク内のすべてのコンテナは同じプロセス名前空間を共有します。値が指定されていない場合、デフォルトはプライベート名前空間です。詳細については、Docker run reference の「PID settings」を参照してください。

host PID モードを使用する場合は、意図せずプロセス名前空間が公開されるリスクが高いことに注意してください。詳細については、「Docker security」を参照してください。

注記

このパラメータは、Fargate 起動タイプを使用する Windows コンテナまたはタスクではサポートされていません。