タスク定義パラメータ - Amazon ECS

タスク定義パラメータ

タスク定義は、タスクファミリ、IAM タスクロール、ネットワークモード、コンテナ定義、ボリューム、タスク配置の制約事項、起動タイプの各部分に分かれています。ファミリとコンテナの定義は、タスク定義の必須項目です。これに対して、タスクロール、ネットワークモード、ボリューム、タスク配置の制約、起動タイプは省略することができます。

これらのパラメータを JSON ファイルで使用し、タスク定義を設定できます。詳細については、「タスク定義の例」を参照してください。

以下に示すのは、各タスク定義パラメータのより詳細な説明です。

ファミリー

family

タイプ: 文字列

必須: はい

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

起動タイプ

タスク定義の登録時、Amazon ECS がタスク定義の検証基準となる起動タイプを指定できます。タスク定義が指定された互換性を検証しない場合、クライアント例外が返されます。詳しくは、「Amazon ECS 起動タイプ」を参照してください。

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

requiresCompatibilities

タイプ: 文字列配列

必須: いいえ

有効な値: EC2 | FARGATE | EXTERNAL

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

タスク実行ロール

executionRoleArn

タイプ: 文字列

必須: 条件による

ユーザーに代わって AWS API コールを実行するアクセス許可を Amazon ECS コンテナエージェントに付与するタスク実行ロールの Amazon リソースネーム (ARN)。

注記

タスク実行 IAM ロールは、タスクの要件に応じて必要です。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。

ネットワークモード

networkMode

タイプ: 文字列

必須: いいえ

タスクのコンテナで使用する Docker ネットワークモード。Fargate でホストされている Amazon ECS タスクの場合、awsvpc ネットワークモードが必要です。

ネットワークモードが awsvpc の場合は、タスクに Elastic Network Interface が割り当てられるため、タスク定義を使用したサービスの作成時またはタスクの実行時に NetworkConfiguration を指定する必要があります。詳細については、AWS Fargate 用 Amazon Elastic Container Service 開発者ガイドの「Fargate タスクネットワーキング」を参照してください。

awsvpc ネットワークモードでは、コンテナのネットワークパフォーマンスは最大限になります。Amazon EC2 ネットワークスタックを使用するためです。公開されたコンテナのポートは、アタッチされた Elastic Network Interface ポートに直接マッピングされます。このため、動的ホストポートマッピングは使用できません。

ランタイムプラットフォーム

Fargate 起動タイプの場合、以下のパラメータは必須です。

operatingSystemFamily

タイプ: 文字列

必須: 条件による

デフォルト: LINUX

Fargate でホストされる Amazon ECS タスクでは、このパラメータは必須です。

タスク定義を登録する際、オペレーティングシステムファミリを指定します。

Fargate でホストされる Amazon ECS タスクの場合、有効な値は、LINUXWINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2022_FULL、および WINDOWS_SERVER_2022_CORE です。

EC2 でホストされる Amazon ECS タスクの有効な値は、LINUXWINDOWS_SERVER_2022_COREWINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2019_FULL および WINDOWS_SERVER_2019_COREWINDOWS_SERVER_2016_FULLWINDOWS_SERVER_2004_COREWINDOWS_SERVER_20H2_CORE です。

サービスで使用されるすべてのタスク定義は、このパラメータに対して同じ値を設定する必要があります。

タスク定義がサービスの一部である場合、この値はサービスの platformFamily 値と一致する必要があります。

cpuArchitecture

タイプ: 文字列

必須: 条件による

デフォルト: X86_64

このパラメータは、Fargate でホストされる Amazon ECS タスクに必要です。

タスク定義を登録する際は、CPU アーキテクチャを指定します。有効な値は X86_64 および ARM64 です。

サービスで使用されるすべてのタスク定義は、このパラメータに対して同じ値を設定する必要があります。

Fargate 起動タイプまたは EC2 起動タイプのいずれかの Linux タスクを使用する場合、値を ARM64 に設定できます。詳細については、「Amazon ECSの 64-bit ARM ワークロードの操作」を参照してください。

タスクサイズ

タスク定義の登録時に、そのタスクが使用する CPU とメモリの合計量を指定できます。これは、コンテナ定義レベルの cpu および memory の値とは異なります。Amazon EC2 インスタンスでホストされるタスクの場合、これらのフィールドは省略可能です。Fargate (Linux 向けと Windows 向けの両方) でホストされるタスクの場合、これらのフィールドは必須です。また、cpu および memory の両方について、特定の値がサポートされています。

注記

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

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

cpu

タイプ: 文字列

必須: 条件による

注記

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

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

Fargate (Linux と Windows コンテナの両方) で実行されるタスクの場合、このフィールドは必須であり、以下のいずれかの値を使用する必要があります。この値により memory パラメータでサポートされる値の範囲が決まります。

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

memory

タイプ: 文字列

必須: 条件による

注記

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

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

Fargate (Linux と Windows コンテナの両方) でホストしたタスクの場合、このフィールドは必須であり、以下のいずれかの値を使用する必要があります。この値により cpu パラメータでサポートされる値の範囲が決まります。

メモリの値 (MiB)

CPU の値

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

512 (0.5 GB)、1024 (1 GB)、2048 (2 GB)

256 (.25 vCPU)

Linux

1024 (1 GB)、2048 (2 GB)、3072 (3 GB)、4096 (4 GB)

512 (.5 vCPU)

Linux

2048 (2 GB)、3072 (3 GB)、4096 (4 GB)、5120 (5 GB)、6144 (6 GB)、7168 (7 GB)、8192 (8 GB)

1,024 (1 vCPU)

Linux、Windows

4,096 (4 GB)~16,384 (16 GB) (1,024 (1 GB) 単位の増加)

2,048 (2 vCPU)

Linux、Windows

8,192 (8 GB)~30,720 (30 GB) (1,024 (1 GB) 単位の増加)

4,096 (4 vCPU)

Linux、Windows

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

注記

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

8192 (8 vCPU)

Linux

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

注記

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

16384 (16vCPU)

Linux

コンテナ定義

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

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

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

名前

name

タイプ: 文字列

必須: はい

コンテナの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。タスク定義で複数のコンテナをリンクしている場合、あるコンテナの name を別のコンテナの links に入力できます。これにより、コンテナ同士を接続します。

[Image] (イメージ)

image

タイプ: 文字列

必須: はい

コンテナの開始に使用するイメージ。この文字列は Docker デーモンに直接渡されます。Docker Hub レジストリのイメージはデフォルトで使用できます。repository-url/image:tag または repository-url/image@digest で他のリポジトリを指定することもできます。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコア、コロン、ピリオド、スラッシュ、シャープ記号を使用できます。このパラメータは、Docker Remote APICreate a container セクションの Image および docker 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 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。タスク内のすべてのコンテナ用に予約されるメモリの合計量は、タスクの memory 値より小さくする必要があります (指定されている場合)。このパラメータは、Docker Remote APIコンテナの作成セクションの Memory にマップされ、--memory オプションは docker run にマップされます。

Fargate 起動タイプを使用する場合、このパラメータはオプションです。

Docker デーモン 20.10.0 以降によって、コンテナ用として 6 MiB 以上のメモリが予約されます。従って、このコンテナに対しては 6 MiB 未満のメモリは指定しないようにします。

Docker デーモン 19.03.13-ce 以降では、コンテナ用として 4 MiB 以上のメモリが予約されます。このため、このコンテナ用には 4 MiB 未満のメモリを指定しないようにします。

memoryReservation

タイプ: 整数

必須: いいえ

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

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

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

注記

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

Docker デーモン 20.10.0 以降によって、コンテナ用として 6 MiB 以上のメモリが予約されます。従って、このコンテナに対しては 6 MiB 未満のメモリは指定しないようにします。

Docker デーモン 19.03.13-ce 以降では、コンテナ用として 4 MiB 以上のメモリが予約されます。このため、このコンテナ用には 4 MiB 未満のメモリを指定しないようにします。

ポートマッピング

portMappings

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

必須: いいえ

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

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

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

注記

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

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

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

  • API: DescribeTasks レスポンス。

  • メタデータ: タスクメタデータのエンドポイント。

appProtocol

型: 文字列

必須: いいえ

ポートマッピングに使用されるアプリケーションプロトコル。このパラメータは Service Connect にのみ適用されます。アプリケーションが使用するプロトコルと一貫性を持つように、このパラメータを設定することをお勧めします。このパラメータを設定すると、Amazon ECS では、プロトコル固有の接続処理がサービス接続プロキシに追加されます。このパラメータを設定すると、Amazon ECS では、Amazon ECS コンソールと CloudWatch でプロトコル固有のテレメトリーが追加されます。

このパラメータ値を設定しないと、TCP が使用されます。ただし、Amazon ECS では、TCP 用のプロトコル固有のテレメトリーは追加されません。

詳細については、「Service Connect 」を参照してください。

有効なプロトコル値: "HTTP" | "HTTP2" | "GRPC"

containerPort

タイプ: 整数

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

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

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

Fargate 上の Windows コンテナの場合、containerPort にポート 3150 は使用できません。このポートは予約済みです。

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

containerPortRange

型: 文字列

必須: いいえ

動的にマッピングされたホストポート範囲にバインドされるコンテナのポート番号の範囲。

このパラメータは、register-task-definition API を使用してのみ設定できます。このオプションは、portMappings パラメータで使用できます。詳細については、「AWS Command Line Interface リファレンス」の「register-task-definition」を参照してください。

containerPortRange を指定するときは、以下のルールが適用されます。

  • bridge ネットワークモードまたは awsvpc ネットワークモードのいずれかを使用する必要があります。

  • このパラメータは EC2 と AWS Fargate 起動タイプの両方で使用できます。

  • このパラメータは、Linux と Windows の両オペレーティングシステムで使用できます。

  • コンテナインスタンスには、少なくともコンテナエージェントのバージョン 1.67.0 と ecs-init パッケージのバージョン 1.67.0-1 が必要です。

  • 1 つのコンテナにつき、最大 100 のポートレンジを指定できます。

  • hostPortRange は指定しません。hostPortRange の値は次のように設定されます。

    • awsvpc ネットワークモードのタスク内のコンテナでは、hostPortcontainerPort と同じ値に設定されます。これは静的マッピング戦略です。

    • bridge ネットワークモードのタスク内のコンテナの場合、Amazon ECS エージェントはデフォルトの一時範囲から開いているホストポートを見つけ、それを docker に渡してコンテナポートにバインドします。

  • containerPortRange の有効な値は 1~65535 です。

  • 1 つのポートは、コンテナごとに 1 つのポートマッピングにのみ含めることができます。

  • 重複するポート範囲は指定できません。

  • 範囲内の最初のポートは、最後のポートよりも小さくなければなりません。

  • Docker では、ポートの数が多い場合は、Docker デーモン設定ファイルの docker-proxy をオフにすることをお勧めします。

    詳細については、GitHub のウェブサイトの「Issue #11185」を参照してください。

    Docker デーモン設定ファイルの docker-proxy をオフにする方法については、「Amazon ECS 開発者ガイド」の「Docker デーモン」を参照してください。

DescribeTasks を呼び出して、コンテナポートにバインドされているホストポートである hostPortRange を表示することができます。

ポート範囲は、EventBridge に送信される Amazon ECS タスクイベントに含まれません。詳細については、「Amazon ECS イベントおよびEventBridge」を参照してください。

hostPortRange

型: 文字列

必須: いいえ

ネットワークバインディングで使用されるホストのポート番号範囲。これは Docker によって割り当てられ、Amazon ECS エージェントによって配信されます。

hostPort

タイプ: 整数

必須: いいえ

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

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

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

Docker バージョン 1.6.0 以降のデフォルトの一時ポート範囲は、インスタンスの /proc/sys/net/ipv4/ip_local_port_range にリストされています。このカーネルパラメータが使用できない場合、49153–65535 から始まるデフォルトのエフェメラルポート範囲が使用されます。エフェメラルポート範囲では、ホストポートを指定しないでください。これらの範囲は自動割り当て用に予約済みです。一般的に、32768 より小さい番号のポートは一時ポート範囲に含まれません。

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

name

タイプ: 文字列

必須: いいえ。サービスに Service Connect を設定する場合は必要です。

ポートマッピングに使用される名前。このパラメータは Service Connect にのみ適用されます。このパラメータは、サービスの Service Connect 設定で使用する名前です。

詳細については、「Service Connect 」を参照してください。

次の例では、Service Connect の 2 つの必須フィールドが示されています。

"portMappings": [ { "name": string, "containerPort": integer } ]
protocol

型: 文字列

必須: いいえ

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

重要

tcp は Service Connect でのみサポートされます。このフィールドが設定されていない場合は、tcp が暗示されることに注意してください。

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

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

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

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

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

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

ヘルスチェック

healthCheck

コンテナに対するヘルスチェックのコマンドと、コンテナのための関連する設定パラメータです。このパラメータは、Docker Remote APIコンテナの作成セクションの HealthCheck にマッピングされ、docker runHEALTHCHECK パラメータにマッピングされます。

注記

Amazon ECS コンテナエージェントは、タスク定義で指定されたヘルスチェックについてのみ、モニタリングとレポートを行います。Amazon ECS は、コンテナイメージに組み込みた Docker ヘルスチェックについても、コンテナ定義で指定されていない場合はモニタリングしません。コンテナ定義で指定されているヘルスチェックのパラメータは、コンテナイメージ内に存在する Docker ヘルスチェックを上書きします。

DescribeTasks API オペレーションを使用するか、コンソールでタスクの詳細を表示するときに、個々のコンテナとタスクの両方のヘルスステータスを表示できます。

以下に、コンテナに使用される healthStatus 値を示します:

  • HEALTHY — コンテナのヘルスチェックが合格になりました。

  • UNHEALTHY — コンテナのヘルスチェックが不合格になりました。

  • UNKNOWN — コンテナのヘルスチェックが評価中か、コンテナで定義されたヘルスチェックがありません。

以下に、タスクで使用できる healthStatus 値を示します。重要性の低いコンテナのコンテナヘルスチェックステータスは、タスクのヘルスステータスに影響を与えません。

  • HEALTHY — タスク内のすべての必須コンテナがヘルスチェックに合格しました。

  • UNHEALTHY — 1 つ以上の必須コンテナのヘルスチェックが不合格になりました。

  • UNKNOWN — タスク内の必須コンテナのヘルスチェックがまだ評価中か、コンテナヘルスチェックが定義されていません。

サービスの一部ではなく手動で実行されたタスクについては、そのライフサイクルがヘルスステータスに関係なく継続されます。サービスの一部であるタスクで異常が報告された場合には、そのタスクは停止し、サービススケジューラにより置き換えられます。

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

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

command

正常状態かどうかを決定するために、コンテナが実行するコマンドが格納された文字列配列。この文字列配列の先頭には、コマンド引数を直接実行するための CMD、またはコンテナのデフォルトシェルでコマンドを実行するための CMD-SHELL を付加できます。これらのいずれも指定しない場合は CMD が使用されます。

AWS Management Console でタスク定義を登録する際は、コマンドのカンマ区切りリストを使用します。このリストは、タスク定義の作成後に自動的に文字列に変換されます。ヘルスチェックに対する入力の例を次に示します。

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

AWS Management Console JSON パネル、AWS CLI、または API を使用してタスク定義を登録するときは、コマンドのリストを角かっこで囲む必要があります。ヘルスチェックに対する入力の例を次に示します。

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

stderr が出力されない終了コード 0 は成功を示し、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 ユニットの数。Linux では、このパラメータは Docker Remote APICreate a container セクションにある CpuShares と、docker run--cpu-shares オプションにマップされます。

Fargate 起動タイプを使用するタスクでは、このフィールドは省略可能です。タスク内のすべてのコンテナのために予約されている CPU の合計量は、タスクレベルの cpu 値以上にはできません。

注記

Amazon EC2 インスタンスタイプ」 ページで、Amazon EC2 インスタンスタイプごとに一覧表示されている vCPU 数に 1,024 を乗算することで、各タイプごとに使用可能な 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 配分に変換されます。

  • エージェントバージョン >= 1.2.0: Null、0、および 1 の CPU 値は、Docker に 2 個の CPU 配分として渡されます。

Windows コンテナインスタンスでは、CPU 制限は絶対的なクォータとして適用されます。Windows コンテナは、タスク定義内で指定された数の CPU にのみアクセスできます。ヌルまたはゼロの CPU 値は 0 として Docker に渡され、これを Windows は 1 つの CPU の 1% として解釈します。

その他の例については、「Amazon ECS で 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 APICreate a container (コンテナを作成する) セクションの WorkingDir にマップされ、--workdir オプションは docker run にマップされます。

"workingDirectory": "string"
environment

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

必須: いいえ

コンテナに渡す環境変数。このパラメータは、Docker Remote API の 「Create a container (コンテナを作成する)」セクションの Env にマップされ、--env オプションは docker run にマップされます。

重要

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

name

型: 文字列

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

環境変数の名前。

value

型: 文字列

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

環境変数の値。

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

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

必須: いいえ

コンテナに公開するシークレットを表すオブジェクトです。詳細については、「コンテナへの機密データの受け渡し」を参照してください。

name

型: 文字列

必須: はい

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

valueFrom

型: 文字列

必須: はい

コンテナに公開するシークレット。サポートされている値は、AWS Secrets Manager シークレットの完全な Amazon リソースネーム (ARN)、または AWS Systems Manager Parameter Store 内のパラメータの完全な ARN のいずれかです。

注記

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

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

ネットワーク設定

dnsServers

タイプ: 文字列配列

必須: いいえ

コンテナに提示する DNS サーバーのリスト。このパラメータは、Docker Remote APICreate a container (コンテナを作成する) セクションの Dns にマップされ、--dns オプションは docker run にマップされます。

注記

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

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

ストレージとログ記録

readonlyRootFilesystem

タイプ: ブール値

必須: いいえ

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

注記

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

"readonlyRootFilesystem": true|false
mountPoints

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

必須: いいえ

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

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

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 オブジェクト

必須: いいえ

コンテナに対するログ構成の仕様です。

ログ設定を使用したタスク定義の例については、「タスク定義の例」を参照してください。

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

コンテナのログ設定を指定する際には、以下の点に注意してください。

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

  • このパラメータを使用するには、コンテナインスタンスで Docker Remote API のバージョン 1.18 以降が必要です。

  • Fargate 起動タイプを使用するタスクの場合、そのタスクをホストする基盤インフラストラクチャにはアクセスできないため、必要な追加のソフトウェアはタスクの外でインストールする必要があります。たとえば、Fluentd 出力アグリゲータであるか、Gelf ログの送信先として Logstash を実行しているリモートホストです。

"logConfiguration": { "logDriver": "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens", "options": {"string": "string" ...}, "secretOptions": [{ "name": "string", "valueFrom": "string" }] }
logDriver

タイプ: 文字列

有効な値: "awslogs","fluentd","gelf","json-file","journald","logentries","splunk","syslog","awsfirelens"

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

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

Fargate 起動タイプを使用するタスクの場合、サポートされるログドライバーは awslogssplunkawsfirelens です。

タスク定義で awslogs ログドライバーを使用してコンテナログを CloudWatch Logs に送信する方法については、「awslogs ログドライバーを使用する」を参照してください。

awsfirelens ログドライバーの使用の詳細については、「カスタムログのルーティング」を参照してください。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。

options

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

必須: いいえ

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

ログを保存および分析するために、FireLens を使用して AWS サービスまたは AWS パートナーネットワーク (APN) を送信先とするログのルーティングを行う場合、ログルーターコンテナに送信される前にメモリにバッファリングされるイベント数を、log-driver-buffer-limit オプションを設定することで制限できます。この制限は、スループットが高い場合に発生する可能性がある、Docker 内のバッファのメモリ不足による、潜在的なログ損失の問題を解決するのに役立ちます。詳細については、「Fluentd バッファ制限」を参照してください。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.19 以上を使用する必要があります。

secretOptions

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

必須: いいえ

ログ設定に渡すシークレットを示すオブジェクト。ログ設定で使用されるシークレットには、認証トークン、証明書、暗号化キーなどがあります。詳細については、「コンテナへの機密データの受け渡し」を参照してください。

name

型: 文字列

必須: はい

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

valueFrom

型: 文字列

必須: はい

コンテナのログ設定に公開するシークレット。

"logConfiguration": { "logDriver": "splunk", "options": { "splunk-url": "https://cloud.splunk.com:8080", "splunk-token": "...", "tag": "...", ... }, "secretOptions": [{ "name": "splunk-token", "valueFrom": "/ecs/logconfig/splunkcred" }] }
firelensConfiguration

タイプ: FirelensConfiguration オブジェクト

必須: いいえ

コンテナの FireLens 構成。これは、コンテナログのログルーターの指定と設定に使用されます。詳細については、「カスタムログルーティング」を参照してください。

{ "firelensConfiguration": { "type": "fluentd", "options": { "KeyName": "" } } }
options

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

必須: いいえ

ログルーターを設定するときに使用するオプション。このフィールドはオプションで、カスタム設定ファイルを指定するか、タスク、タスク定義、クラスター、コンテナインスタンスの詳細などのメタデータをログイベントに追加するために使用できます。指定した場合、使用する構文は "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"} です。詳細については、「FireLens 設定を使用するタスク定義の作成」を参照してください。

type

型: 文字列

必須: はい

使用するログルーター。有効な値は fluentd または fluentbit です。

セキュリティ

コンテナセキュリティの詳細については、「Amazon ECS ベストプラクティスガイド」の「Task and container security」(タスクとコンテナのセキュリティ) を参照してください。

user

タイプ: 文字列

必須: いいえ

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

以下の形式を使用して、user を指定できます。UID または GID を指定する場合は、正の整数として指定する必要があります。

  • user

  • user:group

  • uid

  • uid:gid

  • user:gid

  • uid:group

注記

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

"user": "string"

リソースの制限

ulimits

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

必須: いいえ

コンテナに定義する ulimit 値の一覧。この値は、オペレーティングシステムのデフォルトのリソースクォータ設定を上書きします。このパラメータは、Docker Remote APIコンテナの作成セクションの Ulimits にマップされ、--ulimit オプションは docker run にマップされます。

Fargate でホストされる Amazon ECS タスクは、オペレーションシステムで設定されたデフォルトのリソース制限値を使用します。ただし、Fargate がオーバーライドするnofileリソース制限パラメータを除きます。nofile リソース制限は、コンテナが使用できるオープンファイルの数の制限を設定します。デフォルトの nofile ソフト制限は 1024 であり、ハード制限は 4096 です。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。

注記

このパラメータは 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 にマップされます。

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。

"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」(Docker 実行リファレンス) の「Runtime privilege and Linux capabilities」(ランタイム権限と Linux 機能) を参照してください。これらの Linux 機能の詳細については、Linux マニュアルの「capabilities(7)」(機能(7)) ページを参照してください。

add

タイプ: 文字列配列

有効な値: "SYS_PTRACE"

必須: いいえ

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

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 にマップされます。

initProcessEnabled

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

このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.25 以上を使用する必要があります。

コンテナの依存関係

dependsOn

型: ContainerDependency オブジェクトの配列

必須: いいえ

コンテナの起動と停止に定義されている依存関係。コンテナには複数の依存関係を含めることができます。依存関係がコンテナの起動に対して定義されている場合、コンテナの停止の場合、依存関係は逆になります。例については、「例: コンテナの依存関係」を参照してください。

注記

あるコンテナが依存関係における制限事項を満たさない場合、または制限を満たす前にタイムアウトした場合、Amazon ECS は、依存関係にある他のコンテナの状態も次に遷移させることはしません。

Fargate でホストされている Amazon ECS タスクの場合、このパラメータでは、タスクまたはサービスがプラットフォームバージョン 1.3.0 以降 (Linux) または 1.0.0 (Windows) を使用している必要があります。

"dependsOn": [ { "containerName": "string", "condition": "string" } ]
containerName

タイプ: 文字列

必須: はい

コンテナ名が指定された条件を満たしている必要があります。

condition

型: 文字列

必須: はい

コンテナの依存関係の条件です。使用可能な条件とその動作を以下に示します。

  • START - この条件は、すぐに現在のリンクとボリュームの動作をエミュレートします。他のコンテナの開始を許可する前に、依存コンテナが開始されていることを検証します。

  • COMPLETE - この条件は、他のコンテナの開始を許可する前に、依存コンテナの実行が完了 (終了) することを検証します。これは、スクリプトを実行して終了するだけの、重要性の低いコンテナのために便利です。この条件は、必須コンテナには設定できません。

  • SUCCESS - この条件は COMPLETE と同じですが、コンテナが zero ステータスで終了していることも必要です。この条件は、必須コンテナには設定できません。

  • HEALTHY — この条件は、他のコンテナの開始を許可する前に、依存コンテナがそのコンテナのヘルスチェックに合格したことを検証します。これには、タスク定義に設定されているヘルスチェックが依存コンテナにある必要があります。タスクの起動時にのみ、この条件が確認されます。

コンテナのタイムアウト

startTimeout

タイプ: 整数

必須: いいえ

値の例: 120

コンテナの依存関係解決の再試行を止めるまでの待機時間 (秒)。

たとえば、タスク定義内に 2 つのコンテナを指定するとします。containerA は、COMPLETESUCCESS、または HEALTHY のいずれかのステータスに到達する containerB に依存関係を持ちます。startTimeout の値に containerB が指定されていて、コンテナが時間内に目標のステータスまで到達しない場合、containerA は開始しません。

注記

あるコンテナが依存関係における制限事項を満たさない場合、または制限を満たす前にタイムアウトした場合、Amazon ECS は、依存関係にある他のコンテナの状態も次に遷移させることはしません。

Fargate でホストされている Amazon ECS タスクの場合、このパラメータのために、タスクまたはサービスがプラットフォームバージョン 1.3.0 以降 (Linux) を使用している必要があります。

stopTimeout

型: 整数

必須: いいえ

値の例: 120

コンテナが正常に終了しなかった場合にコンテナが強制終了されるまでの待機時間 (秒)。

Fargate 起動タイプを使用するタスクの場合、タスクまたはサービスには、プラットフォームバージョン 1.3.0 以降 (Linux) または 1.0.0 以降 (Windows) が必要です。停止タイムアウト値は最大 120 秒です。また、このパラメータを指定しない場合には、デフォルト値の 30 秒が適用されます。

システムコントロール

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 値が、タスク内のすべてのコンテナに適用されます。

注記

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

"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 にマップされます。

プロキシ設定

proxyConfiguration

タイプ: ProxyConfiguration オブジェクト

必須: いいえ

App Mesh プロキシ設定の詳細。

Fargate の起動タイプを使用するタスクで、この機能を使用するには、タスクまたはサービスでプラットフォームバージョン 1.3.0 以降を使用する必要があります。

注記

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

"proxyConfiguration": { "type": "APPMESH", "containerName": "string", "properties": [ { "name": "string", "value": "string" } ] }
type

型: 文字列

重要な値: APPMESH

必須: いいえ

プロキシのタイプ。APPMESH はサポートされる唯一の値です。

containerName

型: 文字列

必須: はい

App Mesh プロキシとして機能するコンテナの名前です。

properties

タイプ: パラメータオブジェクトの配列

必須: いいえ

Container Network Interface(CNI) プラグインを提供するネットワーク構成パラメータのセットで、キーと値のペアとして指定されます。

  • IgnoredUID - (必須) コンテナ定義の user パラメータで定義されるプロキシコンテナのユーザー ID (UID)。これは、プロキシがそれ自体のトラフィックを無視するようにするために使用されます。IgnoredGID を指定した場合は、このフィールドは空にできます。

  • IgnoredGID - (必須) コンテナ定義の user パラメータで定義されるプロキシコンテナのグループ ID (GID)。これは、プロキシがそれ自体のトラフィックを無視するようにするために使用されます。IgnoredUID を指定した場合は、このフィールドは空にできます。

  • AppPorts - (必須) アプリケーションが使用するポートのリスト。これらのポートへのネットワークトラフィックは ProxyIngressPort および ProxyEgressPort に転送されます。

  • ProxyIngressPort - (必須) AppPorts への着信トラフィックが誘導されるポートを指定します。

  • ProxyEgressPort - (必須) AppPorts からの発信トラフィックが誘導されるポートを指定します。

  • EgressIgnoredPorts – (必須) 指定されたこれらのポートに向かうアウトバウンドトラフィックは無視され、ProxyEgressPort にリダイレクトされません。空のリストを指定できます。

  • EgressIgnoredIPs – (必須) 指定されたこれらの IP アドレスに向かうアウトバウンドトラフィックは無視され、ProxyEgressPort にリダイレクトされません。空のリストを指定できます。

name

型: 文字列

必須: いいえ

キーと値のペアの名前。

value

型: 文字列

必須: いいえ

キーと値のペアの値。

ボリューム

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

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

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

name

タイプ: 文字列

必須: いいえ

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

efsVolumeConfiguration

タイプ: オブジェクト

必須: いいえ

このパラメータは、Amazon EFS ボリュームを使用する場合に指定します。

fileSystemId

型: 文字列

必須: はい

使用する Amazon EFS ファイルシステムの ID。

rootDirectory

型: 文字列

必須: いいえ

ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。/ を指定すると、このパラメータを省略した場合と同じ結果になります。

重要

authorizationConfig に EFS アクセスポイントを指定する場合は、ルートディレクトリパラメータを省略するか、または / に設定して EFS アクセスポイントにパスを設定する必要があります。

transitEncryption

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

Amazon ECS ホストと Amazon EFS サーバー間で Amazon EFS データの転送中の暗号化を有効にするかどうかを指定します。Amazon EFS IAM 認証を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、[DISABLED] のデフォルト値が使用されます。詳細については、Amazon Elastic ファイルシステムユーザーガイドの「転送中データの暗号化」を参照してください。

transitEncryptionPort

タイプ: 整数

必須: いいえ

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

authorizationConfig

タイプ: オブジェクト

必須: いいえ

Amazon EFS ファイルシステムに対する認可構成の詳細。

accessPointId

型: 文字列

必須: いいえ

使用するアクセスポイント ID。アクセスポイントを指定する場合は、efsVolumeConfiguration のルートディレクトリ値を省略するか、これを / に設定して EFS アクセスポイントにパスを設定する必要があります。アクセスポイントを使用する場合は、EFSVolumeConfiguration で転送中の暗号化を有効にする必要があります。詳細については、Amazon Elastic ファイルシステムユーザーガイドの「Amazon EFS アクセスポイントの使用」を参照してください。

iam

型: 文字列

有効な値: ENABLED | DISABLED

必須: いいえ

Amazon EFS ファイルシステムのマウント時にタスク定義で定義した Amazon ECS タスクの IAM ロールを使用するかどうかを指定します。使用する場合は、[EFSVolumeConfiguration] で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、[DISABLED] のデフォルト値が使用されます。詳細については、「タスク用の IAM ロール」を参照してください。

タグ

タスク定義の登録する際、タスク定義に適用されるメタデータタグをオプションで指定できます。タグは、タスク定義を分類して組織化するのに役立ちます。各タグはキーとオプションの値で構成されます。両方を定義します。詳細については、「Amazon ECS リソースのタグ付け」を参照してください。

重要

タグには、個人が特定可能な情報や、機密情報あるいは秘匿性の高い情報は追加しないでください。タグは、多くの AWS のサービス (請求など) からアクセスできます。タグは、プライベートデータや機密データに使用することを意図していません。

タグオブジェクトでは、次のパラメータを使用できます。

key

タイプ: 文字列

必須: いいえ

タグを構成するキーと値のペアの一部。キーは、より具体的なタグ値のカテゴリのように動作する、一般的なラベルです。

value

タイプ: 文字列

必須: いいえ

タグを構成するキーと値のペアのオプションの一部。値はタグカテゴリ (キー) の記述子として機能します。

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

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

エフェメラルストレージ

ephemeralStorage

タイプ: オブジェクト

必須: いいえ

タスクに割り当てるエフェメラルストレージの容量(GB 単位)。このパラメーターは、AWS Fargate でホストされるタスクにおいて、利用可能なエフェメラルストレージの総量をデフォルトの容量を超えて拡張する際に使用します。詳細については、「バインドマウント」を参照してください。

注記

このパラメータは、プラットフォームのバージョン 1.4.0 以降 (Linux) を使用して AWS Fargate でホストされたタスクでのみサポートされます。このパラメータは Fargate 上の Windows コンテナではサポートされません。

IPC モード

ipcMode

型: 文字列

必須: いいえ

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

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

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

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

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

注記

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

PID モード

pidMode

型: 文字列

必須: いいえ

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

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

注記

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