

# Amazon ECS 로그를 CloudWatch로 전송
<a name="using_awslogs"></a>

CloudWatch Logs로 로그 정보를 전송하도록 태스크의 컨테이너를 구성할 수 있습니다. 태스크에 대해 Fargate를 사용하는 경우 컨테이너에서 로그를 볼 수 있습니다. EC2를 사용하고 있다면 한 곳의 편리한 위치에서 컨테이너의 다양한 로그를 볼 수 있으며 컨테이너 로그가 컨테이너 인스턴스에서 디스크 스페이스를 차지하지 못하도록 방지합니다.

**참고**  
태스크의 컨테이너에서 기록되는 정보 유형은 대부분 `ENTRYPOINT` 명령에 따라 결정됩니다. 기본적으로 수집되는 로그는 컨테이너를 로컬에서 실행했을 때 일반적으로 대화식 터미널에 표시되는 명령 출력(`STDOUT` 및 `STDERR` I/O 스트림)을 나타냅니다. `awslogs` 로그 드라이버는 이러한 로그를 Docker에서 CloudWatch Logs로 전달하는 역할만 합니다. 다른 파일 데이터 또는 스트림을 수집할 수 있는 대체 방법을 포함해 Docker 로그가 처리되는 방식에 대한 자세한 정보는 Docker 설명서에서 [컨테이너 또는 서비스 로그 보기](https://docs.docker.com/engine/logging/) 섹션을 참조하세요.

Amazon ECS 컨테이너 인스턴스에서 CloudWatch Logs로 시스템 로그를 보내려면 *Amazon CloudWatch Logs 사용 설명서*의 [로그 파일 모니터링](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) 및 [CloudWatch Logs 할당량](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)을 참조하세요.

## Fargate
<a name="enable_awslogs"></a>

태스크에 Fargate를 사용하는 경우 태스크 정의에 필요한 `logConfiguration` 파라미터를 추가하여 `awslogs` 로그 드라이버를 켜야 합니다. 자세한 내용은 [Amazon ECS 태스크 정의 예제: 로그를 CloudWatch로 라우팅](specify-log-config.md) 섹션을 참조하세요.

Fargate의 Windows 컨테이너의 경우 태스크 정의 파라미터에 특수 문자(예: `& \ < > ^ |`)가 있는 경우 다음 옵션 중 하나를 수행합니다.
+ 전체 파라미터 문자열 주위에 큰따옴표가 포함된 이스케이프(`\`) 추가

  예제

  ```
  "awslogs-multiline-pattern": "\"^[|DEBUG|INFO|WARNING|ERROR\"",
  ```
+ 각 특수 문자 주위에 이스케이프(`^`) 문자 추가

  예제

  ```
  "awslogs-multiline-pattern": "^^[^|DEBUG^|INFO^|WARNING^|ERROR",
  ```

## EC2
<a name="ec2-considerations"></a>

해당 태스크에 EC2를 사용하는 경우 `awslogs` 로그 드라이버를 설정하려면 Amazon ECS 컨테이너 인스턴스에 버전 1.9.0 이상의 컨테이너 에이전트가 필요합니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 정보는 [Amazon ECS 컨테이너 에이전트 업데이트](ecs-agent-update.md) 섹션을 참조하세요.

**참고**  
Amazon ECS 최적화 AMI 또는 `ecs-init` 패키지의 최소 버전 `1.9.0-1`이 포함된 사용자 지정 AMI를 사용해야 합니다. 사용자 지정 AMI를 사용하는 경우 **docker run** 문 또는 환경 변수 파일에서 다음 환경 변수를 사용하여 에이전트를 시작할 때 Amazon EC2 인스턴스에서 `awslogs` 로깅 드라이버를 사용할 수 있도록 지정해야 합니다.  

```
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","{{awslogs}}"]
```

또한 Amazon ECS 컨테이너 인스턴스는 컨테이너 인스턴스를 시작할 때 사용하는 IAM 역할에 `logs:CreateLogStream` 및 `logs:PutLogEvents` 권한도 요구합니다. Amazon ECS에서 `awslogs` 로그 드라이버를 사용 설정하기 전에 Amazon ECS 컨테이너 인스턴스 역할을 생성한 경우 이 권한을 추가해야 할 수 있습니다. `ecsTaskExecutionRole`은 태스크에 할당되고 올바른 권한이 포함되어 있을 때 사용됩니다. 작업 실행 역할에 대한 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md) 섹션을 참조하세요. 컨테이너 인스턴스가 컨테이너 인스턴스에 대해 관리형 IAM 정책을 사용하는 경우 컨테이너 인스턴스에 올바른 권한이 부여될 수 있습니다. 컨테이너 인스턴스의 관리형 IAM 정책에 대한 자세한 내용은 [Amazon ECS 컨테이너 인스턴스 IAM 역할](instance_IAM_role.md) 섹션을 참조하세요.