

# Fargate での Amazon ECS タスク定義パラメータ
<a name="task_definition_parameters"></a>

タスク定義は、タスクファミリー、AWS Identity and Access Management (IAM) タスクロール、ネットワークモード、コンテナ定義、ボリューム、および起動タイプという各部分に分かれています。ファミリとコンテナの定義は、タスク定義の必須項目です。これに対して、タスクロール、ネットワークモード、ボリューム、および起動タイプは省略することができます。

これらのパラメータを JSON ファイルで使用し、タスク定義を設定できます。

Fargate の各タスク定義パラメータについて、以下に詳述します。

## ファミリー
<a name="family"></a>

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

## Capacity
<a name="requires_compatibilities"></a>

タスク定義の登録時、Amazon ECS がタスク定義の検証基準となる容量を指定できます。タスク定義が指定された互換性を検証しない場合、クライアント例外が返されます。

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

`requiresCompatibilities`  
タイプ: 文字列配列  
必須: いいえ  
有効な値: `FARGATE`  
タスク定義が検証された容量。これにより、タスク定義で使用されているすべてのパラメータが、Fargate の要件を満たしていることの確認処理が開始されます。

## タスクロール
<a name="task_role_arn"></a>

`taskRoleArn`  
タイプ: 文字列  
必須: いいえ  
タスク定義を登録するときに、IAM ロールのタスクロールを割り当てて、タスクのコンテナに、関連するポリシーに指定された AWS API を呼び出すためのアクセス権限を付与できます。詳細については、「[Amazon ECS タスクの IAM ロール](task-iam-roles.md)」を参照してください。

## タスク実行ロール
<a name="execution_role_arn"></a>

`executionRoleArn`  
タイプ: 文字列  
必須: 条件による  
ユーザーに代わって AWS API コールを実行するアクセス許可を Amazon ECS コンテナエージェントに付与するタスク実行ロールの Amazon リソースネーム (ARN)。  
タスク実行 IAM ロールは、タスクの要件に応じて必要です。詳細については、「[Amazon ECS タスク実行IAM ロール](task_execution_IAM_role.md)」を参照してください。

## ネットワークモード
<a name="network_mode"></a>

`networkMode`  
タイプ: 文字列  
必須: はい  
タスクのコンテナで使用する Docker ネットワークモード。Fargate でホストされている Amazon ECS タスクでは、`awsvpc` ネットワークモードが必要です。

## ランタイムプラットフォーム
<a name="runtime-platform"></a>

`operatingSystemFamily`  
タイプ: 文字列  
必須: 条件による  
デフォルト: LINUX  
Fargate でホストされる Amazon ECS タスクでは、このパラメータは必須です。  
タスク定義を登録する際、オペレーティングシステムファミリを指定します。  
有効な値は、`LINUX`、`WINDOWS_SERVER_2025_FULL`、`WINDOWS_SERVER_2025_CORE`、`WINDOWS_SERVER_2022_FULL`、`WINDOWS_SERVER_2022_CORE`、`WINDOWS_SERVER_2019_FULL` および `WINDOWS_SERVER_2019_CORE` です。  
サービスで使用されるすべてのタスク定義は、このパラメータに対して同じ値を設定する必要があります。  
タスク定義がサービスの一部である場合、この値はサービスの `platformFamily` 値と一致する必要があります。

`cpuArchitecture`  
タイプ: 文字列  
必須: 条件による  
デフォルト: X86\$164  
パラメータを `null` のままにすると、Fargate でホストされているタスクの開始すしたときにデフォルト値が自動的に割り当てられます。  
タスク定義を登録する際は、CPU アーキテクチャを指定します。有効な値は `X86_64` および `ARM64` です。  
サービスで使用されるすべてのタスク定義は、このパラメータに対して同じ値を設定する必要があります。  
Linux タスクがある場合は、値を `ARM64` に設定できます。詳細については、「[64 ビット ARM ワークロードでの Amazon ECS タスク定義](ecs-arm64.md)」を参照してください。

## タスクサイズ
<a name="task_size"></a>

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

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

`cpu`  
タイプ: 文字列  
必須: はい  
タスクレベルの CPU およびメモリパラメータは必須であり、タスクが実行されるインスタンスタイプとサイズを判断するために使用されます。Windows タスクの場合、Windows にはコンテナのグループに集合リソース制限を簡単に適用できるネイティブメカニズムがないため、これらの値は実行時に適用されません。リソース制限を適用する場合は、Windows コンテナのコンテナレベルのリソースを使用することをお勧めします。
タスクに適用される CPU ユニットのハード制限。JSON ファイルでは、CPU 値を CPU ユニットまたは仮想 CPU (vCPU) の文字列として指定できます。例えば、CPU 値を `1 vCPU` (vCPU) または `1024` (CPU ユニット) として指定できます。タスク定義が登録されると、vCPU 値は、CPU ユニットを示す整数に変換されます。  
このフィールドは必須であり、次のいずれかの値を使用する必要があります。この値により `memory` パラメータでサポートされる値の範囲が決まります。以下の表に、タスクレベル CPU とメモリの有効な組み合わせを示します。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html)

`memory`  
タイプ: 文字列  
必須: はい  
タスクレベルの CPU およびメモリパラメータは必須であり、タスクが実行されるインスタンスタイプとサイズを判断するために使用されます。Windows タスクの場合、Windows にはコンテナのグループに集合リソース制限を簡単に適用できるネイティブメカニズムがないため、これらの値は実行時に適用されません。リソース制限を適用する場合は、Windows コンテナのコンテナレベルのリソースを使用することをお勧めします。
タスクに適用されるメモリのハード制限です。タスク定義のメモリの値は、メビバイト (MiB) またはギガバイト (GB) の文字列として指定できます。例えば、メモリの値を `3072` (MiB) または `3 GB` (GB) のいずれかで指定できます。タスク定義が登録されると、GB 値は、MiB を示す整数に変換されます。  
このフィールドは必須であり、次のいずれかの値を使用する必要があります。この値により `cpu` パラメータでサポートされる値の範囲が決まります。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html)

## コンテナ定義
<a name="container_definitions"></a>

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

**Topics**
+ [

### 標準のコンテナ定義のパラメータ
](#standard_container_definition_params)
+ [

### 詳細コンテナ定義パラメータ
](#advanced_container_definition_params)
+ [

### その他のコンテナ定義のパラメータ
](#other_container_definition_params)

### 標準のコンテナ定義のパラメータ
<a name="standard_container_definition_params"></a>

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

**Topics**
+ [

#### 名前
](#container_definition_name)
+ [

#### Image
](#container_definition_image)
+ [

#### メモリ
](#container_definition_memory)
+ [

#### ポートマッピング
](#container_definition_portmappings)
+ [

#### プライベートリポジトリの認証情報
](#container_definition_repositoryCredentials)

#### 名前
<a name="container_definition_name"></a>

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

#### Image
<a name="container_definition_image"></a>

`image`  
タイプ: 文字列  
必須: はい  
コンテナの開始に使用するイメージ。この文字列は Docker デーモンに直接渡されます。デフォルトでは、Docker Hub レジストリのイメージを使用できます。`repository-url/image:tag` または `repository-url/image@digest` で他のリポジトリを指定することもできます。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコア、コロン、ピリオド、スラッシュ、シャープ記号を使用できます。このパラメータは、docker create-container コマンドの `Image` と docker run コマンドの `IMAGE` パラメータにマッピングされます。  
+ 新しいタスクが開始されると、Amazon ECS コンテナエージェントは、指定されたイメージおよびタグの最新バージョンをプルしてコンテナで使用します。ただし、リポジトリイメージの後続の更新がすでに実行されているタスクに反映されることはありません。
+ タスク定義のイメージパスでタグまたはダイジェストを指定しない場合、Amazon ECS コンテナエージェントは `latest` タグを使用して指定されたイメージを取り込みます。
+  リポジトリイメージに後から加えられた更新内容が、実行中のタスクに反映されることはありません。
+ プライベートレジストリのイメージがサポートされています。詳細については、「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。
+ 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 Hub の公式リポジトリのイメージでは、1 つの名前 (例: `ubuntu` または `mongo`) を使用します。
+ Docker Hub の他のリポジトリのイメージは、組織名で修飾されます (例: `amazon/amazon-ecs-agent`)。
+ 他のオンラインリポジトリのイメージは、さらにドメイン名で修飾されます (例: `quay.io/assemblyline/ubuntu`)。

`versionConsistency`  
タイプ: 文字列  
有効な値: `enabled`\$1`disabled`  
必須: いいえ  
コンテナ定義で指定されたコンテナイメージタグを Amazon ECS がイメージダイジェストに解決するかどうかを指定します。デフォルトでは、この動作は `enabled` です。コンテナの値を `disabled` として設定した場合、Amazon ECS はコンテナイメージタグをダイジェストに解決せず、コンテナ定義で指定された元のイメージ URI をデプロイ用に使用します。コンテナイメージの解決の詳細については、「[コンテナイメージの解決](deployment-type-ecs.md#deployment-container-image-stability)」を参照してください。

#### メモリ
<a name="container_definition_memory"></a>

`memory`  
タイプ: 整数  
必須: いいえ  
コンテナに適用されるメモリの量 (MiB 単位)。コンテナは、ここで指定したメモリを超えようとすると、強制終了されます。タスク内のすべてのコンテナ用に予約されるメモリの合計量は、タスクの `memory` 値より小さくする必要があります (指定されている場合)。このパラメータは docker create-container コマンドの `Memory` にマッピングされ、`--memory` オプションは docker run にマッピングされます。  
Docker デーモン 20.10.0 以降によって、コンテナ用として 6 MiB 以上のメモリが予約されます。従って、このコンテナに対しては 6 MiB 未満のメモリは指定しないようにします。  
Docker デーモン 19.03.13-ce 以降では、コンテナ用として 4 MiB 以上のメモリが予約されます。このため、このコンテナ用には 4 MiB 未満のメモリを指定しないようにします。  
リソースの使用率を最大化することを目的に、特定のインスタンスタイプにおいて、タスクにできるだけ多くのメモリを提供する場合には、「[Amazon ECS Linux コンテナインスタンスのメモリを予約する](memory-management.md)」を参照してください。

`memoryReservation`  
タイプ: 整数  
必須: いいえ  
コンテナ用に予約するメモリのソフト制限 (MiB 単位)。システムメモリに競合がある場合、Docker はコンテナのメモリ量をこのソフト制限値内に維持しようとします。ただし、コンテナは必要に応じてより多くのメモリを使用することができます。コンテナは、`memory` パラメーターで指定されたハード制限 (該当する場合) またはコンテナインスタンス上の利用可能なすべてのメモリのいずれか早く達する方まで使用できます。このパラメータは docker create-container コマンドの `MemoryReservation` にマッピングされ、`--memory-reservation` オプションは docker run にマッピングされます。  
タスクレベルでメモリ値を指定しない場合、コンテナ定義で `memory` または `memoryReservation` の一方または両方に 0 以外の整数を指定する必要があります。両方を指定する場合、`memory` は `memoryReservation` より大きいことが必要です。`memoryReservation` を指定する場合、コンテナが配置されているコンテナインスタンスで使用可能なメモリリソース量から、上記の値が減算されます。それ以外の場合は、`memory` の値が使用されます。  
例えば、コンテナが通常 128 MiB のメモリを使用しているが、短期間にメモリが 256 MiB にバーストする場合があるとします。128 MiB の `memoryReservation` と 300 MiB の `memory` ハード制限を設定できます。この設定では、コンテナが、コンテナインスタンスの残りのリソースから 128 MiB のメモリのみを予約できます。同時に、この構成により、コンテナは必要に応じてより多くのメモリ リソースを使用できるようになります。  
このパラメータは Windows コンテナではサポートされません。
Docker デーモン 20.10.0 以降によって、コンテナ用として 6 MiB 以上のメモリが予約されます。従って、このコンテナに対しては 6 MiB 未満のメモリは指定しないようにします。  
Docker デーモン 19.03.13-ce 以降では、コンテナ用として 4 MiB 以上のメモリが予約されます。このため、このコンテナ用には 4 MiB 未満のメモリを指定しないようにします。  
リソースの使用率を最大化することを目的に、特定のインスタンスタイプにおいて、タスクにできるだけ多くのメモリを提供する場合には、「[Amazon ECS Linux コンテナインスタンスのメモリを予約する](memory-management.md)」を参照してください。

#### ポートマッピング
<a name="container_definition_portmappings"></a>

`portMappings`  
タイプ: オブジェクト配列  
必須: いいえ  
ポートマッピングは、コンテナのネットワークポートを外部に公開します。これは、クライアントがアプリケーションにアクセスすることを可能にします。これは、同じタスク内にあるコンテナ間の通信にも使用されます。  
`awsvpc` ネットワークモードを使用するタスク定義では、`containerPort` のみを指定します。`hostPort` は常に無視され、コンテナポートはホスト上の番号が大きいランダムなポートに自動的にマップされます。  
Windows のポートマッピングでは、`localhost` の代わりに `NetNAT` ゲートウェイを使用します。Windows のポートマッピングにはループバックが存在しないため、ホスト自体からコンテナのマッピングされたポートにアクセスはできません。  
このパラメータのほとんどのフィールド (`containerPort`、`hostPort`、`protocol` を含む) は docker create-container コマンドの `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 を使用して Amazon ECS サービスを短縮名で接続する](service-connect.md)」を参照してください。  
有効なプロトコル値: `"http" | "http2" | "grpc" `  
`containerPort`  
タイプ: 整数  
必須: はい (`portMappings` を使用する場合)  
ユーザーが指定したホストポートまたは自動的に割り当てられたホストポートにバインドされるコンテナポートの番号。  
`awsvpc` ネットワークモードを使用するタスクの場合は、`containerPort` を使用して公開ポートを指定します。  
Fargate 上の Windows コンテナの場合、`containerPort` にポート 3150 は使用できません。このポートは予約済みです。  
`containerPortRange`  
タイプ: 文字列  
必須: いいえ  
動的にマッピングされたホストポート範囲にバインドされるコンテナのポート番号の範囲。  
このパラメータは、`register-task-definition` API を使用してのみ設定できます。このオプションは、`portMappings` パラメータで使用できます。詳細については、「*AWS Command Line Interface リファレンス*」の「[register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)」を参照してください。  
`containerPortRange` を指定するときは、以下のルールが適用されます。  
+ `awsvpc` ネットワークモードを使用する必要があります。
+ このパラメータは、Linux と Windows の両オペレーティングシステムで使用できます。
+ コンテナインスタンスには、少なくともコンテナエージェントのバージョン 1.67.0 と `ecs-init` パッケージのバージョン 1.67.0-1 が必要です。
+ 各コンテナにつき、最大 100 のポートレンジを指定できます。
+ `hostPortRange` は指定しません。`hostPortRange` の値は次のように設定されます。
  + `awsvpc` ネットワークモードのタスク内のコンテナでは、`hostPort` は `containerPort` と同じ値に設定されます。これは静的マッピング戦略です。
+ `containerPortRange` の有効な値は 1～65535 です。
+ 1 つのポートは、コンテナごとに 1 つのポートマッピングにのみ含められます。
+ 重複するポート範囲は指定できません。
+ 範囲内の最初のポートは、最後のポートよりも小さくなければなりません。
+ Docker では、ポートの数が多い場合は、Docker デーモン設定ファイルの docker-proxy をオフにすることをお勧めします。

  詳細については、GitHub の [Issue \$111185](https://github.com/moby/moby/issues/11185) を参照してください。

  Docker デーモン設定ファイルの docker-proxy をオフにする方法については、*Amazon ECS 開発者ガイド*の「[Docker デーモン](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon)」を参照してください。
[DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) を呼び出すと、コンテナポートにバインドされているホストポートである `hostPortRange` を表示できます。  
ポート範囲は、EventBridge に送信される Amazon ECS タスクイベントに含まれません。詳細については、「[EventBridge を使用して Amazon ECS エラーへの対応を自動化する](cloudwatch_event_stream.md)」を参照してください。  
`hostPortRange`  
タイプ: 文字列  
必須: いいえ  
ネットワークバインディングで使用されるホストのポート番号範囲。これは Docker によって割り当てられ、Amazon ECS エージェントによって配信されます。  
`hostPort`  
タイプ: 整数  
必須: いいえ  
コンテナ用に予約するコンテナインスタンスのポート番号。  
`hostPort` は、空白のままにするか、`containerPort` と同じ値にできます。  
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 および VPC Lattice を設定する場合は必要です。  
ポートマッピングに使用される名前。このパラメータは Service Connect および VPC Lattice にのみ適用されます。このパラメータは、サービスの Service Connect および VPC Lattice 設定で使用する名前です。  
詳細については、「[Service Connect を使用して Amazon ECS サービスを短縮名で接続する](service-connect.md)」を参照してください。  
次の例では、Service Connect および VPC Lattice の 2 つの必須フィールドが使用されています。  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
タイプ: 文字列  
必須: いいえ  
ポートマッピングに使用されるプロトコル。有効な値は、`tcp` および `udp` です。デフォルト: `tcp`。  
`tcp` は Service Connect でのみサポートされます。このフィールドが設定されていない場合は、`tcp` が暗示されることに注意してください。
ホストポートを指定する際は、以下の構文を使用します。  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
自動割り当てのホストポートが必要な場合は、以下の構文を使用します。  

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

#### プライベートリポジトリの認証情報
<a name="container_definition_repositoryCredentials"></a>

`repositoryCredentials`  
タイプ: [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html) オブジェクト  
必須: いいえ  
プライベートレジストリ認証用のリポジトリ認証情報。  
詳細については、「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。    
 `credentialsParameter`  
タイプ: 文字列  
必須: はい (`repositoryCredentials` を使用する場合)  
プライベートリポジトリの認証情報が含まれているシークレットの Amazon リソースネーム (ARN)。  
詳細については、「[Amazon ECS での AWS 以外のコンテナイメージの使用](private-auth.md)」を参照してください。  
Amazon ECS API、AWS CLI、または AWS SDK を使用する場合、起動するタスクと同じリージョンにシークレットが存在する場合は、シークレットの完全な ARN または名前のどちらも使用できます。AWS マネジメントコンソール を使用する場合は、シークレットの完全な ARN を指定する必要があります。
必要なパラメータが含まれるタスク定義のスニペットを、以下に示します。  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### 詳細コンテナ定義パラメータ
<a name="advanced_container_definition_params"></a>

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

**Topics**
+ [

#### 再起動ポリシー
](#container_definition_restart_policy)
+ [

#### ヘルスチェック
](#container_definition_healthcheck)
+ [

#### 環境
](#container_definition_environment)
+ [

#### ネットワーク設定
](#container_definition_network)
+ [

#### ストレージとログ記録
](#container_definition_storage)
+ [

#### セキュリティ
](#container_definition_security)
+ [

#### リソースの制限
](#container_definition_limits)
+ [

#### Docker のラベル
](#container_definition_labels)

#### 再起動ポリシー
<a name="container_definition_restart_policy"></a>

`restartPolicy`  
コンテナ再起動ポリシーと関連する設定パラメータ。コンテナの再起動ポリシーを設定すると、Amazon ECS はタスクを置き換えることなくコンテナを再起動できます。詳細については、「[コンテナ再起動ポリシーを使用して Amazon ECS タスク内の個々のコンテナを再起動する](container-restart-policy.md)」を参照してください。    
`enabled`  
タイプ: ブール値  
必須: はい  
コンテナに対して再起動ポリシーを有効にするかどうかを指定します。  
`ignoredExitCodes`  
タイプ: 整数配列  
必須: いいえ  
Amazon ECS が無視し、再起動を試みない終了コードのリスト。最大 50 個のコンテナ終了コードを指定できます。デフォルトでは、Amazon ECS はいずれの終了コードも無視しません。  
`restartAttemptPeriod`  
タイプ: 整数  
必須: いいえ  
再起動を試みる前にコンテナが実行する必要がある時間 (秒単位）。コンテナを再起動できるのは、`restartAttemptPeriod` 秒に 1 回のみです。コンテナがこの期間実行できずに早く終了した場合、コンテナは再起動されません。最小の `restartAttemptPeriod` は 60 秒、最大の `restartAttemptPeriod` は 1,800 秒を指定できます。デフォルトでは、コンテナは再起動の前に 300 秒間実行する必要があります。

#### ヘルスチェック
<a name="container_definition_healthcheck"></a>

`healthCheck`  
コンテナに対するヘルスチェックのコマンドと、コンテナのための関連する設定パラメータです。詳細については、「[コンテナのヘルスチェックを使用して Amazon ECS タスク状態を判定する](healthcheck.md)」を参照してください。    
`command`  
正常状態かどうかを決定するために、コンテナが実行するコマンドが格納された文字列配列。この文字列配列の先頭には、コマンド引数を直接実行するための `CMD`、またはコンテナのデフォルトシェルでコマンドを実行するための `CMD-SHELL` を付加できます。これらのいずれも指定しない場合は `CMD` が使用されます。  
AWS マネジメントコンソール にタスク定義を登録する場合は、カンマで区切ったコマンドリストを使用してください。これらのコマンドは、タスク定義が作成された後に文字列に変換されます。ヘルスチェックに対する入力の例を次に示します。  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
AWS マネジメントコンソール JSON パネル、AWS CLI、または API を使用してタスク定義を登録するときは、コマンドのリストを角かっこで囲みます。ヘルスチェックに対する入力の例を次に示します。  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
`stderr` が出力されない終了コード 0 は成功を示し、0 以外の終了コードは失敗を示します。  
`interval`  
各ヘルスチェック間の時間間隔 (秒単位)。5 〜 300 秒を指定できます。デフォルトの値は 30 秒です。  
`timeout`  
成功まで待機しているヘルスチェックが、失敗したと見なされるまでの期間 (秒単位) です。2 〜 60 秒を指定できます。デフォルト値は 5 秒です。  
`retries`  
コンテナが異常と見なされるまでに、失敗したヘルスチェックを再試行する回数です。1〜10 回を指定できます。デフォルト値は 3 回の再試行です。  
`startPeriod`  
失敗したヘルスチェックの再試行が最大回数に達する前に、コンテナにブートストラップための時間を提供するオプションの猶予期間です。0～300 秒の値を指定できます。デフォルトでは、`startPeriod` は無効となっています。  
ヘルスチェックが `startPeriod` 内で成功した場合、コンテナは正常であるとみなされ、その後の失敗は最大再試行回数にカウントされます。

#### 環境
<a name="container_definition_environment"></a>

`cpu`  
タイプ: 整数  
必須: いいえ  
Amazon ECS コンテナエージェントがコンテナ用に予約した `cpu` ユニットの数。Linux では、このパラメータは「[Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate)」セクションの `CpuShares` にマッピングされます。  
Fargate を使用するタスクでは、このフィールドは省略可能です。タスク内のすべてのコンテナのために予約されている CPU の合計量は、タスクレベルの `cpu` 値以上にはできません。  
Linux コンテナは、割り当てられた CPU ユニットと同じ比率を使用して、割り当てられていない CPU ユニットをコンテナインスタンス上の他コンテナと共有します。例えば、そのコンテナ用に 512 個の CPU ユニットが指定された単一コアインスタンスタイプで、唯一のコンテナタスクを実行するとします。さらに、そのタスクはコンテナインスタンスで実行される唯一のタスクです。この場合のコンテナは、1,024 個の CPU ユニット配分を任意のタイミングで使用できます。一方、そのコンテナインスタンスで同じタスクのコピーを別途起動したと仮定します。各タスクには、必要に応じて少なくとも 512 個の CPU ユニットが保証されます。同様に、その他のコンテナが残りの CPU を使用していない場合、各コンテナは CPU 使用率を高められます。ただし、両方のタスクが常に 100% アクティブである場合、使用できるのは 512 CPU ユニットに制限されます。  
Linux コンテナインスタンスでは、コンテナインスタンス上の Docker デーモンは、CPU 値を使用して、実行中のコンテナに対する相対 CPU 配分比率を計算します。Linux カーネルが許可する最小の有効な CPU 共有値は 2 で、Linux カーネルが許可する最大の有効な CPU 共有値は 262,144 です。ただし、CPU のパラメータは必須ではなく、コンテナ定義では 2 未満の CPU 値および 262144 より大きな CPU 値を使用できます。CPU 値が 2 未満 (null を含む) および 262144 より大きな値である場合、動作は Amazon ECS コンテナエージェントのバージョンによって異なります。  
Windows コンテナインスタンスでは、CPU クォータは絶対クォータとして適用されます。Windows コンテナは、タスク定義で定義されている指定された量の CPU にのみアクセスできます。null またはゼロの CPU 値が `0` として Docker に渡されます。次に Windows はこの値を 1 つの CPU の 1% として解釈します。  
その他の例については、「[Amazon ECS で CPU およびメモリリソースの管理方法](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/)」を参照してください。

`gpu`  
このパラメータは、Fargate でホストされているコンテナではサポートされていません。  
タイプ: [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html) オブジェクト  
必須: いいえ  
Amazon ECS コンテナエージェントがコンテナ用に予約した物理 `GPUs` の数。タスク内でコンテナ用に予約されているすべての GPU の数は、タスクが起動されたコンテナインスタンスで使用できる GPU の数を超えることはできません。詳細については、「[GPU ワークロード向けの Amazon ECS タスク定義](ecs-gpu.md)」を参照してください。

`Elastic Inference accelerator`  
このパラメータは、Fargate でホストされているコンテナではサポートされていません。  
タイプ: [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html) オブジェクト  
必須: いいえ  
`InferenceAccelerator` タイプでは、`value` はタスク定義で指定される `InferenceAccelerator` の `deviceName` と一致します。詳細については、「[Elastic Inference アクセラレーター名 (廃止)](#elastic-Inference-accelerator)」を参照してください。

`essential`  
タイプ: ブール値  
必須: いいえ  
コンテナの `essential` パラメーターが `true` としてマークされており、そのコンテナが何らかの理由で失敗するか停止するとします。その後、タスクの一部である他のすべてのコンテナが停止されます。コンテナの `essential` パラメータを `false` にマークしておくと、そのコンテナ失敗はタスク内にある残りのコンテナに影響を与えません。このパラメータを省略した場合、コンテナは必須と見なされます。  
すべてのタスクには少なくとも 1 つの必須コンテナが必要です。複数のコンテナで構成されるアプリケーションがあるとします。次に、共通の目的で使用されるコンテナをコンポーネントにグループ化し、さまざまなコンポーネントを複数のタスク定義に分離します。詳細については、「[Amazon ECS 用のアプリケーションの構築](application_architecture.md)」を参照してください。  

```
"essential": true|false
```

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

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

`command`  
タイプ: 文字列配列  
必須: いいえ  
コンテナに渡されるコマンド。このパラメータは create-container コマンドの `Cmd` にマッピングされ、 `COMMAND` パラメータは docker run にマッピングされます。複数の引数がある場合、各引数は配列内で、区切られた文字列により指定する必要があります。  

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

`workingDirectory`  
タイプ: 文字列  
必須: いいえ  
コマンドを実行するコンテナ内の作業ディレクトリ。このパラメータは、[Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) の [コンテナの作成](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) セクションにある `WorkingDir` にマッピングされ、`--workdir` オプションは [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/) にマッピングされます。  

```
"workingDirectory": "string"
```

`environmentFiles`  
これは Fargate の Windows コンテナでは使用できません  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナに渡す環境変数が含まれるファイルのリスト。このパラメータは docker run コマンドの `--env-file` オプションにマッピングされます。  
最大 10 個の環境ファイルを指定できます。ファイルには、ファイル拡張子 `.env` が必要です。環境ファイルの各行には、`VARIABLE=VALUE` 形式で環境変数が含まれています。`#` で始まる行はコメントとして扱われ、無視されます。  
コンテナ定義に個別の環境変数が指定されている場合は、環境ファイルに含まれる変数よりも優先されます。同じ変数を含む複数の環境ファイルが指定されている場合、それらのファイルは上から下に処理されます。一意の変数名を使用することをお勧めします。詳細については、「[個々の環境変数を Amazon ECS コンテナに渡す](taskdef-envfiles.md)」を参照してください。    
`value`  
タイプ: 文字列  
必須: はい  
環境変数ファイルを含む Amazon S3 オブジェクトの Amazon リソースネーム (ARN)。  
`type`  
タイプ: 文字列  
必須: はい  
使用するファイルのタイプ。`s3` はサポートされる唯一の値です。

`environment`  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナに渡す環境変数。このパラメータは docker create-container コマンドの `Env` にマッピングされ、`--env` オプションは docker run コマンドにマッピングされます。  
認証情報データなどの機密情報にプレーンテキストの環境変数を使用することはお勧めしません。  
`name`  
タイプ: 文字列  
必須: はい (`environment` を使用する場合)  
環境変数の名前。  
`value`  
タイプ: 文字列  
必須: はい (`environment` を使用する場合)  
環境変数の値。

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

`secrets`  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナに公開するシークレットを表すオブジェクトです。詳細については、「[Amazon ECS コンテナに機密データを渡す](specifying-sensitive-data.md)」を参照してください。    
`name`  
タイプ: 文字列  
必須: はい  
コンテナの環境変数として設定する値。  
`valueFrom`  
タイプ: 文字列  
必須: はい  
コンテナに公開するシークレット。サポートされている値は、AWS Secrets Manager シークレットの完全な Amazon リソースネーム (ARN)、または AWS Systems Manager Parameter Store 内のパラメータの完全な ARN のいずれかです。  
起動するタスクと同じ AWS リージョン に Systems Manager パラメータストアのパラメータまたは Secrets Manager のパラメータが存在する場合は、シークレットの完全な ARN または名前のいずれかを使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

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

#### ネットワーク設定
<a name="container_definition_network"></a>

`disableNetworking`  
このパラメータは、Fargate で実行されるタスクではサポートされていません。  
タイプ: ブール値  
必須: いいえ  
このパラメータが true のとき、ネットワークはコンテナ内でオフになります。  
デフォルト: `false`。  

```
"disableNetworking": true|false
```

`links`  
このパラメータは、`awsvpc` ネットワークモードを使用するタスクではサポートされません。  
タイプ: 文字列配列  
必須: いいえ  
`link` パラメータでは、コンテナがポートマッピングを必要とせずに互いに通信することを許可します。このパラメータは、タスク定義のネットワークモードが `bridge` に設定されている場合にのみサポートされます。`name:internalName` コンストラクトは Docker リンクの `name:alias` に似ています。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。  
同じコンテナインスタンスに配置されたコンテナ同士は、リンクやホストポートマッピングを必要とせずに、互いに通信する場合があります。コンテナインスタンスでのネットワークの分離は、セキュリティグループと VPC 設定によって制御されます。

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

`hostname`  
タイプ: 文字列  
必須: いいえ  
コンテナに使用するホスト名。このパラメータは docker create-container の `Hostname` にマッピングされ、`--hostname` オプションは docker run にマッピングされます。  
`awsvpc` ネットワークモードを使用している場合、`hostname` パラメータはサポートされません。

```
"hostname": "string"
```

`dnsServers`  
このパラメータは、Fargate で実行されるタスクではサポートされません。  
タイプ: 文字列配列  
必須: いいえ  
コンテナに提示する DNS サーバーのリスト。  

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

`extraHosts`  
このパラメータは、`awsvpc` ネットワークモードを使用するタスクではサポートされていません。  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナ上の `/etc/hosts` ファイルに追加する、ホスト名と IP アドレスのマッピングリスト。  
このパラメータは docker create-container コマンドの `ExtraHosts` にマッピングされ、`--add-host` オプションは docker run にマッピングされます。  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
タイプ: 文字列  
必須: はい (`extraHosts` を使用する場合)  
`/etc/hosts` エントリで使用するホスト名。  
`ipAddress`  
タイプ: 文字列  
必須: はい (`extraHosts` を使用する場合)  
`/etc/hosts` エントリで使用する IP アドレス。

#### ストレージとログ記録
<a name="container_definition_storage"></a>

`readonlyRootFilesystem`  
タイプ: ブール値  
必須: いいえ  
このパラメータが true のとき、コンテナはそのルートファイルシステムへの読み取り専用アクセスを許可されます。このパラメータは docker create-container コマンドの `ReadonlyRootfs` にマッピングされ、`--read-only` オプションは docker run にマッピングされます。  
このパラメータは Windows コンテナではサポートされません。
デフォルト: `false`。  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナでのデータボリュームのマウントポイント。このパラメータは creat-container Docker API の `Volumes` にマッピングされ、docker run の `--volume` オプションにマッピングされます。  
Windows コンテナは `$env:ProgramData` と同じドライブに全部のディレクトリをマウントできます。Windows コンテナは、別のドライブにディレクトリをマウントすることはできません。また、マウントポイントは複数のドライブにまたがることはできません。Amazon EBS ボリュームを Amazon ECS タスクに直接アタッチするには、マウントポイントを指定する必要があります。    
`sourceVolume`  
タイプ: 文字列  
必須: はい (`mountPoints` を使用する場合)  
マウントするボリュームの名前。  
`containerPath`  
タイプ: 文字列  
必須: はい (`mountPoints` を使用する場合)  
ボリュームをマウントするコンテナ内のパス。  
`readOnly`  
タイプ: ブール値  
必須: いいえ  
この値が `true` の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が `false` の場合、コンテナはボリュームに書き込むことができます。デフォルト値は `false` です。  
Windows オペレーティングシステムを実行している EC2 インスタンスで実行されるタスクの場合、 値をデフォルト の `false` のままにします。

`volumesFrom`  
タイプ: オブジェクト配列  
必須: いいえ  
別コンテナからマウントするデータボリューム。このパラメータは docker create-container コマンドの `VolumesFrom` にマッピングされ、`--volumes-from` オプションは docker run にマッピングされます。    
`sourceContainer`  
タイプ: 文字列  
必須: はい (`volumesFrom` を使用する場合)  
ボリュームのマウント元のコンテナの名前。  
`readOnly`  
タイプ: ブール値  
必須: いいえ  
この値が `true` の場合、コンテナはボリュームへの読み取り専用アクセスを許可されます。この値が `false` の場合、コンテナはボリュームに書き込むことができます。デフォルト値は `false` です。

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

`logConfiguration`  
タイプ: [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html) オブジェクト  
必須: いいえ  
コンテナに対するログ構成の仕様です。  
ログ設定を使用したタスク定義の例については、「[Amazon ECS のタスク定義の例](example_task_definitions.md)」を参照してください。  
このパラメータは docker create-container コマンドの `LogConfig` にマッピングされ、`--log-driver` オプションは docker run にマッピングされます。デフォルトでは、コンテナは Docker デーモンで使用されるのと同じロギングドライバーを使用します。ただし、コンテナ定義の中で、このパラメータによりログドライバーを指定することで、Docker デーモンとは異なるログドライバーをコンテナに使用させることも可能です。コンテナに異なるロギングドライバーを使用するには、コンテナインスタンス (またはリモートログ記録オプションの別のログサーバー) でログシステムを適切に設定する必要があります。  
コンテナのログ設定を指定する際には、以下の点に注意してください。  
+ 現在、Amazon ECS では Docker デーモンに使用可能なログドライバーがいくつかサポートされています。
+ このパラメータを使用するには、コンテナインスタンスで Docker Remote API のバージョン 1.18 以降が必要です。
+ 追加のソフトウェアは、タスクの外部にインストールする必要があります。例えば、Fluentd 出力アグリゲータであるか、Gelf ログの送信先として Logstash を実行しているリモートホストです。

```
"logConfiguration": {
      "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
タイプ: 文字列  
有効な値: `"awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"`  
必須: はい (`logConfiguration` を使用する場合)  
コンテナに使用するログドライバー。デフォルトでは、上記の有効な値は Amazon ECS コンテナエージェントが通信できるログドライバーです。  
サポートされているログドライバーは `awslogs`、`splunk`、`awsfirelens` です。  
タスク定義で `awslogs` ログドライバーを使用してコンテナログを CloudWatch Logs に送信する方法については、「[Amazon ECS ログを CloudWatch に送信する](using_awslogs.md)」を参照してください。  
`awsfirelens` ログドライバーの使用の詳細については、「[カスタムログのルーティング](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html)」を参照してください。  
上記に示されていないカスタムドライバーがある場合、[GitHub で入手できる](https://github.com/aws/amazon-ecs-agent) Amazon ECS コンテナエージェントプロジェクトを fork し、そのドライバーを使用するようにカスタマイズできます。含めたい変更については、プルリクエストを送信することをお勧めします。ただし、現時点では、このソフトウェアの変更されたコピーの実行はサポートされていません。
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。  
`options`  
タイプ: 文字列間のマッピング  
必須: いいえ  
ログドライバーに送信する設定オプションの Key-Value マップ。  
指定できるオプションは、ログドライバーに応じて異なります。`awslogs` ルーターを使用して Amazon CloudWatch にログをルーティングするときに指定できるオプションには、以下が含まれます。    
`awslogs-create-group`  
必須: いいえ  
ロググループを自動的に作成させるかどうかを指定します。このオプションを指定しない場合、デフォルトは `false` です。  
`awslogs-create-group` を使用する前に、IAM ポリシーにはアクセス許可 `logs:CreateLogGroup` が含まれている必要があります。  
`awslogs-region`  
必須: はい  
`awslogs` ログドライバが Docker ログを送信する先の、AWS リージョン を指定します。CloudWatch Logs では、異なるリージョンのクラスターからすべてのログを 1 つのリージョンに送信するように選択できます。これにより、すべてのログを一元的な場所で確認できるようになります。他にも、リージョンごとにそれらを分離して、より細分化することが可能です。このオプションで指定するリージョンに、対象のロググループが存在することを確認してください。  
`awslogs-group`  
必須: はい  
`awslogs` ログドライバーがログストリームを送信する先の、ロググループを指定する必要があります。  
`awslogs-stream-prefix`  
必須: はい  
指定したプレフィックス、コンテナ名、コンテナが属する Amazon ECS タスクの ID にログストリームを関連付けるには、`awslogs-stream-prefix` オプションを使用します。このオプションでプレフィックスを指定した場合、ログストリームの形式は以下のようになります。  

```
prefix-name/container-name/ecs-task-id
```
このオプションでプレフィックスを指定しない場合、ログストリームには、コンテナインスタンスの Docker デーモンによって割り当てられたコンテナ ID に基づいた名前が付けられます。Docker コンテナ ID (コンテナインスタンスでのみ使用可能) だけでそのログを送信したコンテナを追跡するのは難しいため、このオプションでプレフィックスを指定することをお勧めします。  
Amazon ECS サービスでは、サービス名をプレフィックスとして使用できます。これにより、コンテナが属するサービスへのログストリームと、それを送信したコンテナの名前、そのコンテナが所属するタスクの ID を追跡できます。  
Amazon ECS コンソールを使用する際に [Log] ペインにログを表示するためには、ログのストリームプレフィックスを指定する必要があります。  
`awslogs-datetime-format`  
必須: いいえ  
このオプションは、Python `strftime` 形式で複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。一致する 1 行とは、ログメッセージ間の区切りです。  
この形式を使用する場合のユースケースの例としては、スタックダンプなどの解析された出力があり、これを使用しなければ、複数のエントリに記録されることになります。適切なパターンにより、単一のエントリにキャプチャさせます。  
詳細については、[awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format)を参照してください。  
`awslogs-datetime-format` と `awslogs-multiline-pattern` オプションの両方を設定することはできません。  
複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。  
`awslogs-multiline-pattern`  
必須: いいえ  
このオプションでは、正規表現を使用する複数行起動パターンを定義します。ログメッセージは、パターンに一致する 1 行と、それに続くパターンに一致しない行で構成されます。一致する 1 行とは、ログメッセージ間の区切りです。  
詳細については、「[awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern)」を参照してください。  
`awslogs-datetime-format` も設定されている場合は、このオプションは無視されます。  
`awslogs-datetime-format` と `awslogs-multiline-pattern` オプションの両方を設定することはできません。  
複数行のログ記録は、すべてのログメッセージの正規表現の解析とマッチングを実行します。これによりログ記録のパフォーマンスに悪影響が及ぶ可能性があります。
以下のオプションは、サポートされているすべてのログドライバーに適用されます。    
`mode`  
必須: いいえ  
有効な値: `non-blocking` \$1 `blocking`  
このオプションは、コンテナから `logDriver` で指定したログドライバーへのログメッセージの配信モードを定義します。選択した配信モードは、コンテナからンテナーからのログの流れが中断されたときのアプリケーションの可用性に影響します。  
`blocking` モードを使用していて、ログのフローが中断された場合、`stdout` ストリームと `stderr` ストリームに書き込むためのコンテナコードからの呼び出しがブロックされます。その結果、アプリケーションのロギングスレッドがブロックされます。これにより、アプリケーションが応答しなくなり、コンテナのヘルスチェックが失敗する可能性があります。  
`non-blocking` モードを使用する場合、コンテナのログは代わりに `max-buffer-size` オプションで設定されたメモリ内の中間バッファに保存されます。これにより、ログを送信できない場合にアプリケーションが応答しなくなるのを防ぐことができます。サービスの可用性を確保したいが、多少のログ損失があっても問題ない場合は、このモードを使用することをおすすめします。詳細については、「[Preventing log loss with non-blocking mode in the `awslogs` container log driver](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/)」を参照してください。  
`defaultLogDriverMode` アカウント設定を使用して、特定の AWS リージョンにあるすべてのコンテナのデフォルトの `mode` を設定できます。`logConfiguration` で `mode` オプションを指定しない場合、またはアカウント設定を構成しない場合、Amazon ECS はデフォルトで `non-blocking` モードになります。アカウント設定の詳細については、「[デフォルトのログドライバーモード](ecs-account-settings.md#default-log-driver-mode)」を参照してください。  
`non-blocking` モードが使用されている場合、`max-buffer-size` ログオプションは、中間メッセージ用のストレージに使用されるバッファのサイズを制御します。アプリケーションに基づいて、必ず適切なバッファサイズを指定してください。タスクレベルで割り当てられるメモリの合計量は、ログドライバーのメモリバッファに加えて、すべてのコンテナに割り当てられたメモリ量よりも大きくなければなりません。  
2025 年 6 月 25 日、Amazon ECS はデフォルトのログドライバーモードが `blocking` から `non-blocking` に変更され、ログ記録よりもタスクの可用性が優先されるようになりました。この変更以降も `blocking` モードを引き続き使用するには、次のいずれかを実行してください。  
+ コンテナ定義の `logConfiguration` の `mode` オプションを `blocking` に設定します。
+ `defaultLogDriverMode` アカウント設定を `blocking` に設定します。  
`max-buffer-size`  
必須: いいえ  
デフォルト値: `10m`  
`non-blocking` モードが使用されている場合、`max-buffer-size` ログオプションは、中間メッセージ用のストレージに使用されるバッファのサイズを制御します。アプリケーションに基づいて、必ず適切なバッファサイズを指定してください。バッファがいっぱいになると、それ以上ログを保存できなくなります。保存できないログは失われます。
`splunk` ログルーターを使用してログをルーティングするには、`splunk-token` と `splunk-url` を指定する必要があります。  
ログの保存と分析のための AWS のサービスまたは AWS Partner Networkを送信先としたログのルーティングに `awsfirelens` ログルーターを使用するときは、`log-driver-buffer-limit` オプションを設定して、イベントがログルーターコンテナに送信される前に、メモリでバッファリングされるログのライン数を制限できます。この制限は、スループットが高い場合に発生する可能性がある、Docker 内のバッファのメモリ不足による、潜在的なログ損失の問題を解決するのに役立ちます。詳細については、「[高スループットの Amazon ECS ログの設定](firelens-docker-buffer-limit.md)」を参照してください。  
`awsfirelens` を使用してログをルーティングするときに指定できるその他のオプションは、送信先に応じて異なります。Amazon Data Firehose にログをエクスポートするときは、`region` を使用して AWS リージョンを指定し、`delivery_stream` を使用してログストリームの名前を指定することができます。  
Amazon Kinesis Data Streams にログをエクスポートするときは、`region` を使用して AWS リージョンを指定し、`stream` を使用してデータストリーム名を指定することができます。  
 Amazon OpenSearch Service にログをエクスポートするときは、`Name`、`Host` (プロトコルを使用しない OpenSearch Service エンドポイント)、`Port`、`Index`、`Type`、`Aws_auth`、`Aws_region`、`Suppress_Type_Name`、および `tls` といったオプションを指定できます。  
Amazon S3 にログをエクスポートするときは、`bucket` オプションを使用してバケットを指定できます。また、`region`、`total_file_size`、`upload_timeout`、および `use_put_object` をオプションとして指定することもできます。  
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.19 以上を使用する必要があります。  
`secretOptions`  
タイプ: オブジェクト配列  
必須: いいえ  
ログ設定に渡すシークレットを示すオブジェクト。ログ構成で使用されるシークレットには、認証トークン、証明書、または暗号化キーを含められます。詳細については、「[Amazon ECS コンテナに機密データを渡す](specifying-sensitive-data.md)」を参照してください。    
`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](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html) オブジェクト  
必須: いいえ  
コンテナの FireLens 構成。これは、コンテナログのログルーターの指定と設定に使用されます。詳細については、「[Amazon ECS ログを AWS サービスまたは AWS Partner に送信する](using_firelens.md)」を参照してください。  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
タイプ: 文字列間のマッピング  
必須: いいえ  
ログルーターの設定時に使用するオプションの Key-Value マップ。このフィールドはオプションで、カスタム設定ファイルを指定するか、タスク、タスク定義、クラスター、コンテナインスタンスの詳細などのメタデータをログイベントに追加するために使用できます。指定した場合、使用する構文は `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}` です。詳細については、「[Amazon ECS タスク定義の例: FireLens にログをルーティングする](firelens-taskdef.md)」を参照してください。  
`type`  
タイプ: 文字列  
必須: はい  
使用するログルーター。有効な値は `fluentd` または `fluentbit` です。

#### セキュリティ
<a name="container_definition_security"></a>

コンテナセキュリティの詳細については、「[Amazon ECS タスクおよびコンテナのセキュリティのベストプラクティス](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-tasks-containers.html)」を参照してください。

`credentialSpecs`  
タイプ: 文字列配列  
必須: いいえ  
Active Directory 認証用のコンテナを設定する認証情報仕様 (`CredSpec`) ファイルへの SSM または Amazon S3 の ARN のリスト。`dockerSecurityOptions` の代わりに、このパラメータを使用することをお勧めします。ARN の最大数は 1 です。  
各 ARN には 2 つの形式があります。    
credentialspecdomainless:MyARN  
Secrets Manager にシークレットの追加セクションを持つ `CredSpec` を提供するために `credentialspecdomainless:MyARN` を使用します。シークレットでドメインへのログイン認証情報を指定します。  
任意のコンテナインスタンスで実行される各タスクは、異なるドメインに参加できます。  
この形式は、コンテナインスタンスをドメインに結合しなくても使用できます。  
credentialspec:MyARN  
単一ドメインに対して `CredSpec` を提供するために `credentialspec:MyARN` を使用します。  
このタスク定義を使用するタスクを開始する前に、コンテナインスタンスをドメインに参加させる必要があります。
どちらの形式でも、SSM または Amazon S3 で `MyARN` を ARN に置き換えます。  
`credspec` は、ユーザー名、パスワード、接続先のドメインを含むシークレットの ARN を Secrets Manager に提供する必要があります。セキュリティ向上のため、インスタンスはドメインレス認証のドメインに参加しません。インスタンス上の他のアプリケーションは、ドメインレス認証情報を使用できません。このパラメータを使用すると、タスクが別のドメインに参加する必要がある場合でも、同じインスタンスでタスクを実行できます。詳細については、「[Windows コンテナでの gMSAs の使用](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html)」および「[Linux コンテナ向け gMSAs を使用する](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html)」を参照してください。

`user`  
タイプ: 文字列  
必須: いいえ  
コンテナ内で使用するユーザー。このパラメータは docker create-container コマンドの `User` にマッピングされ、`--user` オプションは docker run にマッピングされます。  
`host` ネットワークモードを使用してタスクを実行する場合は、ルートユーザー (UID 0) を使用してコンテナを実行しないでください。セキュリティのベストプラクティスとしては、常にルート以外のユーザーを使用します。
以下の形式を使用して、`user` を指定できます。UID または GID を指定する場合は、正の整数として指定する必要があります。  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`
このパラメータは Windows コンテナではサポートされません。

```
"user": "string"
```

#### リソースの制限
<a name="container_definition_limits"></a>

`ulimits`  
タイプ: オブジェクト配列  
必須: いいえ  
コンテナに定義する `ulimit` 値の一覧。この値は、オペレーティングシステムのデフォルトのリソースクォータ設定を上書きします。このパラメータは docker create-container コマンドの `Ulimits` にマッピングされ、`--ulimit` オプションは docker run にマッピングされます。  
Fargate でホストされる Amazon ECS タスクは、オペレーションシステムで設定されたデフォルトのリソース制限値を使用します。ただし、`nofile` リソース制限パラメータを除きます。`nofile` リソース制限は、コンテナが使用できるオープンファイルの数の制限を設定します。Fargate では、デフォルトの `nofile` ソフト制限は ` 65535` で、ハード制限は `65535` です。両方の制限の値を設定できます (最大 `1048576`)。詳細については、「[タスクリソースの制限](fargate-tasks-services.md#fargate-resource-limits)」を参照してください。  
このパラメータは、コンテナインスタンスで 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` を使用する場合)  
`ulimit` の `type`。  
`hardLimit`  
タイプ: 整数  
必須: はい (`ulimits` を使用する場合)  
`ulimit` タイプのハード制限。値は、`ulimit` の `type` に応じて、バイト、秒、またはカウントとして指定できます。  
`softLimit`  
タイプ: 整数  
必須: はい (`ulimits` を使用する場合)  
`ulimit` タイプのソフト制限。値は、`ulimit` の `type` に応じて、バイト、秒、またはカウントとして指定できます。

#### Docker のラベル
<a name="container_definition_labels"></a>

`dockerLabels`  
タイプ: 文字列間のマッピング  
必須: いいえ  
コンテナに追加するラベルのキー/値マップ。このパラメータは docker create-container コマンドの `Labels` にマッピングされ、`--label` オプションは docker run にマッピングされます。  
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.18 以上を使用する必要があります。  

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

### その他のコンテナ定義のパラメータ
<a name="other_container_definition_params"></a>

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

**Topics**
+ [

#### Linux パラメータ
](#container_definition_linuxparameters)
+ [

#### コンテナの依存関係
](#container_definition_dependson)
+ [

#### [コンテナのタイムアウト]
](#container_definition_timeout)
+ [

#### システムコントロール
](#container_definition_systemcontrols)
+ [

#### インタラクティブ
](#container_definition_interactive)
+ [

#### 擬似ターミナル
](#container_definition_pseudoterminal)

#### Linux パラメータ
<a name="container_definition_linuxparameters"></a>

`linuxParameters`  
型: [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html) オブジェクト  
必須: いいえ  
[KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html) など、コンテナに適用される Linux 固有のオプション。  
このパラメータは Windows コンテナではサポートされません。

```
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
```  
`capabilities`  
型: [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html) オブジェクト  
必須: いいえ  
Docker によって提供されているデフォルト設定から削除されたコンテナ用の Linux 機能。これらの Linux 機能の詳細については、Linux マニュアルページの「[機能 (7)](http://man7.org/linux/man-pages/man7/capabilities.7.html)」を参照してください。    
`add`  
タイプ: 文字列配列  
有効な値: `"SYS_PTRACE"`  
必須: いいえ  
Docker によって提供されているデフォルト設定のコンテナに追加する Linux 機能。このパラメータは docker create-container コマンドの `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 create-container コマンドの `CapDrop` にマッピングされ、`--cap-drop` オプションは docker run にマッピングされます。  
`devices`  
コンテナに公開するすべてのホストデバイス。このパラメータは docker create-container コマンドの `Devices` にマッピングされ、`--device` オプションは docker run にマッピングされます。  
Fargate 起動タイプを使用する場合、`devices` パラメータはサポートされません。
タイプ: [デバイス](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)オブジェクト配列  
必須: いいえ    
`hostPath`  
ホストコンテナインスタンス上のデバイスのパス。  
タイプ: 文字列  
必須: はい  
`containerPath`  
ホストデバイスを公開する先のコンテナ内のパス。  
タイプ: 文字列  
必須: いいえ  
`permissions`  
デバイス用のコンテナに提供する明示的な許可。デフォルトでは、コンテナにはデバイスの `read`、`write`、および `mknod` のアクセス許可があります。  
型: 文字列の配列  
有効な値: `read` \$1 `write` \$1 `mknod`  
`initProcessEnabled`  
信号を転送しプロセスを利用するコンテナ内で、`init` を実行。このパラメータは docker run の `--init` オプションにマッピングされます。  
このパラメータは、コンテナインスタンスで Docker Remote API バージョン 1.25 以上を使用する必要があります。  
`maxSwap`  
このパラメータは、Fargate で実行されるタスクではサポートされません。  
コンテナが使用できるスワップメモリの合計 (MiB 単位)。このパラメータは、docker run の `--memory-swap` オプションに変換されます。値はコンテナメモリの合計に `maxSwap` の値を加えた値です。  
`0` の `maxSwap` 値を指定した場合、コンテナはスワップを使用しません。許容値は、`0` または任意の正の整数です。`maxSwap` パラメータを省略すると、コンテナは実行中のコンテナインスタンスのスワップ設定を使用します。`swappiness` パラメータを使用するには、`maxSwap` 値を設定する必要があります。  
`sharedMemorySize`  
`/dev/shm` ボリュームのサイズ値 (MiB) です。このパラメータは docker run の `--shm-size` オプションにマッピングされます。  
Fargate を使用するタスクを使用している場合、`sharedMemorySize` パラメータはサポートされません。
タイプ: 整数  
`tmpfs`  
tmpfs マウントのコンテナパス、マウントオプション、および最大サイズ (MiB) です。このパラメータは docker run の `--tmpfs` オプションにマッピングされます。  
型: [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html) オブジェクト配列  
必須: いいえ    
`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) です。  
タイプ: 整数  
必須: はい

#### コンテナの依存関係
<a name="container_definition_dependson"></a>

`dependsOn`  
型: [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html) オブジェクトの配列  
必須: いいえ  
コンテナの起動と停止に定義されている依存関係。コンテナには複数の依存関係を含めることができます。依存関係がコンテナの起動に対して定義されている場合、コンテナの停止の場合、依存関係は逆になります。例については、[コンテナの依存関係](example_task_definitions.md#example_task_definition-containerdependency)を参照してください。  
あるコンテナが依存関係における制限事項を満たさない場合、または制限を満たす前にタイムアウトした場合、Amazon ECS は、依存関係にある他のコンテナの状態も次に遷移させることはしません。
このパラメータでは、タスクまたはサービスがプラットフォームバージョン `1.3.0` 以降（Linux）または `1.0.0`（Windows）を使用している必要があります。  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
タイプ: 文字列  
必須: はい  
コンテナ名が指定された条件を満たしている必要があります。  
`condition`  
タイプ: 文字列  
必須: はい  
コンテナの依存関係の条件です。使用可能な条件とその動作を以下に示します。  
+ `START` - この条件は、すぐに現在のリンクとボリュームの動作をエミュレートします。この条件は、他のコンテナの開始を許可する前に、依存コンテナが開始されていることを検証します。
+ `COMPLETE` - この条件は、他のコンテナの開始を許可する前に、依存コンテナの実行が完了 (終了) することを検証します。これは、スクリプトを実行して終了するだけの、重要性の低いコンテナのために便利です。この条件は、必須コンテナには設定できません。
+ `SUCCESS` - この条件は `COMPLETE` と同じですが、コンテナが `zero` ステータスで終了していることも必要です。この条件は、必須コンテナには設定できません。
+ `HEALTHY` — この条件は、他のコンテナの開始を許可する前に、依存コンテナがそのコンテナのヘルスチェックに合格したことを検証します。これには、タスク定義に設定されているヘルスチェックが依存コンテナにある必要があります。タスクの起動時にのみ、この条件が確認されます。

#### [コンテナのタイムアウト]
<a name="container_definition_timeout"></a>

`startTimeout`  
タイプ: 整数  
必須: いいえ  
値の例: `120`  
コンテナの依存関係解決の再試行を止めるまでの待機時間 (秒)。  
例えば、タスク定義内に 2 つのコンテナを指定するとします。`containerA` は、`COMPLETE`、`SUCCESS`、または `HEALTHY` のいずれかのステータスに到達する `containerB` に依存関係を持ちます。`startTimeout` の値に `containerB` が指定されていて、コンテナが時間内に目標のステータスまで到達しない場合、`containerA` は開始しません。  
あるコンテナが依存関係における制限事項を満たさない場合、または制限を満たす前にタイムアウトした場合、Amazon ECS は、依存関係にある他のコンテナの状態も次に遷移させることはしません。
このパラメータでは、タスクまたはサービスがプラットフォームバージョン `1.3.0` 以降（Linux）を使用している必要があります。最大値は 120 秒です。

`stopTimeout`  
タイプ: 整数  
必須: いいえ  
値の例: `120`  
コンテナが正常に終了しなかった場合にコンテナが強制終了されるまでの待機時間 (秒)。  
このパラメータでは、タスクまたはサービスがプラットフォームバージョン `1.3.0` 以降（Linux）を使用している必要があります。このパラメータを指定しない場合には、デフォルト値の 30 秒が適用されます。最大値は 120 秒です。

#### システムコントロール
<a name="container_definition_systemcontrols"></a>

`systemControls`  
型: [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html) オブジェクト  
必須: いいえ  
コンテナ内で設定する名前空間カーネルパラメータのリスト。このパラメータは docker create-container コマンドの `Sysctls` にマッピングされ、`--sysctl` オプションは docker run にマッピングされます。例えば、接続をより長く維持するように `net.ipv4.tcp_keepalive_time` 設定を構成できます。  
`awsvpc` または `host` ネットワークモードも使用する単一のタスクで、複数のコンテナに対してネットワーク関連の `systemControls` パラメータを指定することは推奨されません。これを行うと、次のような欠点があります。  
+ `systemControls` をいずれかのコンテナ用に設定した場合、タスク内のすべてのコンテナに適用されます。単一のタスクの複数のコンテナに対して異なる `systemControls` を設定すると、最後に開始されたコンテナによって、有効になる `systemControls` が決定します。
タスク内でコンテナに使用するため IPC リソース名前空間を設定している場合、システムコントロールには以下の条件が適用されます。詳細については、「[IPC モード](#task_definition_ipcmode)」を参照してください。  
+ `host` IPC モードを使用するタスクの場合、IPC 名前空間の `systemControls` はサポートされていません。
+ `task` IPC モードを使用するタスクでは、IPC 名前空間の `systemControls` 値が、タスク内のすべてのコンテナに適用されます。
このパラメータは Windows コンテナではサポートされません。
このパラメータは、プラットフォームバージョン `1.4.0` 以降 (Linux) を使用する場合に、AWS Fargate でホストされたタスクでのみサポートされます。このパラメータは Fargate 上の Windows コンテナではサポートされません。

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
タイプ: 文字列  
必須: いいえ  
`value` を設定する名前空間カーネルパラメータ。  
有効な IPC 名前空間の値: `"fs.mqueue.*"` で開始する `"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"`、および `Sysctls`  
有効なネットワーク名前空間値: `"net.*"` で始まる `Sysctls`。Fargate では、コンテナ内に存在する名前空間 `Sysctls` のみが受け入れられます。  
これらの値はすべて Fargate でサポートされています。  
`value`  
タイプ: 文字列  
必須: いいえ  
`namespace` で指定された名前空間カーネルパラメータの値。

#### インタラクティブ
<a name="container_definition_interactive"></a>

`interactive`  
タイプ: ブール値  
必須: いいえ  
このパラメータが `true` の場合、`stdin` または `tty` を割り当てる必要がある、コンテナ化されたアプリケーションをデプロイすることができます。このパラメータは docker create-container コマンドの `OpenStdin` にマッピングされ、`--interactive` オプションは docker run にマッピングされます。  
デフォルト: `false`。

#### 擬似ターミナル
<a name="container_definition_pseudoterminal"></a>

`pseudoTerminal`  
タイプ: ブール値  
必須: いいえ  
このパラメータが `true` の場合、TTY が割り当てられます。このパラメータは docker create-container コマンドの `Tty` にマッピングされ、`--tty` オプションは docker run にマッピングされます。  
デフォルト: `false`。

## Elastic Inference アクセラレーター名 (廃止)
<a name="elastic-Inference-accelerator"></a>

タスク定義用の Elastic Inference アクセラレーターのリソース要件。

**注記**  
Amazon Elastic Inference (EI) は利用できなくなりました。

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

`deviceName`  
タイプ: 文字列  
必須: はい  
Elastic Inference アクセラレーターのデバイス名。`deviceName` は、コンテナ定義でも参照されます。[Elastic Inference accelerator](#ContainerDefinition-elastic-inference) を参照してください。

`deviceType`  
タイプ: 文字列  
必須: はい  
使用する Elastic Inference アクセラレーター。

## プロキシ設定
<a name="proxyConfiguration"></a>

`proxyConfiguration`  
タイプ: [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html) オブジェクト  
必須: いいえ  
App Mesh プロキシ設定の詳細。  
このパラメータは Windows コンテナではサポートされません。

```
"proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "string",
    "properties": [
        {
           "name": "string",
           "value": "string"
        }
    ]
}
```  
`type`  
タイプ: 文字列  
重要な値: `APPMESH`  
必須: いいえ  
プロキシのタイプ。`APPMESH` はサポートされる唯一の値です。  
`containerName`  
タイプ: 文字列  
必須: はい  
App Mesh プロキシとして機能するコンテナの名前です。  
`properties`  
タイプ: [パラメータ](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KeyValuePair.html)オブジェクトの配列  
必須: いいえ  
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`  
タイプ: 文字列  
必須: いいえ  
キーと値のペアの値。

## ボリューム
<a name="volumes"></a>

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

使用できるデータボリュームの種類は以下のとおりです。
+ Amazon EBS ボリューム – データ集約型のコンテナ化されたワークロード向けに、費用対効果が高く、耐久性があり、高性能なブロックストレージを提供します。スタンドアロンタスクを実行するとき、またはサービスを作成または更新するときに、Amazon ECS タスクごとに 1 つの Amazon EBS ボリュームをアタッチできます。Amazon EBS ボリュームは、Fargate でホストされている Linux タスクでサポートされています。詳細については、「[Amazon ECS での Amazon EBS ボリュームの使用](ebs-volumes.md)」を参照してください。
+ Amazon EFS ボリューム - Amazon ECS タスクで使用するためのシンプルかつスケーラブルで、永続的なファイルストレージを提供します。Amazon EFSでは、ストレージ容量は伸縮性があります。この容量は、ファイルの追加や削除に伴い自動的に拡大および縮小されます。アプリケーションは、必要なときに必要なストレージを確保できます。Amazon EFS ボリュームは、Fargate でホストされるタスクでサポートされます。詳細については、「[Amazon ECS での Amazon EFS ボリュームの使用](efs-volumes.md)」を参照してください。
+ FSx for Windows File Server ボリューム – 完全マネージド型の Microsoft Windows ファイルサーバーを提供します。これらのファイルサーバは、Windows ファイルシステムによってバックアップされています。Amazon ECS と共に FSx for Windows File Server を使用する場合、永続的、分散型、共有型、および静的なファイルストレージを使用して、Windows タスクをプロビジョニングすることが可能です。詳細については、「[Amazon ECS での FSx for Windows File Server ボリュームの使用](wfsx-volumes.md)」を参照してください。

  このオプションは Fargate の Windows コンテナではサポートされません。
+ バインドマウント – ホストマシン上のファイルやディレクトリがコンテナにマウントされます。バインドマウントホストボリュームは、タスク実行時にサポートされます。バインドマウントのホストボリュームを使用するには、タスク定義で `host` およびオプションの `sourcePath` 値を使用します。

詳細については、「[Amazon ECS タスクのストレージオプション](using_data_volumes.md)」を参照してください。

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

`name`  
タイプ: 文字列  
必須: いいえ  
ボリュームの名前。最大 255 文字の英字 (大文字と小文字の区別あり)、数字、ハイフン (`-`)、アンダースコア (`_`) を使用できます。この名前は、コンテナ定義 `mountPoints` オブジェクトの `sourceVolume` パラメータで参照されます。

`host`  
必須: いいえ  
`host` パラメーターは、バインドマウントのライフサイクルを、タスクではなくホスト Amazon EC2 インスタンスと、それが格納されている場所に関連付けるために使用されます。`host` パラメーターが空の場合、Docker デーモンはデータボリュームのホストパスを割り当てますが、関連付けられたコンテナの実行が停止した後にデータが保持されるとは限りません。  
Windows コンテナは `$env:ProgramData` と同じドライブに全部のディレクトリをマウントできます。  
`sourcePath` パラメータは、Amazon EC2 インスタンスまたは Amazon ECS マネージドインスタンスでホストされているタスクを使用する場合にのみサポートされます。  
`sourcePath`  
タイプ: 文字列  
必須: いいえ  
`host` パラメータを使用する場合は、`sourcePath` を指定して、コンテナに表示されるホスト Amazon EC2 インスタンスのパスを宣言します。このパラメータが空の場合は、Docker デーモンによってホストパスが割り当てられます。`host` パラメータに `sourcePath` の場所が含まれている場合、データボリュームは手動で削除するまでホスト Amazon EC2 インスタンスの指定された場所に保持されます。`sourcePath` の値がホスト Amazon EC2 インスタンスに存在しない場合は、Docker デーモンによって作成されます。その場所が存在する場合は、ソースパスフォルダの内容がエクスポートされます。

`configuredAtLaunch`  
タイプ: ブール値  
必須: いいえ  
起動時にボリュームを設定可能にするかどうかを指定します。`true` に設定すると、スタンドアロンタスクを実行するとき、またはサービスを作成または更新するときにボリュームを設定できます。`true` に設定すると、タスク定義内で別のボリューム設定を提供することはできません。タスクにアタッチする Amazon EBS ボリュームを設定するには、このパラメータを `true` に設定する必要があります。`configuredAtLaunch` を `true` に設定し、ボリューム設定を起動フェーズに先送りすることで、ボリュームタイプや特定のボリューム設定に限定されないタスク定義を作成できます。こうすることで、タスク定義をさまざまな実行環境で再利用できるようになります。詳細については、「[Amazon EBS ボリューム](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html)」を参照してください。

`dockerVolumeConfiguration`  
タイプ: [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html) オブジェクト  
必須: いいえ  
このパラメータは、Docker ボリュームを使用する場合に指定します。Docker ボリュームは、EC2 インスタンスでタスクを実行する場合にのみサポートされます。Windows コンテナでは、`local` ドライバーの使用のみがサポートされます。バインドマウントを使用するには、代わりに `host` を指定します。    
`scope`  
タイプ: 文字列  
有効な値: `task` \$1 `shared`  
必須: いいえ  
Docker ボリュームのスコープ。これにより、ボリュームのライフサイクルが決定されます。Docker ボリュームの範囲が `task` の場合は、タスクが開始すると自動的にプロビジョンされ、タスクが停止すると破棄されます。Docker ボリュームの範囲が `shared` の場合は、タスクの停止後も保持されます。  
`autoprovision`  
タイプ: ブール値  
デフォルト値: `false`  
必須: いいえ  
この値が `true` の場合、既に存在していない場合は Docker ボリュームが作成されます。このフィールドは、`scope` が `shared` の場合にのみ使用されます。`scope` が `task` の場合、このパラメータは省略する必要があります。  
`driver`  
タイプ: 文字列  
必須: いいえ  
使用する Docker ボリュームドライバー。この名前はタスク配置に使用されるため、ドライバー値は Docker で提供されているドライバー名と一致する必要があります。ドライバーが Docker プラグイン CLI を使用してインストールされた場合は、`docker plugin ls` を使用してコンテナインスタンスからドライバー名を取得します。ドライバーが別の方法でインストール済みである場合は、Docker プラグイン検出を使用してドライバー名を取得します。  
`driverOpts`  
タイプ: 文字列  
必須: いいえ  
パススルーする Docker ドライバー固有のオプションのマップ。このパラメータは、Docker の「Create a volume」セクションの `DriverOpts` にマッピングされます。  
`labels`  
タイプ: 文字列  
必須: いいえ  
Docker ボリュームに追加するカスタムメタデータ。

`efsVolumeConfiguration`  
タイプ: [EFSVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html) オブジェクト  
必須: いいえ  
このパラメータは、Amazon EFS ボリュームを使用する場合に指定します。    
`fileSystemId`  
タイプ: 文字列  
必須: はい  
使用する Amazon EFS ファイルシステムの ID。  
`rootDirectory`  
タイプ: 文字列  
必須: いいえ  
ホスト内にルートディレクトリとしてマウントする Amazon EFS ファイルシステム内のディレクトリ。このパラメータを省略すると、Amazon EFS ボリュームのルートが使用されます。`/` を指定すると、このパラメータを省略した場合と同じ結果になります。  
`authorizationConfig` で EFS アクセスポイントが指定されている場合は、ルートディレクトリパラメータを省略するか `/` に設定して、EFS アクセスポイントにパスを設定する必要があります。  
`transitEncryption`  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
Amazon ECS ホストと Amazon EFS サーバー間で、転送中の Amazon EFS データの暗号化を有効にするかどうかを指定します。Amazon EFS IAM 認可を使用する場合は、転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。詳細については、*Amazon Elastic ファイルシステムユーザーガイド*の「[転送中データの暗号化](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html)」を参照してください。  
`transitEncryptionPort`  
タイプ: 整数  
必須: いいえ  
Amazon ECS ホストと Amazon EFS サーバーとの間で、暗号化されたデータを送信するときに使用するポート。転送暗号化ポートを指定しない場合、タスクでは Amazon EFS マウントヘルパーが使用するポート選択戦略が使用されます。詳細については、*[Amazon Elastic File System User Guide]* (Amazon Elastic File System ユーザーガイド) の[[EFS Mount Helper]](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) (EFS マウントヘルパー) を参照してください。  
`authorizationConfig`  
タイプ: [EFSAuthorizationConfig](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSAuthorizationConfig.html) オブジェクト  
必須: いいえ  
Amazon EFS ファイルシステムに対する認可構成の詳細。    
`accessPointId`  
タイプ: 文字列  
必須: いいえ  
使用するアクセスポイント ID。アクセスポイントが指定されている場合は、`efsVolumeConfiguration` のルートディレクトリ値を省略するか `/` に設定して、EFS アクセスポイントにパスを設定する必要があります。アクセスポイントを使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。詳細については、*Amazon Elastic ファイルシステムユーザーガイド*の [Amazon EFS アクセスポイントの使用](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html)を参照してください。  
`iam`  
タイプ: 文字列  
有効な値: `ENABLED` \$1 `DISABLED`  
必須: いいえ  
タスク定義で定義した Amazon ECS タスクの IAM ロールを、Amazon EFS ファイルシステムのマウント時に使用するかどうかを指定します。使用する場合は、`EFSVolumeConfiguration` で転送中の暗号化を有効にする必要があります。このパラメータを省略すると、`DISABLED` のデフォルト値が使用されます。詳細については、「[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)」を参照してください。

`FSxWindowsFileServerVolumeConfiguration`  
タイプ: [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html) オブジェクト  
必須: はい  
このパラメータは、タスクストレージに [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) ファイルシステムを使用する場合に指定します。    
`fileSystemId`  
タイプ: 文字列  
必須: はい  
使用する FSx for Windows File Server ファイルシステムID。  
`rootDirectory`  
タイプ: 文字列  
必須: はい  
ホスト内にルートディレクトリとしてマウントする FSx for Windows File Server ファイルシステム内のディレクトリ。  
`authorizationConfig`    
`credentialsParameter`  
タイプ: 文字列  
必須: はい  
認可の認証情報オプション。  

**options:**
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) シークレットの Amazon リソースネーム (ARN)。
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html) パラメータの ARN。  
`domain`  
タイプ: 文字列  
必須: はい  
[AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) (AWS Managed Microsoft AD) ディレクトリまたはセルフホスト型 EC2 Active Directory によってホストされる完全修飾ドメイン名。

## タグ
<a name="tags"></a>

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

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

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

`key`  
タイプ: 文字列  
必須: いいえ  
タグを構成するキーと値のペアの一部。キーは、より具体的なタグ値のカテゴリのように動作する、一般的なラベルです。

`value`  
タイプ: 文字列  
必須: いいえ  
タグを構成するキーと値のペアのオプションの一部。値はタグカテゴリ (キー) の記述子として機能します。

## その他のタスク定義パラメータ
<a name="other_task_definition_params"></a>

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

**Topics**
+ [

### エフェメラルストレージ
](#task_definition_ephemeralStorage)
+ [

### IPC モード
](#task_definition_ipcmode)
+ [

### PID モード
](#task_definition_pidmode)
+ [

### フォールトインジェクション
](#task_definition_faultInjection)

### エフェメラルストレージ
<a name="task_definition_ephemeralStorage"></a>

`ephemeralStorage`  
タイプ: [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html) オブジェクト  
必須: いいえ  
タスクに割り当てるエフェメラルストレージの容量(GB 単位)。このパラメーターは、AWS Fargate でホストされるタスクにおいて、利用可能なエフェメラルストレージの総量をデフォルトの容量を超えて拡張する際に使用します。詳細については、「[Amazon ECS でのバインドマウントの使用](bind-mounts.md)」を参照してください。  
このパラメータは、プラットフォームバージョン `1.4.0` 以降 (Linux) または `1.0.0` 以降 (Windows) でのみサポートされます。

### IPC モード
<a name="task_definition_ipcmode"></a>

`ipcMode`  
このパラメータは、Fargate で実行されるタスクではサポートされません。  
タイプ: 文字列  
必須: いいえ  
タスクのコンテナで使用する IPC リソースの名前空間。有効な値は `host`、`task` または `none` です。`host` が指定されている場合、同一のコンテナインスタンス上にある (`host` IPC モードを指定した) タスク内のすべてのコンテナは、ホスト Amazon EC2 インスタンスと同じ IPC リソースを共有します。`task` が指定されている場合、指定されたタスク内のすべてのコンテナは同じ IPC リソースを共有します。`none` が指定されている場合、タスクのコンテナ内の IPC リソースはプライベートです。タスク内またはコンテナインスタンスの他のコンテナと共有されることはありません。値を指定しない場合、IPC リソース名前空間の共有はコンテナインスタンスの Docker デーモンの設定によって異なります。  
`host` IPC モードを使用する場合は、意図せず IPC 名前空間が公開されるリスクが高いことに注意してください。  
タスク内のコンテナに、`systemControls` を使用して名前空間のカーネルパラメータを設定している場合は、以下の点が IPC リソース名前空間に適用されます。  
+ `host` IPC モードを使用するタスクの場合、`systemControls` に関連する IPC 名前空間はサポートされません。
+ `task` IPC モードを使用するタスクでは、IPC 名前空間に関連する `systemControls` が、タスク内のすべてのコンテナに適用されます。

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

### PID モード
<a name="task_definition_pidmode"></a>

`pidMode`  
タイプ: 文字列  
有効な値: `host` \$1 `task`  
必須: いいえ  
タスクのコンテナで使用するプロセス名前空間。有効な値は `host` または `task` です。Linuxコンテナでは、有効な値は `task` のみです。例えば、サイドカーのモニタリングでは、`pidMode` が同じタスクで実行されている他のコンテナに関する情報にアクセスする必要がある場合があります。  
`task` が指定されている場合、指定したタスク内のすべてのコンテナは同じプロセス名前空間を共有します。  
値が指定されていない場合、デフォルトは各コンテナのプライベート名前空間です。

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

### フォールトインジェクション
<a name="task_definition_faultInjection"></a>

`enableFaultInjection`  
タイプ: ブール値  
有効な値: `true` \$1 `false`  
必須: いいえ  
このパラメータが `true` に設定されている場合、タスクのペイロードで、Amazon ECS と Fargate はタスクのコンテナからのフォールトインジェクションリクエストを受け入れます。デフォルトでは、このパラメータは `false` に設定されます。