Amazon ECS 로그를 AWS 서비스 또는 AWS 파트너로 보내기

Amazon ECS 로그를 AWS 서비스 또는 AWS 파트너로 보내기

FireLens for Amazon ECS를 사용하면 작업 정의 매개변수로 로그를 AWS 서비스나 AWS Partner Network(APN) 대상으로 라우팅해 로그 저장과 분석에 활용할 수 있어요.

출처: 문서

본문

FireLens for Amazon ECS를 사용하면 작업 정의 매개변수로 로그를 AWS 서비스나 AWS Partner Network(APN) 대상으로 라우팅하여 로그 저장과 분석에 활용할 수 있습니다. AWS Partner Network는 고객 제공물을 구축, 마케팅, 판매하기 위해 프로그램, 전문성, 리소스를 활용하는 파트너의 글로벌 커뮤니티입니다. 자세한 내용은 AWS Partner를 참고하세요.

FireLens는 Fluentd와 Fluent Bit와 함께 작동합니다. AWS for Fluent Bit 이미지를 제공하거나 자체 Fluentd 또는 Fluent Bit 이미지를 사용할 수 있습니다. 기본적으로 Amazon ECS는 Firelens 컨테이너가 그것을 사용하는 컨테이너보다 먼저 시작되도록 컨테이너 의존성을 구성합니다. Firelens 컨테이너는 그것을 사용하는 모든 컨테이너가 중지된 후에도 중지됩니다.

이 기능을 사용하려면 작업이 필요로 하는 AWS 서비스를 사용하는 데 필요한 권한을 제공하는 IAM 역할을 작업용으로 만들어야 합니다. 예를 들어, 컨테이너가 Firehose로 로그를 라우팅한다면 작업에는 firehose:PutRecordBatch API를 호출할 권한이 필요합니다. 자세한 내용은 IAM User Guide의 Adding and Removing IAM Identity Permissions를 참고하세요. 작업은 다음 조건에서 Amazon ECS 작업 실행 역할도 필요할 수 있습니다. 자세한 내용은 Amazon ECS task execution IAM role을 참고하세요.

  • 작업이 Fargate에 호스팅되고 Amazon ECR에서 컨테이너 이미지를 풀하거나 로그 구성에서 AWS Secrets Manager의 민감한 데이터를 참조한다면 작업 실행 IAM 역할을 포함해야 합니다.
  • Amazon S3에 호스팅된 사용자 지정 구성 파일을 사용할 때 작업 실행 IAM 역할에는 s3:GetObject 권한이 포함되어야 합니다.

Amazon ECS용 FireLens를 사용할 때 다음을 고려하세요.

  • 콘솔에서 컨테이너 이름을 쉽게 구분할 수 있도록 로그 컨테이너 이름에 my_service_를 추가할 것을 권장합니다.
  • Amazon ECS는 기본적으로 애플리케이션 컨테이너와 FireLens 컨테이너 사이에 시작 순서 의존성을 추가합니다. 애플리케이션 컨테이너와 FireLens 컨테이너 사이에 컨테이너 순서를 지정하면 기본 시작 컨테이너 순서가 재정의됩니다.
  • Amazon ECS용 FireLens는 AWS Fargate on Linux와 Amazon EC2 on Linux에 호스팅된 작업 모두에서 지원됩니다. Windows 컨테이너는 FireLens를 지원하지 않습니다. Windows 컨테이너용 중앙 집중식 로깅 구성 방법에 대한 정보는 Centralized logging for Windows containers on Amazon ECS using Fluent Bit를 참고하세요.
  • CloudFormation 템플릿을 사용해 Amazon ECS용 FireLens를 구성할 수 있습니다. 자세한 내용은 AWS CloudFormation User Guide의 AWS::ECS::TaskDefinition FirelensConfiguration을 참고하세요.
  • FireLens는 포트 24224에서 수신 대기하므로, FireLens 로그 라우터가 작업 외부에서 도달할 수 없도록 작업이 사용하는 보안 그룹에서 포트 24224의 인바운드 트래픽을 허용하지 않아야 합니다.
    • awsvpc 네트워크 모드를 사용하는 작업의 경우 이는 작업과 연결된 보안 그룹입니다.
    • host 네트워크 모드를 사용하는 작업의 경우 이는 작업을 호스팅하는 Amazon EC2 인스턴스와 연결된 보안 그룹입니다.
    • bridge 네트워크 모드를 사용하는 작업의 경우 포트 24224를 사용하는 포트 매핑을 만들지 마세요.
  • bridge 네트워크 모드를 사용하는 작업의 경우 FireLens 구성이 있는 컨테이너는 그것에 의존하는 애플리케이션 컨테이너가 시작되기 전에 시작되어야 합니다. 컨테이너 시작 순서를 제어하려면 작업 정의에서 의존성 조건을 사용하세요. 자세한 내용은 Container dependency를 참고하세요.
    • 참고: FireLens 구성이 있는 컨테이너 정의에서 의존성 조건 매개변수를 사용한다면 각 컨테이너에 START 또는 HEALTHY 조건 요구 사항이 있는지 확인하세요.
  • 기본적으로 FireLens는 클러스터 및 작업 정의 이름과 클러스터의 Amazon 리소스 이름(ARN)을 메타데이터 키로 stdout/stderr 컨테이너 로그에 추가합니다. 다음은 메타데이터 형식의 예시입니다.
"ecs_cluster": "cluster-name",
"ecs_task_arn": "arn:aws:ecs:region:111122223333:task/cluster-name/f2ad7dba413f45ddb4EXAMPLE",
"ecs_task_definition": "task-def-name:revision",

로그에 메타데이터를 원하지 않으면 작업 정의의 firelensConfiguration 섹션에서 enable-ecs-log-metadata를 false로 설정하세요.

"firelensConfiguration":{
   "type":"fluentbit",
   "options":{
      "enable-ecs-log-metadata":"false",
      "config-file-type":"file",
      "config-file-value":"/extra.conf"
}

FireLens 컨테이너를 비루트 사용자로 실행하도록 구성할 수 있습니다. 다음을 고려하세요.

FireLens 컨테이너를 비루트 사용자로 실행하려면 다음 형식 중 하나로 사용자를 지정해야 합니다.

  • uid
  • uid:gid
  • uid:group

더 알아보기 (Learn more)