

# Amazon ECS 관리형 인스턴스에 대한 Amazon ECS 태스크 정의 파라미터
<a name="task_definition_parameters-managed-instances"></a>

태스크 정의는 태스크 패밀리, AWS Identity and Access Management(IAM) 태스크 역할, 네트워크 모드, 컨테이너 정의, 볼륨, 용량과 같은 개별 부분으로 분할됩니다. 태스크 정의에는 패밀리 및 컨테이너 정의가 필요합니다. 하지만 태스크 역할, 네트워크 모드, 볼륨 및 용량은 선택 사항입니다.

JSON 파일에서 이러한 파라미터를 사용하여 태스크 정의를 구성할 수 있습니다.

다음은 Amazon ECS 관리형 인스턴스의 각 태스크 정의 파라미터에 대한 자세한 설명입니다.

## Family
<a name="family-managed-instances"></a>

`family`  
유형: 문자열  
필수 항목 여부: 예  
태스크 정의를 등록할 때 패밀리를 지정합니다. 패밀리는 개정 번호를 사용하여 지정된 태스크 정의의 여러 버전에 대한 이름과 비슷합니다. 특정 패밀리에 등록된 첫 번째 태스크 정의에는 개정 번호 1이 부여되고 그 이후 등록된 태스크 정의에는 순차적으로 개정 번호가 부여됩니다.

## Capacity
<a name="requires_compatibilities-managed-instances"></a>

태스크 정의를 등록할 때 Amazon ECS가 태스크 정의를 검증할 용량을 지정할 수 있습니다. 태스크 정의가 유효성을 지정한 호환성에 대해 검사하지 않으면 클라이언트 예외가 반환됩니다. 자세한 내용은 [Amazon ECS 시작 유형](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)을 참조하세요.

태스크 정의에서 다음 파라미터가 허용됩니다.

`requiresCompatibilities`  
유형: 문자열 배열  
필수 여부: 아니요  
유효한 값: `MANAGED_INSTANCES`  
태스크 정의를 검증할 용량. 이를 통해 태스크 정의에 사용되는 모든 파라미터가 Amazon ECS 관리형 인스턴스의 요구 사항을 충족하는지 확인할 수 있습니다.

## 태스크 역할
<a name="task_role_arn-managed-instances"></a>

`taskRoleArn`  
유형: 문자열  
필수 여부: 아니요  
태스크 정의를 등록할 때 태스크 권한의 컨테이너가 사용자 대신 연결된 정책에 지정된 AWS API를 호출하도록 허용하는 IAM 역할에 태스크 역할을 제공할 수 있습니다. 자세한 내용은 [Amazon ECS 작업 IAM 역할](task-iam-roles.md) 섹션을 참조하세요.

## 태스크 실행 역할
<a name="execution_role_arn-managed-instances"></a>

`executionRoleArn`  
유형: 문자열  
필수 항목 여부: 조건부  
Amazon ECS 컨테이너 에이전트에 사용자를 대신하여 AWS API를 호출할 권한을 부여하는 태스크 실행 역할의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md) 섹션을 참조하세요.  
태스크의 요구 사항에 따라 태스크 실행 IAM 역할이 필요합니다. 역할은 `awslogs` 로그 드라이버를 사용하며 프라이빗 ECR 이미지 가져오기에 필요합니다.

## 네트워크 모드
<a name="network_mode-managed-instances"></a>

`networkMode`  
유형: 문자열  
필수 항목 여부: 아니요  
기본값: `awsvpc`  
태스크의 컨테이너에 사용할 네트워킹 모드. Amazon ECS 관리형 인스턴스에서 호스팅되는 Amazon ECS 태스크의 경우, 유효한 값은 `awsvpc` 및 `host`입니다. 네트워크 모드를 지정하지 않으면 기본 네트워크 모드는 `awsvpc`입니다.  
네트워크 모드가 `host`인 경우 태스크는 네트워크 격리를 우회하고 컨테이너는 호스트의 네트워크 스택을 직접 사용합니다.  
`host` 네트워크 모드를 사용하여 태스크를 실행할 때는 더 나은 보안을 위해 루트 사용자(UID 0)를 사용하여 컨테이너를 실행해서는 안 됩니다. 보안상 항상 루트가 아닌 사용자를 사용합니다.
네트워크 모드가 `awsvpc`인 경우 해당 태스크에 탄력적 네트워크 인터페이스가 할당되므로 서비스를 생성하거나 태스크 정의로 태스크를 실행하려면 `NetworkConfiguration`을 지정해야 합니다. 자세한 내용은 [Amazon ECS 관리형 인스턴스에 대한 Amazon ECS 태스크 네트워킹](managed-instance-networking.md) 섹션을 참조하세요.  
`host` 및 `awsvpc` 네트워크 모드는 Amazon EC2 네트워크 스택을 사용하는 컨테이너에 가장 높은 수준의 네트워킹 성능을 제공합니다. `host` 및 `awsvpc` 네트워크 모드에서는 노출된 컨테이너 포트가 해당 호스트 포트(`host` 네트워크 모드의 경우) 또는 연결된 탄력적 네트워크 인터페이스 포트(`awsvpc` 네트워크 의 경우)에 직접 매핑됩니다. 이 때문에 동적 호스트 포트 매핑을 사용할 수 없습니다.

## 런타임 플랫폼
<a name="runtime-platform-managed-instances"></a>

`operatingSystemFamily`  
유형: 문자열  
필수 여부: 아니요  
기본값: LINUX  
태스크 정의를 등록할 때 운영 체제 제품군을 지정합니다.  
이 필드의 유효한 값은 `LINUX`입니다.  
서비스에서 사용되는 모든 태스크 정의는 이 파라미터에 대해 동일한 값을 가져야 합니다.  
태스크 정의가 서비스의 일부인 경우 이 값은 서비스 `platformFamily` 값과 일치해야 합니다.

`cpuArchitecture`  
유형: 문자열  
필수 항목 여부: 조건부  
태스크 정의를 등록할 때 CPU 아키텍처를 지정합니다. 유효 값은 `X86_64` 및 `ARM64`입니다.  
값을 지정하지 않으면 Amazon ECS는 용량 공급자 구성을 기반으로 사용 가능한 CPU 아키텍처에 태스크를 배치하려고 시도합니다. 태스크를 특정 CPU 아키텍처에 배치하게 하려면 태스크 정의에서 `cpuArchitecture`의 값을 지정합니다.  
서비스에서 사용되는 모든 태스크 정의는 이 파라미터에 대해 동일한 값을 가져야 합니다.  
`ARM64`에 대한 자세한 정보는 [64비트 ARM 워크로드에 대한 Amazon ECS 작업 정의](ecs-arm64.md) 섹션을 참조하세요.

## 태스크 크기
<a name="task_size-managed-instances"></a>

태스크 정의를 등록할 때 태스크에 대해 사용할 CPU 및 메모리 총량을 지정할 수 있습니다. 이것은 컨테이너 정의 수준의 `cpu` 및 `memory` 값과는 구분됩니다. Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우, 이 필드는 선택 사항입니다.

**참고**  
Windows 컨테이너에 대해서는 태스크 레벨 CPU와 메모리 파라미터가 무시됩니다. Windows 컨테이너에 대해서는 컨테이너 레벨 리소스를 지정할 것을 권장합니다.

`cpu`  
유형: 문자열  
필수 항목 여부: 조건부  
태스크에 대해 표시되는 CPU 단위의 하드 제한입니다. JSON 파일에서 CPU 값을 문자열(CPU 단위 또는 가상 CPU(vCPU))로 지정할 수 있습니다. 예를 들어 CPU 값을 `1024`(CPU 단위) 또는 `1 vCPU`(vCPU)로 지정할 수 있습니다. 태스크 정의를 등록할 때는 vCPU 값이 CPU 단위를 나타내는 정수로 변환됩니다.  
이 필드는 선택 사항입니다. 클러스터에 요청된 CPU 단위가 사용 가능한 등록된 컨테이너 인스턴스가 없는 경우 태스크가 실패합니다. 지원되는 값은 `0.125` vCPU에서 `10` vCPU 사이입니다.

`memory`  
유형: 문자열  
필수 항목 여부: 조건부  
작업에 표시할 메모리의 하드 제한. 작업 정의에서 메모리 값을 문자열(메비바이트(MiB) 또는 기가바이트(GB) 단위)로 지정할 수 있습니다. 예를 들어 메모리 값을 `3072`(MiB) 또는 `3 GB`(GB)로 지정할 수 있습니다. 태스크 정의를 등록할 때는 GB 값이 MiB를 나타내는 정수로 변환됩니다.  
이 필드는 선택 사항이며 아무 값이나 사용할 수 있습니다. 태스크 수준 메모리 값이 지정된 경우 컨테이너 수준 메모리 값은 선택 사항입니다. 클러스터에 요청된 메모리에 사용 가능한 등록된 컨테이너 인스턴스가 없는 경우 태스크가 실패합니다. 특정 인스턴스 유형에 대해 태스크에 가능한 한 많은 메모리를 제공하여 리소스 사용률을 최대화할 수 있습니다. 자세한 내용은 [Amazon ECS Linux 컨테이너 인스턴스 메모리 예약](memory-management.md) 섹션을 참조하세요.

## 기타 태스크 정의 파라미터
<a name="other_task_definition_params-managed-instances"></a>

다음의 태스크 정의 파라미터는 **JSON을 통한 구성(Configure via JSON)** 옵션을 사용하여 Amazon ECS 콘솔에 태스크 정의를 등록할 때 사용할 수 있습니다. 자세한 정보는 [콘솔을 사용하여 Amazon ECS 작업 정의 생성](create-task-definition.md)을 참조하세요.

**Topics**
+ [임시 스토리지](#task_definition_ephemeralStorage-managed-instances)
+ [IPC 모드](#task_definition_ipcmode-managed-instances)
+ [PID 모드](#task_definition_pidmode-managed-instances)
+ [프록시 구성](#proxyConfiguration-managed-instances)
+ [Tags](#tags-managed-instances)
+ [Elastic Inference 액셀러레이터(폐기됨)](#elastic-Inference-accelerator-managed-instances)
+ [배치 제약 조건](#constraints-managed-instances)
+ [볼륨](#volumes-managed-instances)

### 임시 스토리지
<a name="task_definition_ephemeralStorage-managed-instances"></a>

`ephemeralStorage`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html) 객체  
필수 여부: 아니요  
태스크에 할당되는 임시 스토리지 용량(GB)입니다. 이 파라미터는 AWS Fargate에서 호스팅되는 태스크에 대해 제공되는 임시 스토리지 총량을 기본 용량 이상으로 확장할 때 사용합니다. 자세한 내용은 [Amazon ECS에서 바인드 탑재 사용](bind-mounts.md) 섹션을 참조하세요.

### IPC 모드
<a name="task_definition_ipcmode-managed-instances"></a>

`ipcMode`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 문자열  
필수 여부: 아니요  
해당 태스크의 컨테이너에 사용할 IPC 리소스 네임스페이스입니다. 유효한 값은 `host`, `task` 또는 `none`입니다. `host`를 지정하면 동일한 컨테이너 인스턴스에서 `host` IPC 모드를 지정한 태스크 내 모든 컨테이너가 동일한 IPC 리소스를 호스트 Amazon EC2 인스턴스와 공유합니다. `task`를 지정하면 지정된 태스크 내 모든 컨테이너가 동일한 IPC 리소스를 공유합니다. `none`이 지정된 경우, 태스크 컨테이너 내에 있는 IPC 리소스는 프라이빗이며, 태스크 또는 컨테이너 인스턴스의 다른 컨테이너와 공유되지 않습니다. 값을 지정하지 않으면 IPC 리소스 네임스페이스 공유는 컨테이너 런타임 구성에 따라 달라집니다.

### PID 모드
<a name="task_definition_pidmode-managed-instances"></a>

`pidMode`  
유형: 문자열  
필수 여부: 아니요  
해당 태스크의 컨테이너에 사용할 프로세스 네임스페이스입니다. 유효한 값은 `host` 또는 `task`입니다. `host`를 지정하면 동일한 컨테이너 인스턴스에서 `host` PID 모드를 지정한 태스크 내 모든 컨테이너가 동일한 프로세스 네임스페이스를 호스트 Amazon EC2 인스턴스와 공유합니다. `task`를 지정하면 지정된 태스크 내 모든 컨테이너가 동일한 프로세스 네임스페이스를 공유합니다. 값을 지정하지 않을 경우, 기본값은 프라이빗 네임스페이스입니다.  
`host` PID 모드를 사용하는 경우, 원치 않는 프로세스 네임스페이스 노출이 발생할 위험이 커집니다.

### 프록시 구성
<a name="proxyConfiguration-managed-instances"></a>

`proxyConfiguration`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html) 객체  
필수 여부: 아니요  
App Mesh 프록시에 대한 구성 세부 정보입니다.

### Tags
<a name="tags-managed-instances"></a>

태스크 정의를 분류하고 구성하는 데 도움이 되도록 태스크 정의에 적용하는 메타데이터. 각 태그는 키와 값(선택사항)으로 구성됩니다. 두 가지를 모두 정의합니다.

태그에 적용되는 기본 제한은 다음과 같습니다.
+ 리소스 당 최대 태그 수 - 50개
+ 각 리소스에 대해 각 태그 키는 고유하며 하나의 값만 가질 수 있습니다.
+ 최대 키 길이 - UTF-8의 유니코드 문자 128자
+ 최대 값 길이 - UTF-8의 유니코드 문자 256자
+ 태깅 스키마를 여러 서비스와 리소스에서 사용하는 경우 다른 서비스 또한 허용되는 문자에 대한 제한이 있을 수 있음을 유의합니다. 일반적으로 허용되는 문자는 UTF-8로 표현할 수 있는 문자, 숫자 및 공백과 특수 문자 \$1 - = . \$1 : / @.
+ 태그 키와 값은 대/소문자를 구분합니다.
+ AWS 사용을 위해 예약된 키 또는 값에는 `aws:`, `AWS:` 또는 이러한 접두사의 어떤 대문자 또는 소문자 조합도 사용하지 않습니다. 이 접두사가 지정된 태그 키나 값은 편집하거나 삭제할 수 없습니다. 이 접두사가 지정된 태그는 리소스당 태그 수 제한에 포함되지 않습니다.

`key`  
유형: 문자열  
필수 여부: 아니요  
하나의 태그를 구성하는 키-값 쌍의 일부분입니다. 키는 더 구체적인 태그 값에 대해 범주와 같은 역할을 하는 일반적인 레이블입니다.

`value`  
유형: 문자열  
필수 여부: 아니요  
하나의 태그를 구성하는 키-값 쌍의 선택적 부분입니다. 하나의 값은 태그 범주(키) 내에서 서술자 역할을 수행합니다.

### Elastic Inference 액셀러레이터(폐기됨)
<a name="elastic-Inference-accelerator-managed-instances"></a>

**참고**  
Amazon Elastic Inference(EI)는 더 이상 고객에게 제공되지 않습니다.

`inferenceAccelerator`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: [InferenceAccelerator](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html) 객체  
필수 여부: 아니요  
작업의 컨테이너에서 사용할 Elastic Inference 액셀러레이터입니다.

### 배치 제약 조건
<a name="constraints-managed-instances"></a>

`placementConstraints`  
유형: [TaskDefinitionPlacementConstraint](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinitionPlacementConstraint.html) 객체 배열  
필수 여부: 아니요  
태스크에 사용할 배치 제약 객체의 배열입니다. 작업당 최대 10개의 제약을 지정할 수 있습니다(이 제한에는 작업 정의 내 제약과 런타임 시 지정되는 제약이 포함됨).  
Amazon ECS는 Amazon ECS 관리형 인스턴스에서 실행되는 태스크에 대해 `distinctInstace` 및 `memberOf` 배치 제약 조건을 지원합니다. `memberOf` 배치 제약 조건을 사용하는 태스크에 대해 다음 속성이 지원됩니다.  
+ `ecs.subnet-id`
+ `ecs.availability-zone`
+ `ecs.cpu-architecture`
+ `ecs.instance-type`
배치 제약 조건에 대한 자세한 내용은 [Amazon ECS가 작업에 사용하는 컨테이너 인스턴스 정의](task-placement-constraints.md) 섹션을 참조하세요.

### 볼륨
<a name="volumes-managed-instances"></a>

태스크 정의를 등록할 때 선택적으로 태스크에 대한 볼륨 목록을 지정할 수 있습니다. 그러면 태스크에서 데이터 볼륨을 사용할 수 있습니다.

볼륨 유형 및 기타 파라미터에 대한 자세한 내용은 [Amazon ECS 작업에 대한 스토리지 옵션](using_data_volumes.md) 섹션을 참조하세요.

`name`  
유형: 문자열  
필수 항목 여부: 예  
볼륨의 이름입니다. 최대 255자의 문자(대문자 및 소문자), 숫자, 하이픈을 사용할 수 있습니다. 이 이름은 컨테이너 정의 `mountPoints`의 `sourceVolume` 파라미터에서 참조됩니다.

`host`  
유형: [HostVolumeProperties](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HostVolumeProperties.html) 객체  
필수 여부: 아니요  
이 파라미터는 바인드 탑재 호스트 볼륨을 사용할 때 지정됩니다. `host` 파라미터의 내용에 따라 바인드 마운트 호스트 볼륨이 호스트 컨테이너 인스턴스에서 유지되는지 여부와 저장되는 위치가 결정됩니다. `host` 파라미터가 비어 있으면 시스템에서 데이터 볼륨의 호스트 경로를 할당합니다. 그러나 연결된 컨테이너의 실행이 중지된 후에는 데이터 유지가 보장되지 않습니다.    
`sourcePath`  
유형: 문자열  
필수 여부: 아니요  
`host` 파라미터를 사용하는 경우 컨테이너에 제공될 호스트 인스턴스의 경로를 지정하기 위해 `sourcePath`를 설정하세요. 이 파라미터가 비어 있으면 시스템이 호스트 경로를 자동으로 할당합니다. `host` 파라미터에 `sourcePath` 파일 위치가 들어 있으면, 데이터 볼륨은 수동으로 삭제할 때까지 호스트 인스턴스 상에 지정된 위치를 유지합니다. `sourcePath` 값이 호스트 인스턴스에 없을 경우 시스템이 해당 경로를 생성합니다. 해당 위치가 있을 경우 소스 경로 폴더의 콘텐츠를 내보냅니다.  
Amazon ECS 관리형 인스턴스에서는 호스트 파일 시스템의 일부가 읽기 전용입니다. `sourcePath`는 `/var` 또는 `/tmp`와 같은 쓰기 가능한 디렉터리를 가리켜야 합니다. 자세한 내용은 [Amazon ECS에서 바인드 탑재 사용](bind-mounts.md) 섹션을 참조하세요.

`dockerVolumeConfiguration`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html) 객체  
필수 여부: 아니요  
이 파라미터는 Docker 볼륨을 사용할 때 지정됩니다.

`efsVolumeConfiguration`  
유형: [EFSVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html) 객체  
필수 여부: 아니요  
이 파라미터는 태스크 스토리지를 위해 Amazon EFS 파일 시스템을 사용할 때 지정됩니다.

`fsxWindowsFileServerVolumeConfiguration`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html) 객체  
필수 여부: 아니요  
이 파라미터는 태스크 스토리지를 위해 Amazon FSx for Windows File Server 파일 시스템을 사용할 때 지정됩니다.

`configuredAtLaunch`  
유형: 부울  
필수 여부: 아니요  
시작 시 볼륨을 구성해야 하는지를 나타냅니다. 이는 독립 실행형 태스크 또는 서비스의 일부로 생성된 태스크에 대한 Amazon EBS 볼륨을 생성하는 데 사용됩니다. 각 태스크 정의 개정의 경우 볼륨 구성에서 시작 시 하나의 볼륨만 구성될 수 있습니다.

## 컨테이너 정의
<a name="container_definitions-managed-instances"></a>

작업 정의를 등록할 때 컨테이너 인스턴스의 Docker 대몬(daemon)으로 전달되는 컨테이너 정의의 목록을 지정해야 합니다. 컨테이너 정의에서 다음 파라미터가 허용됩니다.

**Topics**
+ [이름](#container_definition_name-managed-instances)
+ [이미지](#container_definition_image-managed-instances)
+ [Memory](#container_definition_memory-managed-instances)
+ [CPU](#container_definition_cpu-managed-instances)
+ [포트 매핑](#container_definition_portmappings-managed-instances)
+ [프라이빗 리포지토리 보안 인증](#container_definition_repositoryCredentials-managed-instances)
+ [Essential](#container_definition_essential-managed-instances)
+ [진입점](#container_definition_entrypoint-managed-instances)
+ [Command](#container_definition_command-managed-instances)
+ [작업 디렉터리](#container_definition_workingdirectory-managed-instances)
+ [고급 컨테이너 정의 파라미터](#advanced_container_definition_params-managed-instances)
+ [Linux 파라미터](#container_definition_linuxparameters-managed-instances)

### 이름
<a name="container_definition_name-managed-instances"></a>

`name`  
유형: 문자열  
필수 항목 여부: 예  
컨테이너의 이름. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다. 여러 컨테이너를 한 태스크 정의에 연결하는 경우, 한 컨테이너의 `name`을 다른 컨테이너의 `links`에 입력할 수 있습니다. 이는 컨테이너를 연결하기 위한 것입니다.

### 이미지
<a name="container_definition_image-managed-instances"></a>

`image`  
유형: 문자열  
필수 항목 여부: 예  
컨테이너를 시작하는 데 사용되는 이미지입니다. 이 문자열은 Docker 대몬(daemon)으로 직접 전달됩니다. 기본적으로 Docker Hub 레지스트리 내 이미지는 사용 가능합니다. `repository-url/image:tag` 또는 `repository-url/image@digest`를 사용하여 다른 리포지토리를 지정할 수도 있습니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈, 밑줄, 콜론, 마침표, 슬래시 및 부호가 허용됩니다. 이 파라미터는 Docker 컨테이너 생성 명령에 있는 `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 공식 리포지토리 안의 이미지는 단일 이름을 사용합니다(예: `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) 섹션을 참조하세요.

### Memory
<a name="container_definition_memory-managed-instances"></a>

`memory`  
유형: 정수  
필수 여부: 아니요  
컨테이너에 표시할 메모리의 양(MiB)입니다. 컨테이너가 여기서 지정된 메모리를 초과하려 하면 해당 컨테이너가 중지됩니다. 태스크 내 모든 컨테이너에 대해 예약된 총 메모리 양은 태스크 `memory` 값(지정된 경우)보다 작아야 합니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Memory` 및 docker run에 대한 `--memory` 옵션에 매핑됩니다.  
Docker 20.10.0 이상의 대몬(daemon)은 컨테이너용으로 최소 6MiB의 메모리를 남겨둡니다. 따라서 컨테이너에 6MiB 미만의 메모리를 지정하지 마세요.  
Docker 19.03.13-ce 이하의 대몬(daemon)은 컨테이너용으로 최소 4MiB의 메모리를 남겨둡니다. 따라서 컨테이너에 4MiB 미만의 메모리를 지정하지 마세요.  
특정 인스턴스 유형에 대해 태스크에 가능한 한 많은 메모리를 제공하여 리소스 사용률을 최대화하려는 경우 [Amazon ECS Linux 컨테이너 인스턴스 메모리 예약](memory-management.md) 섹션을 참조하세요.

`memoryReservation`  
유형: 정수  
필수 여부: 아니요  
컨테이너용으로 예약할 메모리의 소프트 제한(MiB)입니다. 시스템 메모리가 경합하는 경우 Docker는 컨테이너 메모리를 이 소프트 제한으로 유지하려고 합니다. 하지만 필요한 경우 컨테이너에서 더 많은 메모리를 사용할 수 있습니다. 컨테이너는 `memory` 파라미터에 지정된 하드 한도까지(해당하는 경우) 또는 컨테이너 인스턴스의 모든 가용 메모리(둘 중 먼저 발생하는 것)를 사용할 수 있습니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `MemoryReservation` 및 docker run에 대한 `--memory-reservation` 옵션에 매핑됩니다.  
태스크 레벨 메모리 값이 지정되지 않은 경우 컨테이너 정의의 `memory` 또는 `memoryReservation`에 대해 하나 또는 둘 다에 0이 아닌 정수를 지정해야 합니다. 둘 모두 지정하는 경우 `memory`가 `memoryReservation`보다 커야 합니다. `memoryReservation`을 지정하는 경우 컨테이너가 배치된 컨테이너 인스턴스의 가용 메모리 리소스에서 해당 값이 차감됩니다. 그렇지 않으면 `memory` 값이 사용됩니다.  
예를 들어 컨테이너가 통상적으로 128MiB의 메모리를 사용하지만 경우에 따라 잠깐 동안 사용량이 256MiB까지 급증한다고 가정합니다. 이 경우 `memoryReservation`을 128MiB로 설정하고 `memory` 하드 제한을 300MiB로 설정할 수 있습니다. 이 구성은 컨테이너가 컨테이너 인스턴스의 잔여 리소스 중 128MiB의 메모리만 예약하도록 허용합니다. 동시에, 이 구성을 사용하여 필요할 때 컨테이너가 더 많은 메모리 리소스를 사용하도록 허용할 수도 있습니다.  
Docker 20.10.0 이상의 대몬(daemon)은 컨테이너용으로 최소 6MiB의 메모리를 남겨둡니다. 따라서 컨테이너에 6MiB 미만의 메모리를 지정하지 마세요.  
Docker 19.03.13-ce 이하의 대몬(daemon)은 컨테이너용으로 최소 4MiB의 메모리를 남겨둡니다. 따라서 컨테이너에 4MiB 미만의 메모리를 지정하지 마세요.  
특정 인스턴스 유형에 대해 태스크에 가능한 한 많은 메모리를 제공하여 리소스 사용률을 최대화하려는 경우 [Amazon ECS Linux 컨테이너 인스턴스 메모리 예약](memory-management.md) 섹션을 참조하세요.

### CPU
<a name="container_definition_cpu-managed-instances"></a>

`cpu`  
유형: 정수  
필수 여부: 아니요  
컨테이너용으로 예약된 `cpu` 유닛의 수입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `CpuShares` 및 docker run에 대한 `--cpu-shares` 옵션에 매핑됩니다.  
EC2 용량 공급자를 사용하는 태스크의 경우 이 필드는 선택 사항이며, 한 가지 요구 사항은 태스크 내 모든 컨테이너에 예약된 CPU 총량이 태스크 레벨의 `cpu` 값보다 작아야 합니다.  
[Amazon EC2 인스턴스](https://aws.amazon.com/ec2/instance-types/) 세부 정보 페이지에서 해당 인스턴스 유형에 대해 나열된 vCPU에 1,024를 곱해 EC2 인스턴스 유형당 사용 가능한 CPU 단위 수를 계산할 수 있습니다.
Linux 컨테이너는 할당된 양과 동일한 비율로, 컨테이너 인스턴스의 다른 컨테이너와 할당되지 않은 CPU 단위를 공유합니다. 예를 들어, 컨테이너에 512개 CPU 단위가 지정된 상태로 싱글 코어 인스턴스 유형에서 단일 컨테이너 태스크를 실행하고 이 태스크가 컨테이너 인스턴스에서 실행되는 유일한 태스크일 경우 해당 컨테이너는 언제라도 1,024개 CPU 단위 전부를 사용할 수 있습니다. 그러나 해당 컨테이너 인스턴스에서 동일한 태스크의 다른 사본을 시작한 경우 각 태스크에 필요 시 최소 512개의 CPU 단위가 보증됩니다. 또한 다른 컨테이너가 사용하지 않을 경우 모든 컨테이너의 CPU 사용량이 높아질 수 있습니다. 두 태스크가 항상 100% 활성 상태인 경우 CPU 단위는 512개로 제한됩니다.  
Linux 컨테이너 인스턴스에서, 컨테이너 인스턴스의 Docker 대몬은 CPU 값을 사용하여 실행 컨테이너의 CPU 공유 비율을 계산합니다. 자세한 정보는 Docker 설명서의 [CPU 공유 제약](https://docs.docker.com/engine/reference/run/#cpu-share-constraint) 섹션을 참조하세요. Linux 커널이 허용하는 최소 유효 CPU 공유 값은 2입니다. 하지만 CPU 파라미터는 필수 항목이 아니며 컨테이너 정의에서 2 미만의 CPU 값을 사용할 수 있습니다. CPU 값이 2 미만일 경우(null 포함)의 동작은 Amazon ECS 컨테이너 에이전트 버전에 따라 달라집니다.  
+ **에이전트 버전 1.1.0 이하:** null 및 0의 CPU 값이 Docker에 0으로 전달되고, Docker는 이를 1,024개 CPU 공유로 변환합니다. 1의 CPU 값이 Docker에 1로 전달되고, Linux 커널이 이를 2개 CPU 공유로 변환합니다.
+ **에이전트 버전 1.2.0 이상:** Null, 0, CPU 값 1은 Docker에 2로 전달됩니다.
Windows 컨테이너 인스턴스에서 CPU 한도는 절대 한도(할당량)로 적용됩니다. Windows 컨테이너는 태스크 정의에 기술된 해당 CPU 용량만 액세스할 수 있습니다. Null 또는 0 CPU 값은 Docker에 `0`으로 전달되며, Windows는 이를 한 CPU의 1%로 해석합니다.

### 포트 매핑
<a name="container_definition_portmappings-managed-instances"></a>

`portMappings`  
유형: 객체 배열  
필수 여부: 아니요  
포트 매핑은 컨테이너의 네트워크 포트를 외부에 노출시켜 클라이언트가 애플리케이션에 액세스할 수 있도록 합니다. 이 파라미터는 동일한 태스크 내에서 컨테이너 간 통신에도 사용됩니다.  
`awsvpc` 네트워크 모드를 사용하는 태스크 정의의 경우 `containerPort`만 지정합니다. `hostPort`는 항상 무시되며 컨테이너 포트는 호스트에서 임의의 높은 번호의 포트에 자동으로 매핑됩니다.  
이 파라미터의 필드 대부분(`containerPort`, `hostPort`, `protocol` 포함)은 Docker 컨테이너 생성 명령에 있는 `PortBindings`와 docker run에 대한 `--publish` 옵션에 매핑됩니다. 태스크 정의의 네트워크 모드가 `host`로 설정되어 있으면 호스트 포트가 정의되지 않은 상태이거나 호스트 포트가 포트 매핑의 컨테이너 포트와 일치해야 합니다.  
태스크가 `RUNNING` 상태에 도달한 후에는 다음 위치에서 수동 및 자동 호스트/컨테이너 포트 할당을 확인할 수 있습니다.  
+ 콘솔: 선택한 태스크에 대한 컨테이너 설명의 **네트워크 바인딩** 섹션.
+ AWS CLI: **describe-tasks** 명령 출력의 `networkBindings` 섹션.
+ 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`를 사용하여 노출된 포트를 지정합니다.  
`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` 네트워크 모드를 사용해야 합니다.
+ 컨테이너 인스턴스의 컨테이너 에이전트 버전은 1.67.0 이상이어야 하고 `ecs-init` 패키지의 버전은 1.67.0-1 이상이어야 합니다.
+ 컨테이너당 최대 100개의 포트 범위를 지정할 수 있습니다.
+ `hostPortRange`는 지정하지 않습니다. `hostPortRange`의 값은 다음과 같이 설정됩니다.
  + `awsvpc` 네트워크 모드를 사용하는 작업에 있는 컨테이너의 경우 `hostPort`는 `containerPort`와 동일한 값으로 설정됩니다. 이는 정적 매핑 전략입니다.
+ `containerPortRange`의 유효한 값은 1\$165,535입니다.
+ 포트는 컨테이너당 하나의 포트 매핑에만 포함될 수 있습니다.
+ 중첩되는 포트 범위는 지정할 수 없습니다.
+ 범위의 첫 번째 포트는 범위의 마지막 포트보다 작아야 합니다.
+ Docker에서는 포트 수가 많을 때 Docker 대몬(daemon) 구성 파일에서 docker-proxy를 끌 것을 권장합니다.

  자세한 내용은 GitHub의 [Issue \$111185](https://github.com/moby/moby/issues/11185)를 참조하세요.

  Docker 대몬(daemon) 구성 파일에서 docker-proxy를 끄는 방법에 대한 자세한 내용은 *Amazon ECS 개발자 안내서*의 [Docker daemon](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의 필수 필드를 모두 사용합니다.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
유형: 문자열  
필수 여부: 아니요  
포트 매핑에 사용되는 프로토콜입니다. 유효 값은 `tcp` 및 `udp`입니다. 기본값은 `tcp`입니다.  
Service Connect에는 `tcp`만 지원됩니다. 이 필드가 설정되지 않은 경우 `tcp`로 암시됩니다.
호스트 포트를 지정하는 경우 다음 구문을 사용합니다.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
호스트 포트가 자동 할당되도록 하려면 다음 구문을 사용합니다.  

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

### 프라이빗 리포지토리 보안 인증
<a name="container_definition_repositoryCredentials-managed-instances"></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 Management Console을 사용하는 경우 보안 암호의 전체 ARN을 지정해야 합니다.
다음은 필요한 파라미터를 나타낸 태스크 정의의 예제 조각입니다.  

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

### Essential
<a name="container_definition_essential-managed-instances"></a>

`essential`  
유형: 부울  
필수 여부: 아니요  
컨테이너의 `essential` 파라미터가 `true`로 표시된 경우 해당 컨테이너가 어떤 이유로든 실패 또는 중지하는 경우 태스크의 일부인 다른 모든 컨테이너도 중지합니다. 컨테이너의 `essential` 파라미터가 `false`로 표시된 경우에는 해당 컨테이너의 실패가 태스크의 나머지 컨테이너에 영향을 주지 않습니다. 이 파라미터가 생략된 경우 컨테이너가 필수로 간주됩니다.  
모든 태스크에는 하나 이상의 필수 컨테이너가 있어야 합니다. 애플리케이션이 여러 컨테이너로 구성되는 경우 동일한 용도로 사용되는 컨테이너를 구성 요소로 그룹화하고 각 구성 요소를 서로 다른 태스크 정의로 분리합니다. 자세한 내용은 [Amazon ECS에 대한 애플리케이션 설계](application_architecture.md) 섹션을 참조하세요.

### 진입점
<a name="container_definition_entrypoint-managed-instances"></a>

`entryPoint`  
유형: 문자열 배열  
필수 여부: 아니요  
컨테이너로 전달되는 진입점입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Entrypoint` 및 docker run에 대한 `--entrypoint` 옵션에 매핑됩니다.  

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

### Command
<a name="container_definition_command-managed-instances"></a>

`command`  
유형: 문자열 배열  
필수 여부: 아니요  
컨테이너로 전달되는 명령입니다. 이 파라미터는 docker create-container 명령의 `Cmd` 및 docker run에 대한 `COMMAND` 파라미터에 매핑됩니다. 여러 인수가 있는 경우 각 인수는 배열에서 각각 분리된 문자열입니다.  

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

### 작업 디렉터리
<a name="container_definition_workingdirectory-managed-instances"></a>

`workingDirectory`  
유형: 문자열  
필수 여부: 아니요  
컨테이너에서 명령을 실행할 태스크 디렉터리입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `WorkingDir` 및 docker run에 대한 `--workdir` 옵션에 매핑됩니다.

### 고급 컨테이너 정의 파라미터
<a name="advanced_container_definition_params-managed-instances"></a>

다음의 고급 컨테이너 정의 파라미터는 Amazon ECS 컨테이너 인스턴스에서 컨테이너를 시작하는 데 사용된 docker run 명령에 확장된 기능을 제공합니다.

**Topics**
+ [재시작 정책](#container_definition_restart_policy-managed-instances)
+ [상태 확인](#container_definition_healthcheck-managed-instances)
+ [환경](#container_definition_environment-managed-instances)
+ [보안](#container_definition_security-managed-instances)
+ [네트워크 설정](#container_definition_network-managed-instances)
+ [스토리지 및 로깅](#container_definition_storage-managed-instances)
+ [리소스 요구 사항](#container_definition_resourcerequirements-managed-instances)
+ [컨테이너 제한 시간](#container_definition_timeout-managed-instances)
+ [컨테이너 종속성](#container_definition_dependency-managed-instances)
+ [System Controls](#container_definition_systemcontrols-managed-instances)
+ [대화형](#container_definition_interactive-managed-instances)
+ [의사 터미널](#container_definition_pseudoterminal-managed-instances)

#### 재시작 정책
<a name="container_definition_restart_policy-managed-instances"></a>

`restartPolicy`  
컨테이너 재시작 정책 및 관련 구성 파라미터. 컨테이너의 재시작 정책을 설정하면 작업을 교체할 필요 없이 Amazon ECS에서 컨테이너를 다시 시작할 수 있습니다. 자세한 내용은 [컨테이너 재시작 정책이 있는 Amazon ECS 작업의 개별 컨테이너 재시작](container-restart-policy.md) 섹션을 참조하세요.    
`enabled`  
유형: Boolean  
필수 여부: 예  
재시작 정책이 컨테이너에 대해 활성화되는지 여부를 지정합니다.  
`ignoredExitCodes`  
유형: 정수 배열  
필수 여부: 아니요  
Amazon ECS가 재시작을 시도하지 않고 무시하는 종료 코드 목록입니다. 최대 50개의 컨테이너 종료 코드를 지정할 수 있습니다. 기본적으로 Amazon ECS는 종료 코드를 무시하지 않습니다.  
`restartAttemptPeriod`  
유형: 정수  
필수 여부: 아니요  
재시작을 시도하기 전에 컨테이너를 실행해야 하는 시간(초)입니다. 컨테이너는 `restartAttemptPeriod`초 당 한 번만 재시작할 수 있습니다. 이 기간 동안 컨테이너를 실행할 수 없고 일찍 종료되면 다시 시작되지 않습니다. 최소 60초의 `restartAttemptPeriod`와 최대 1,800초의 `restartAttemptPeriod`를 설정할 수 있습니다. 기본적으로 컨테이너는 300초 동안 실행되어야 재시작할 수 있습니다.

#### 상태 확인
<a name="container_definition_healthcheck-managed-instances"></a>

`healthCheck`  
해당 컨테이너에 대한 컨테이너 상태 확인 명령 및 연결된 구성 파라미터. 자세한 내용은 [컨테이너 상태 확인을 사용하여 Amazon ECS 작업 상태 확인](healthcheck.md) 섹션을 참조하세요.    
`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이 아닌 종료 코드는 실패를 나타냅니다.  
`interval`  
각 상태 확인 간의 시간(초). 5초에서 300초 사이를 지정할 수 있습니다. 기본값은 30초입니다.  
`timeout`  
실패로 간주되기 전에 상태 확인이 성공하기까지의 대기 시간(초)입니다. 2초에서 60초 사이를 지정할 수 있습니다. 기본값은 5초입니다.  
`retries`  
컨테이너 상태가 비정상이라고 간주되기 전에 실패한 상태 확인을 재시도하는 횟수입니다. 1에서 10 사이의 재시도 횟수를 지정할 수 있습니다. 기본값은 3회 재시도입니다.  
`startPeriod`  
실패한 상태 확인이 최대 재시도 횟수에 포함되기 전에 컨테이너에 부트스트랩 시간이 제공되는 유예 기간 옵션입니다. 0\$1300초 범위의 값을 지정할 수 있습니다. 기본적으로 `startPeriod`는 비활성화되어 있습니다.  
상태 검사가 `startPeriod` 내에 성공한 경우 컨테이너는 정상으로 간주되고 모든 후속 실패는 최대 재시도 횟수에 포함됩니다.

#### 환경
<a name="container_definition_environment-managed-instances"></a>

`cpu`  
유형: 정수  
필수 여부: 아니요  
Amazon ECS 컨테이너 에이전트가 컨테이너에 대해 예약하는 `cpu` 단위입니다. Linux에서 이 파라미터는 [컨테이너 만들기](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) 섹션의 `CpuShares`에 매핑됩니다.  
이 필드는 Amazon ECS 관리형 인스턴스에서 실행되는 태스크의 경우 선택 사항입니다. 태스크 내 모든 컨테이너에 대해 예약된 총 CPU 양은 태스크 수준 `cpu` 값보다 작아야 합니다.  
Linux 컨테이너는 할당된 양과 동일한 비율로, 컨테이너 인스턴스의 다른 컨테이너와 할당되지 않은 CPU 단위를 공유합니다. 예를 들어 싱글 코어 인스턴스 유형에서 단일 컨테이너 작업을 컨테이너에 512개 CPU 단위를 지정하고 실행한다고 가정해 보겠습니다. 또한 이 작업은 컨테이너 인스턴스에서 실행되는 유일한 작업입니다. 이 예에서 컨테이너는 언제라도 1,024 CPU 단위 전부를 사용할 수 있습니다. 하지만, 해당 컨테이너 인스턴스에서 동일한 태스크의 다른 사본을 시작했다고 가정합니다. 각 작업에는 필요한 경우 최소 512개의 CPU 단위가 보장됩니다. 마찬가지로 다른 컨테이너가 나머지 CPU를 사용하지 않을 경우 각 컨테이너의 CPU 사용량이 높아질 수 있습니다. 하지만 두 작업이 항상 100% 활성 상태인 경우 CPU 단위는 512개로 제한됩니다.  
Linux 컨테이너 인스턴스에서, 컨테이너 인스턴스의 Docker 대몬(daemon)은 CPU 값을 사용하여 실행 컨테이너의 상대적인 CPU 공유 비율을 계산합니다. Linux 커널이 허용하는 최소 유효 CPU 공유 값은 2이고, Linux 커널이 허용하는 최대 유효 CPU 공유 값은 262144입니다. 하지만 CPU 파라미터는 필수 항목이 아니며 컨테이너 정의에서 2 미만이나 262144를 초과하는 CPU 값을 사용할 수 있습니다. CPU 값이 2 미만(null 포함)이거나 262144를 초과하는 경우 동작은 Amazon ECS 컨테이너 에이전트 버전에 따라 달라집니다.  
추가 예제는 [How Amazon ECS manages CPU and memory resources](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/)를 참조하세요.

`gpu`  
유형: [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`  
이 파라미터는 Amazon ECS 관리형 인스턴스에서 호스팅되는 컨테이너에 대해 지원되지 않습니다.
유형: [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html) 객체  
필수 여부: 아니요  
`InferenceAccelerator` 유형의 경우 `value`는 태스크 정의에 지정된 `InferenceAccelerator`의 `deviceName`과 일치합니다. 자세한 내용은 [Elastic Inference 액셀러레이터 이름(폐기됨)](task_definition_parameters.md#elastic-Inference-accelerator) 섹션을 참조하세요.

`essential`  
유형: 부울  
필수 여부: 아니요  
컨테이너의 `essential` 파라미터가 `true`로 표시되어 있고 해당 컨테이너가 어떤 이유로든 실패 또는 중지하는 경우를 가정해 보겠습니다. 이 경우 작업에 포함된 다른 모든 컨테이너도 중지합니다. 컨테이너의 `essential` 파라미터가 `false`로 표시된 경우에는 해당 컨테이너의 실패가 태스크의 나머지 컨테이너에 영향을 주지 않습니다. 이 파라미터가 생략된 경우 컨테이너가 필수로 간주됩니다.  
모든 태스크에는 하나 이상의 필수 컨테이너가 있어야 합니다. 여러 컨테이너로 구성된 애플리케이션이 있다고 가정해 보겠습니다. 이 경우, 공통 용도로 사용되는 컨테이너를 구성 요소로 그룹화하고, 다른 구성 요소를 여러 작업 정의로 분리합니다. 자세한 내용은 [Amazon ECS에 대한 애플리케이션 설계](application_architecture.md) 섹션을 참조하세요.  

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

`entryPoint`  
초기 버전의 Amazon ECS 컨테이너 에이전트는 `entryPoint` 파라미터를 적절히 처리하지 못합니다. `entryPoint`를 사용하는 데 문제가 있을 경우 컨테이너 에이전트를 업데이트하거나 명령 및 인수를 `command` 배열 항목으로 입력하세요.
유형: 문자열 배열  
필수 여부: 아니요  
컨테이너로 전달되는 진입점입니다.  

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

`command`  
유형: 문자열 배열  
필수 여부: 아니요  
컨테이너로 전달되는 명령입니다. 이 파라미터는 컨테이너 생성 명령의 `Cmd` 및 docker run에 대한 `COMMAND` 파라미터에 매핑됩니다. 여러 인수가 있는 경우 각 인수는 배열에서 각각 분리된 문자열이어야 합니다.  

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

`workingDirectory`  
유형: 문자열  
필수 여부: 아니요  
컨테이너에서 명령을 실행할 태스크 디렉터리입니다. 이 파라미터는 [Docker 원격 API](https://docs.docker.com/reference/api/engine/version/v1.38/)의 [컨테이너 생성](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) 섹션에 있는 `WorkingDir`와 [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/)에 대한 `--workdir` 옵션에 매핑됩니다.  

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

`environmentFiles`  
유형: 객체 배열  
필수 여부: 아니요  
컨테이너로 전달할 환경 변수를 포함하는 파일 목록입니다. 이 파라미터는 docker run 명령에 대한 `--env-file` 옵션에 매핑됩니다.  
최대 10개의 환경 파일을 지정할 수 있습니다. 파일의 확장명은 `.env`여야 합니다. 환경 파일의 각 줄에는 `VARIABLE=VALUE` 형식의 환경 변수를 포함합니다. `#`으로 시작하는 줄은 주석으로 처리되며 무시됩니다.  
컨테이너 정의에 지정된 개별 환경 변수가 있는 경우 환경 파일 내에 포함된 변수보다 우선합니다. 동일한 변수를 포함하는 여러 환경 파일이 지정된 경우 위에서 아래로 처리됩니다. 고유한 변수 이름을 사용하는 것이 좋습니다. 자세한 정보는 [개별 환경 변수를 Amazon ECS 컨테이너로 전달](taskdef-envfiles.md)을 참조하세요.    
`value`  
유형: 문자열  
필수 항목 여부: 예  
환경 변수 파일을 포함하는 Amazon S3 객체의 Amazon 리소스 이름(ARN)입니다.  
`type`  
유형: 문자열  
필수 항목 여부: 예  
사용할 파일 유형입니다. 지원되는 유일한 값은 `s3`입니다.

`environment`  
유형: 객체 배열  
필수 여부: 아니요  
컨테이너로 전달할 환경 변수입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Env` 및 docker run 명령에 대한 `--env` 옵션에 매핑됩니다.  
자격 증명 데이터와 같은 민감한 정보에 대해서는 일반 텍스트 환경 변수를 사용하지 않는 것이 좋습니다.  
`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 암호의 전체 ARN이거나 혹은 AWS Systems Manager 파라미터 스토어 내 파라미터의 전체 Amazon 리소스 이름(ARN)입니다.  
Systems Manager Parameter Store 파라미터 또는 Secrets Manager 파라미터가 현재 실행 중인 작업과 동일한 AWS 리전에 있을 경우 해당 암호의 전체 ARN 또는 이름을 사용할 수 있습니다. 파라미터가 다른 리전에 있다면 전체 ARN을 지정해야 합니다.

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

#### 보안
<a name="container_definition_security-managed-instances"></a>

`privileged`  
유형: 부울  
필수 여부: 아니요  
이 파라미터가 `true`인 경우 컨테이너에는 호스트 컨테이너 인스턴스에 대한 승격된 권한을 부여받습니다(`root` 사용자와 비슷함). 이 파라미터는 Docker 컨테이너 생성 명령의 `Privileged` 및 docker run에 대한 `--privileged` 옵션에 매핑됩니다.

`user`  
유형: 문자열  
필수 여부: 아니요  
컨테이너 내부에서 사용할 사용자입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `User` 및 docker run에 대한 `--user` 옵션에 매핑됩니다.  
`host` 네트워크 모드를 사용하여 태스크를 실행할 때는 루트 사용자(UID 0)를 사용하여 컨테이너를 실행하지 마세요. 보안 강화를 위해 루트가 아닌 사용자를 사용하는 것이 좋습니다.
다음 형식을 사용하여 `user`를 지정할 수 있습니다. UID 또는 GID를 지정하는 경우 이를 양의 정수로 지정해야 합니다.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`

`readonlyRootFilesystem`  
유형: 부울  
필수 여부: 아니요  
이 파라미터가 `true`인 경우 컨테이너에는 루트 파일 시스템에 대한 읽기 전용 액세스가 부여됩니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `ReadonlyRootfs` 및 docker run에 대한 `--read-only` 옵션에 매핑됩니다.

`dockerSecurityOptions`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 문자열 배열  
필수 여부: 아니요  
SELinux 및 AppArmor 다중 수준 보안 시스템에 사용자 지정 레이블을 제공할 문자열 목록입니다. 이 필드는 Fargate를 사용하는 태스크의 컨테이너에서 유효하지 않습니다.

`ulimits`  
유형: [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html) 객체 배열  
필수 여부: 아니요  
컨테이너에 설정할 `ulimits`의 목록입니다. 태스크 정의에 ulimit 값이 지정된 경우 Docker에서 설정한 기본값을 재정의합니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Ulimits` 및 docker run에 대한 `--ulimit` 옵션에 매핑됩니다. 유효한 이름 지정 값이 [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html) 데이터 형식에 표시됩니다.  
Fargate에 호스팅되는 Amazon ECS 태스크는 Fargate가 재정의하는 `nofile` 리소스 제한 파라미터를 제외하고 운영 체제에서 설정한 기본 리소스 제한 값을 사용합니다. `nofile` 리소스 제한은 컨테이너가 사용할 수 있는 열린 파일 수에 대한 제한을 설정합니다. 기본 `nofile` 소프트 제한은 `1024`이고 기본 하드 제한은 `65535`입니다.  
이 파라미터를 사용하려면 컨테이너 인스턴스에서 Docker 원격 API 버전 1.18 이상을 사용해야 합니다. 컨테이너 인스턴스의 도커 원격 API 버전을 확인하려면, 컨테이너 인스턴스에 로그인한 후 `sudo docker version --format '{{.Server.APIVersion}}'` 명령을 실행합니다.

`dockerLabels`  
유형: 문자열 대 문자열 맵  
필수 여부: 아니요  
컨테이너에 추가할 레이블의 키/값 맵입니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Labels` 및 docker run에 대한 `--label` 옵션에 매핑됩니다.  
이 파라미터를 사용하려면 컨테이너 인스턴스에서 Docker 원격 API 버전 1.18 이상을 사용해야 합니다.  

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

#### 네트워크 설정
<a name="container_definition_network-managed-instances"></a>

`disableNetworking`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 부울  
필수 여부: 아니요  
이 파라미터가 true일 경우 컨테이너 내에서 네트워킹이 해제됩니다.  
기본값은 `false`입니다.  

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

`links`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 문자열 배열  
필수 여부: 아니요  
`link` 파라미터는 포트 매핑 필요 없이 컨테이너가 서로 통신하도록 허용합니다. 이 파라미터는 작업 정의의 네트워크 모드가 `bridge`로 설정된 경우에만 지원됩니다. `name:internalName` 구성은 Docker 링크의 `name:alias`와 유사합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.  
동일한 컨테이너 인스턴스에 배치된 컨테이너는 링크 또는 호스트 포트 매핑 없이도 서로 통신할 수 있습니다. 컨테이너 인스턴스에서 네트워크 격리는 보안 그룹 및 VPC 설정에 의해 제어됩니다.

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

`hostname`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 문자열  
필수 여부: 아니요  
컨테이너에 사용할 호스트 이름입니다. 이 파라미터는 Docker 컨테이너 생성의 `Hostname` 및 docker run에 대한 `--hostname` 옵션에 매핑됩니다.  

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

`dnsServers`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 문자열 배열  
필수 여부: 아니요  
컨테이너에 제공되는 DNS 서버의 목록입니다.  

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

`extraHosts`  
이 파라미터는 `awsvpc` 네트워크 모드를 사용하는 작업에 대해서는 지원되지 않습니다.
유형: 객체 배열  
필수 여부: 아니요  
컨테이너의 `/etc/hosts` 파일에 추가할 호스트 이름 및 IP 주소 매핑의 목록입니다.  
이 파라미터는 Docker 컨테이너 생성 명령의 `ExtraHosts` 및 docker run에 대한 `--add-host` 옵션에 매핑됩니다.  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
유형: 문자열  
필수 항목 여부: 예(`extraHosts` 사용 시)  
`/etc/hosts` 항목에 사용할 호스트 이름입니다.  
`ipAddress`  
유형: 문자열  
필수 항목 여부: 예(`extraHosts` 사용 시)  
`/etc/hosts` 항목에 사용할 IP 주소입니다.

#### 스토리지 및 로깅
<a name="container_definition_storage-managed-instances"></a>

`readonlyRootFilesystem`  
유형: 부울  
필수 여부: 아니요  
이 파라미터가 true일 경우 컨테이너에는 루트 파일 시스템에 대한 읽기 전용 액세스가 부여됩니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `ReadonlyRootfs` 및 docker run에 대한 `--read-only` 옵션에 매핑됩니다.  
기본값은 `false`입니다.  

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

`mountPoints`  
유형: 객체 배열  
필수 여부: 아니요  
컨테이너에서 데이터 볼륨의 탑재 지점입니다. 이 파라미터는 create-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 컨테이너 생성 명령의 `VolumesFrom` 및 docker run에 대한 `--volumes-from` 옵션에 매핑됩니다.    
`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 컨테이너 생성 명령의 `LogConfig` 및 docker run에 대한 `--log-driver` 옵션에 매핑됩니다. 기본적으로 컨테이너는 Docker 대몬(daemon)이 사용하는 것과 동일한 로깅 드라이버를 사용합니다. 하지만 컨테이너는 이 파라미터를 사용하여 컨테이너 정의에 로그 드라이버를 지정함으로써 Docker 대몬(daemon)과 다른 로깅 드라이버를 사용할 수 있습니다. 컨테이너에 다른 로깅 드라이버를 사용하려면 컨테이너 인스턴스에서(또는 원격 로깅 옵션의 다른 로그 서버에서) 로그 시스템이 올바르게 구성되어야 합니다.  
컨테이너에 대한 로그 구성을 지정할 때 다음 사항에 유의해야 합니다.  
+ Amazon ECS는 Docker 대몬(daemon)에 사용 가능한 로깅 드라이버의 하위 집합을 지원합니다.
+ 이 파라미터를 사용하려면 컨테이너 인스턴스에서 Docker Remote API 버전 1.18 이상을 사용해야 합니다.

```
"logConfiguration": {
      "logDriver": "awslogs",""splunk", "awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
타입: 문자열  
유효한 값: `"awslogs","splunk","awsfirelens"`  
필수 항목 여부: `logConfiguration` 사용 시, 예  
컨테이너에 사용할 로드 드라이버입니다. 앞에 나열된 유효한 값은 Amazon ECS 컨테이너 에이전트가 기본적으로 통신할 수 있는 로그 드라이버입니다.  
지원되는 로그 드라이버는 `awslogs`, `splunk` 및 `awsfirelens`입니다.  
태스크 정의에서 `awslogs` 로그 드라이버를 사용하여 컨테이너 로그를 CloudWatch Logs로 보내는 방법에 대한 자세한 정보는 [Amazon ECS 로그를 CloudWatch로 전송](using_awslogs.md) 섹션을 참조하세요.  
`awsfirelens` 로그 드라이버에 대한 자세한 내용은 [Amazon ECS 로그를 AWS 서비스 또는 AWS Partner로 전송](using_firelens.md) 섹션을 참조하세요.  
목록에 포함되지 않은 사용자 지정 드라이버가 있는 경우, [GitHub에서 사용 가능한](https://github.com/aws/amazon-ecs-agent) Amazon ECS 컨테이너 에이전트 프로젝트를 포킹하여 해당 드라이버와 함께 작동하도록 사용자 지정할 수 있습니다. 포함하고 싶은 변경에 대해서는 풀 요청을 제출할 것을 권장합니다. 단, 현재 이 소프트웨어의 수정된 사본 실행은 지원되지 않습니다.
이 파라미터를 사용하려면 컨테이너 인스턴스에서 Docker 원격 API 버전 1.18 이상을 사용해야 합니다.  
`options`  
유형: 문자열 대 문자열 맵  
필수 여부: 아니요  
로그 드라이버로 보낼 구성 옵션의 키/값 맵입니다.  
지정할 수 있는 옵션은 로그 드라이버에 따라 달라집니다. 다음은 `awslogs` 라우터를 사용하여 로그를 Amazon CloudWatch로 라우팅할 때 지정할 수 있는 몇 가지 옵션입니다.    
`awslogs-create-group`  
필수 여부: 아니요  
로그 그룹을 자동으로 생성할지를 지정합니다. 이 옵션이 지정되지 않은 경우 기본적으로 `false`로 설정됩니다.  
`awslogs-create-group`을 사용하기 전에 IAM 정책이 `logs:CreateLogGroup` 권한을 포함해야 합니다.  
`awslogs-region`  
필수 여부: 예  
`awslogs` 로그 드라이버가 Docker 로그를 보낼 AWS 리전을 지정합니다. 여러 리전의 클러스터로부터 모든 로그를 CloudWatch Logs 내 단일 리전으로 전송하도록 선택할 수 있습니다. 이는 로그를 모두 한 곳에서 볼 수 있도록 하기 위함입니다. 또는, 리전별로 구분하여 세분화할 수 있습니다. 지정한 로그 그룹이 이 옵션으로 지정한 리전에 위치하는지 확인하세요.  
`awslogs-group`  
필수 여부: 예  
`awslogs` 로그 드라이버가 로그 스트림을 전송할 로그 그룹을 지정해야 합니다.  
`awslogs-stream-prefix`  
필수 여부: 예  
`awslogs-stream-prefix` 옵션을 사용하여 로그 스트림을 지정한 접두사, 컨테이너 이름 및 컨테이너가 속하는 Amazon ECS 태스크의 ID와 연결할 수 있습니다. 이 옵션을 사용하여 접두사를 지정하는 경우 로그 스트림은 다음 형식을 취합니다.  

```
prefix-name/container-name/ecs-task-id
```
이 옵션을 사용하여 접두사를 지정하지 않는 경우 로그 스트림 이름이 컨테이너 인스턴스의 Docker 대몬에 의해 할당된 컨테이너 ID를 따서 지정됩니다. Docker 컨테이너 ID(컨테이너 인스턴스에서만 사용 가능)만으로는 로그를 전송한 컨테이너로 역추적하기 어려우므로 이 옵션에서 접두사를 지정하는 것이 좋습니다.  
Amazon ECS 서비스의 경우 서비스 이름을 접두사로 사용할 수 있습니다. 이렇게 하면 로그 스트림을 컨테이너가 속하는 서비스, 로그를 전송한 컨테이너의 이름, 컨테이너가 속하는 작업의 ID로 추적할 수 있습니다.  
Amazon ECS 콘솔을 사용할 때 로그 창에 로그가 표시되도록 하기 위해서는 해당 로그에 스트림 접두사를 지정해야 합니다.  
`awslogs-datetime-format`  
필수 여부: 아니요  
이 옵션은 Python `strftime` 형식의 여러 줄 시작 패턴을 정의합니다. 로그 메시지는 패턴과 일치하는 하나의 줄과 패턴과 일치하지 않는 나머지 줄들로 이루어져 있습니다. 일치하는 줄은 로그 메시지 간의 구분 기호입니다.  
이 형식을 사용하는 사용 사례의 한 예는 스택 덤프와 같은 출력을 구문 분석하는 것이며, 그렇지 않으면 여러 항목에 기록될 수 있습니다. 올바른 패턴을 통해 단일 항목으로 캡처할 수 있습니다.  
자세한 내용은 [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format)을 참조하세요.  
`awslogs-datetime-format` 및 `awslogs-multiline-pattern` 옵션을 모두 구성할 수는 없습니다.  
여러 줄 로깅은 모든 로그 메시지의 정규식 구문 분석 및 일치 태스크를 수행합니다. 이는 로깅 성능에 부정적인 영향을 줄 수 있습니다.  
`awslogs-multiline-pattern`  
필수 여부: 아니요  
이 옵션은 정규식을 사용하여 여러 줄 시작 패턴을 정의합니다. 로그 메시지는 패턴과 일치하는 하나의 줄과 패턴과 일치하지 않는 나머지 줄들로 이루어져 있습니다. 일치하는 줄은 로그 메시지 간의 구분 기호입니다.  
자세한 정보는 [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`  
이 옵션은 컨테이너에서 `awslogs` 로그 드라이버로 로그 메시지를 전송하는 모드를 정의합니다. 선택한 전송 모드는 컨테이너에서 나오는 로그 흐름이 중단될 때 애플리케이션 가용성에 영향을 줍니다.  
`blocking` 모드를 사용하는 경우 CloudWatch로의 로그 흐름이 중단되면 `stdout` 및 `stderr` 스트림에 쓰기 위한 컨테이너 코드의 호출이 차단됩니다. 결과적으로 애플리케이션의 로깅 스레드가 차단됩니다. 이로 인해 애플리케이션이 응답하지 않고 컨테이너 상태 확인에 실패할 수 있습니다.  
`non-blocking` 모드를 사용하는 경우 컨테이너의 로그는 `max-buffer-size` 옵션으로 구성된 인 메모리 중간 버퍼에 대신 저장됩니다. 이렇게 하면 로그를 CloudWatch로 전송할 수 없을 때 애플리케이션이 응답하지 않게 되는 것을 방지할 수 있습니다. 서비스 가용성을 보장하고 일부 로그 손실이 괜찮다면 이 모드를 사용하는 것이 좋습니다. 자세한 내용은 [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/)를 참조하세요.  
`max-buffer-size`  
필수 여부: 아니요  
기본값: `1m`  
`non-blocking` 모드를 사용하면 `max-buffer-size` 로그 옵션은 중간 메시지 스토리지에 사용되는 버퍼의 크기를 제어합니다. 애플리케이션에 따라 적절한 버퍼 크기를 지정해야 합니다. 버퍼가 가득 차면 로그를 더 이상 저장할 수 없습니다. 저장할 수 없는 로그는 손실됩니다.
`splunk` 로그 라우터를 사용하여 로그를 라우팅하려면 `splunk-token`과 `splunk-url`을 지정해야 합니다.  
`awsfirelens` 로그 라우터를 사용하여 로그 스토리지 및 분석을 위해 AWS Partner Network 또는 AWS 서비스 대상으로 로그를 라우팅하는 경우 `log-driver-buffer-limit` 옵션을 설정하여 메모리에 버퍼링되는 이벤트 수를 제한한 후 로그 라우터 컨테이너로 전송할 수 있습니다. 처리량이 많으면 Docker 내부 버퍼의 메모리가 부족해질 수 있으므로 잠재적인 로그 손실 문제를 해결하는 데 도움이 될 수 있습니다. 자세한 내용은 [높은 처리량을 위한 Amazon ECS 로그 구성](firelens-docker-buffer-limit.md) 섹션을 참조하세요.  
`awsfirelens`를 사용하여 로그를 라우팅할 때 지정할 수 있는 다른 옵션은 대상에 따라 다릅니다. 로그를 Amazon Data Firehose로 내보낼 때 AWS 리전으로 `region`을 지정하고 `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 원격 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`  
유형: 문자열 대 문자열 맵  
필수 여부: 아니요  
로그 라우터를 구성할 때 사용할 옵션의 키/값 맵입니다. 이 필드는 선택 사항이며, 사용자 지정 구성 파일을 지정하거나 태스크, 태스크 정의, 클러스터 및 컨테이너 인스턴스 세부 정보와 같은 추가 메타데이터를 로그 이벤트에 추가하는 데 사용할 수 있습니다. 이 필드를 지정할 경우 사용할 구문은 `"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_resourcerequirements-managed-instances"></a>

`resourceRequirements`  
유형: [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html) 객체 배열  
필수 여부: 아니요  
컨테이너에 할당할 리소스의 유형 및 양입니다. 현재 지원되는 리소스는 GPU뿐입니다.    
`type`  
유형: 문자열  
필수 항목 여부: 예  
컨테이너에 할당할 리소스 유형입니다. 지원되는 값은 `GPU`입니다.  
`value`  
유형: 문자열  
필수 항목 여부: 예  
지정된 리소스 유형의 값입니다.  
`GPU` 유형이 사용되는 경우 이 값은 Amazon ECS 컨테이너 에이전트가 컨테이너에 대해 예약하는 실제 `GPUs` 수입니다. 태스크의 모든 컨테이너에 예약된 GPU 수가 태스크가 실행되는 컨테이너 인스턴스에서 사용할 수 있는 GPU 수를 초과할 수 없습니다.  
Fargate에서 실행되는 태스크에 대해 GPU를 사용할 수 없습니다.

#### 컨테이너 제한 시간
<a name="container_definition_timeout-managed-instances"></a>

`startTimeout`  
유형: 정수  
필수 여부: 아니요  
예제 값: `120`  
컨테이너에 대한 종속성 해결을 포기하기 전에 대기할 시간(초)입니다.  
예를 들어 `containerA`에 대한 태스크 정의에서 `containerB`에 대한 종속성이 `COMPLETE`, `SUCCESS` 또는 `HEALTHY` 상태인 두 개의 컨테이너를 지정합니다. `containerB`에 대해 `startTimeout` 값이 지정되고 그 시간 내에 원하는 상태에 도달하지 않으면 `containerA`는 시작하지 않습니다.  
컨테이너가 종속성 제약을 충족하지 못하거나 제약을 충족하기 전에 시간이 초과되면 Amazon ECS는 종속된 컨테이너를 다음 상태로 진행시키지 못합니다.
최대값은 600초(10분)입니다.

`stopTimeout`  
유형: 정수  
필수 여부: 아니요  
예제 값: `120`  
자체적으로 정상적으로 종료하지 않을 경우 컨테이너를 강제 종료하기까지 대기할 시간(초)입니다.  
파라미터를 지정하지 않으면 기본값인 30초가 사용됩니다. 최대값은 86400초(24시간)입니다.

#### 컨테이너 종속성
<a name="container_definition_dependency-managed-instances"></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` - 이 조건은 다른 컨테이너를 시작하기 전에 종속 컨테이너가 컨테이너 상태 확인을 통과하는지 확인합니다. 이렇게 하려면 태스크 정의에서 종속 컨테이너에 상태 확인이 구성되어 있어야 합니다. 이 조건은 태스크 시작 시에만 확인됩니다.

#### System Controls
<a name="container_definition_systemcontrols-managed-instances"></a>

`systemControls`  
유형: [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html) 객체  
필수 여부: 아니요  
컨테이너에서 설정할 네임스페이스 커널 파라미터의 목록입니다. 이 파라미터는 Docker 컨테이너 생성 명령에 있는 `Sysctls` 및 docker run에 대한 `--sysctl` 옵션에 매핑됩니다. 예를 들어 `net.ipv4.tcp_keepalive_time` 설정을 구성하여 연결을 더 오래 유지할 수 있습니다.  
`awsvpc` 또는 `host` 네트워크 모드도 사용하는 단일 작업에서 여러 컨테이너에 네트워크 관련 `systemControls` 파라미터를 지정하지 않는 것이 좋습니다. 이렇게 하면 다음과 같은 단점이 있습니다.  
+ 컨테이너에 `systemControls`를 설정할 경우 태스크의 모든 컨테이너에 적용됩니다. 단일 작업의 여러 컨테이너에 서로 다른 `systemControls`를 설정할 경우 마지막으로 시작되는 컨테이너에 따라 적용될 `systemControls`가 결정됩니다.
태스크 내 컨테이너에 사용할 IPC 리소스 네임스페이스를 설정하는 경우, 시스템 제어에 다음 사항이 적용됩니다. 자세한 정보는 [IPC 모드](task_definition_parameters.md#task_definition_ipcmode)을 참조하세요.  
+ `host` IPC 모드를 사용하는 태스크의 경우, IPC 네임스페이스 `systemControls`는 지원되지 않습니다.
+ `task` IPC 모드를 사용하는 작업의 경우, IPC 네임스페이스 `systemControls` 값은 작업 내 모든 컨테이너에 적용됩니다.

```
"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`. Fargate에서는 컨테이너 내에 있는 네임스페이스 `Sysctls`만 허용됩니다.  
이러한 값은 모두 Fargate에서 지원됩니다.  
`value`  
유형: 문자열  
필수 여부: 아니요  
`namespace`에 지정된 네임스페이스 커널 파라미터의 값입니다.

#### 대화형
<a name="container_definition_interactive-managed-instances"></a>

`interactive`  
유형: 부울  
필수 여부: 아니요  
이 파라미터가 `true`일 경우 이것을 사용하여 `stdin` 또는 `tty`를 할당해야 하는 컨테이너화된 애플리케이션을 배포할 수 있습니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `OpenStdin` 및 docker run에 대한 `--interactive` 옵션에 매핑됩니다.  
기본값은 `false`입니다.

#### 의사 터미널
<a name="container_definition_pseudoterminal-managed-instances"></a>

`pseudoTerminal`  
유형: 부울  
필수 여부: 아니요  
이 파라미터가 `true`일 경우 TTY가 할당됩니다. 이 파라미터는 Docker 컨테이너 생성 명령의 `Tty` 및 docker run에 대한 `--tty` 옵션에 매핑됩니다.  
기본값은 `false`입니다.

### Linux 파라미터
<a name="container_definition_linuxparameters-managed-instances"></a>

`linuxParameters`  
유형: [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html) 객체  
필수 여부: 아니요  
컨테이너에 적용되는 Linux 수정(예: Linux 커널 기능)입니다.    
`capabilities`  
유형: [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html) 객체  
필수 여부: 아니요  
컨테이너에 대해 Docker에서 제공하는 기본 구성에 추가되거나 삭제되는 Linux 기능.  
`devices`  
유형: [Device](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html) 객체 배열  
필수 여부: 아니요  
컨테이너에 노출될 모든 호스트 디바이스. 이 파라미터는 Docker 컨테이너 생성 명령의 `Devices` 및 docker run에 대한 `--device` 옵션에 매핑됩니다.  
`initProcessEnabled`  
유형: 부울  
필수 여부: 아니요  
신호를 전달하고 프로세스의 결과를 받아들이는 컨테이너 내에서 `init` 프로세스를 실행합니다. 이 파라미터는 docker run에 대한 `--init` 옵션에 매핑됩니다.  
`maxSwap`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 정수  
필수 여부: 아니요  
컨테이너가 사용할 수 있는 총 스왑 메모리 양(MiB) 이 파라미터는 docker run에 대한 `--memory-swap` 옵션으로 변환되며 컨테이너 메모리의 합계에 `maxSwap` 값을 더한 값이 됩니다.  
`swappiness`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 정수  
필수 여부: 아니요  
이를 통해 컨테이너의 메모리 스왑 동작을 조정할 수 있습니다. `0`의 `swappiness` 값은 절대적으로 필요한 경우가 아니면 스왑이 일어나지 않도록 합니다. `100`의 `swappiness` 값은 페이지가 매우 적극적으로 스와핑되도록 합니다. 유효한 값은 `0`과 `100` 사이의 숫자입니다. `swappiness` 파라미터를 지정하지 않으면 `60`의 기본값이 사용됩니다. `maxSwap` 값이 지정되지 않은 경우 이 파라미터는 무시됩니다. 이 파라미터는 docker run에 대한 `--memory-swappiness` 옵션에 매핑됩니다.  
`sharedMemorySize`  
Amazon ECS 관리형 인스턴스에서 호스팅되는 태스크에 대해 이 파라미터가 지원되지 않습니다.
유형: 정수  
필수 여부: 아니요  
`/dev/shm` 볼륨의 크기(MiB)입니다. 이 파라미터는 docker run에 대한 `--shm-size` 옵션에 매핑됩니다.  
`tmpfs`  
유형: [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html) 객체 배열  
필수 여부: 아니요  
컨테이너 경로, 마운트 옵션 및 tmpfs 마운트의 크기(MiB)입니다. 이 파라미터는 docker run에 대한 `--tmpfs` 옵션에 매핑됩니다.