

# Amazon EC2 컨테이너 인스턴스
<a name="ecs-agent-versions"></a>

Amazon ECS 에이전트는 클러스터에 등록된 모든 컨테이너 인스턴스에서 실행되는 프로세스입니다. 컨테이너 인스턴스와 Amazon ECS 간의 통신을 용이하게 합니다.

**참고**  
Linux 컨테이너 인스턴스에서 에이전트 컨테이너는 `/lib`, `/lib64` 및 `/proc`과 같은 최상위 디렉터리를 탑재합니다. 이는 Amazon EBS 볼륨, `awsvpc` 네트워크 모드, Amazon ECS Service Connect 및 Amazon ECS용 FireLens 같은 ECS 기능에 필요합니다.

각 Amazon ECS 컨테이너 에이전트 버전은 서로 다른 기능 세트를 지원하며 이전 버전에 대한 버그 수정을 제공합니다. 기능한 한 최신 버전의 Amazon ECS 컨테이너 에이전트를 사용할 것이 좋습니다. 컨테이너 에이전트를 최신 버전으로 업데이트하려면 [Amazon ECS 컨테이너 에이전트 업데이트](ecs-agent-update.md) 섹션을 참조하세요.

Amazon ECS 컨테이너 에이전트에는 `amazon-ecs-pause` 이미지가 포함되어 있습니다.Amazon ECS는 `awsvpc` 네트워크 모드를 사용하는 작업에 이 이미지를 사용합니다.

각 에이전트 릴리스에 포함된 기능 및 기능 향상을 보려면 [https://github.com/aws/amazon-ecs-agent/releases](https://github.com/aws/amazon-ecs-agent/releases)를 참조하세요.

**중요**  
신뢰할 수 있는 지표를 위한 최소 Docker 버전은 Docker 버전 `v20.10.13` 이상이며, Amazon ECS 최적화 AMI `20220607` 이상 버전에 포함되어 있습니다.  
Amazon ECS 에이전트 버전 `1.20.0` 이상에서는 `18.01.0` 이전 Docker 버전에 대한 지원이 중단되었습니다.

## 수명 주기
<a name="container-lifecycle"></a>

Amazon ECS 컨테이너 에이전트가 Amazon EC2 인스턴스를 클러스터에 등록하면 Amazon EC2 인스턴스는 상태를 `ACTIVE`로, 에이전트 연결 상태를 `TRUE`로 보고합니다. 이 컨테이너 인스턴스는 작업 실행 요청을 수락할 수 있습니다.

`ACTIVE` 컨테이너 인스턴스를 중지(종료가 아님)하면 상태는 계속 이지만 에이전트 연결 상태는 몇 분 안에 `FALSE`로 전환됩니다. 컨테이너 인스턴스에서 실행 중이던 모든 작업이 중지됩니다. 컨테이너 인스턴스를 다시 시작하면 컨테이너 에이전트는 Amazon ECS 서비스에 다시 연결되고 인스턴스에서 다시 태스크를 실행할 수 있습니다.

컨테이너 인스턴스의 상태를 `DRAINING`로 변경하면 컨테이너 인스턴스에서 새 작업이 배치되지 않습니다. 시스템 업데이트를 수행할 수 있도록 컨테이너 인스턴스에서 실행 중인 모든 서비스 태스크는 가능한 경우 제거됩니다. 자세한 정보는 [Amazon ECS 컨테이너 인스턴스 드레이닝](container-instance-draining.md) 섹션을 참조하세요.

컨테이너 인스턴스 등록을 취소하거나 종료하면 해당 컨테이너 인스턴스 상태가 곧바로 `INACTIVE`로 바뀌며, 컨테이너 인스턴스를 나열할 때 해당 컨테이너 인스턴스가 더 이상 보고되지 않습니다. 하지만 종료 후 한 시간 동안은 여전히 컨테이너 인스턴스 설명이 가능합니다. 한 시간이 지나면 더 이상 인스턴스 설명을 사용할 수 없습니다.

인스턴스를 수동으로 드레이닝하거나 Auto Scaling 그룹 수명 주기 후크를 구축하여 인스턴스 상태를 `DRAINING`으로 설정할 수 있습니다. Auto Scaling 수명 주기 후크에 대한 자세한 정보는 [Amazon EC2 Auto Scaling 수명 주기 후크](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)를 참조하세요.

## Docker 지원
<a name="docker-support"></a>

Amazon ECS는 Amazon Linux에 게시된 Docker의 마지막 두 메이저 버전을 지원합니다. 현재 여기에는 Docker 20.10.x 및 Docker 25.x가 포함됩니다.

Amazon ECS에 필요한 최소 Docker 버전은 GitHub의 [Amazon ECS Agent specification file](https://github.com/aws/amazon-ecs-agent/blob/dev/packaging/amazon-linux-ami-integrated/ecs-agent.spec#L53)에서 찾을 수 있습니다.

Amazon ECS 최적화 AMI를 사용하는 경우 Docker는 Amazon ECS 컨테이너 에이전트와 함께 작동하도록 사전 설치 및 구성됩니다. AMI는 Amazon ECS에서 테스트하고 지원하는 Docker 버전을 포함합니다.

**참고**  
Amazon ECS는 여러 Docker 버전을 지원하지만 최상의 호환성과 지원을 위해 Amazon ECS 최적화 AMI와 함께 제공되는 Docker 버전을 사용하는 것이 좋습니다.

## Amazon ECS 최적화 AMI
<a name="ecs-optimized-ami"></a>

Amazon ECS 최적화 AMI에 관한 자세한 내용은 [Amazon ECS 최적화 Linux AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)를 참조하세요.

## 추가 정보
<a name="additional-information"></a>

다음 페이지에서는 변경 사항에 대한 추가 정보를 제공합니다.
+ GitHub의 [Amazon ECS Agent changelog](https://github.com/aws/amazon-ecs-agent/blob/master/CHANGELOG.md)
+ [Amazon Linux 2 릴리스 정보](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
+ Docker 설명서의 [Docker Engine 릴리스 정보](https://docs.docker.com/engine/release-notes/27/)
+ NVIDIA 설명서의 [NVIDIA 드라이버 설명서](https://docs.nvidia.com/datacenter/tesla/index.html)

## Amazon ECS 컨테이너 에이전트 로그 구성 파라미터
<a name="agent-logs"></a>

Amazon ECS 컨테이너 에이전트는 컨테이너 인스턴스에 로그를 저장합니다.

컨테이너 에이전트 버전 1.36.0 이상에서는 기본적으로 로그가 Linux 인스턴스의 `/var/log/ecs/ecs-agent.log`와 Windows 인스턴스의 `C:\ProgramData\Amazon\ECS\log\ecs-agent.log`에 있습니다.

컨테이너 에이전트 버전 1.35.0 및 이전 버전의 경우 기본적으로 로그는 Linux 인스턴스의 `/var/log/ecs/ecs-agent.log.timestamp`와 Windows 인스턴스의 `C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp`에 있습니다.

기본적으로 에이전트 로그는 매시간 교체되며 최대 24개의 로그가 저장됩니다.

다음은 기본 에이전트 로깅 동작을 변경하는 데 사용할 수 있는 컨테이너 에이전트 구성 변수입니다. 사용 가능한 모든 구성 파라미터에 대한 자세한 내용은 [Amazon ECS 컨테이너 에이전트 구성](ecs-agent-config.md) 또는 GitHub의 [Amazon ECS Agent README](https://github.com/aws/amazon-ecs-agent/blob/master/README.md)를 참조하세요.

다음은 컨테이너 에이전트 버전 1.36.0 이상에서 `logfmt` 형식을 사용할 때의 로그 파일 예시입니다.

```
level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go
level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go
level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go
level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go
level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go
level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go
level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go
```

다음은 JSON 형식을 사용할 때의 로그 파일 예시입니다.

```
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
```