Dev

AWS-Cloudwatch 로 로그 저장

foxlee 2022. 3. 27. 11:13

1. Cloudwatch 로그 그룹 생성 후 해당 그룹에서 로그 스트림 생성

2. IAM 역할(사용자 아님) 추가 - couldwatchfullaccess (AWS서비스 - EC2에 추가)

3. ec2 생성시 위에서 추가한 IAM 역할 선택/ 포트 개방(아래 설정은 ec2 포트 5001, 컨테이너 내부 앱의 포트는 5000)

4. ec2 접속해서 도커 설치 후 웹앱 세팅

4. ec2에 웹앱 도커 컨테이너 설정을 위한 docker-compose

// ./docker-compose.yml
version: "3.2"

services:
  server:
    build: server/
    volumes:
      - ./server:/app
    environment:
      - PYTHONUNBUFFERED=1
    ports:
      - "5001:5000"
    logging:
      driver: awslogs
      options: // Cloudwatch 로그 그룹 추가시 설정한 정보와 동일해야함
        awslogs-group: "flaskapi"
        awslogs-region: "ap-northeast-2"
        awslogs-stream: "web/log"

5. 해당 서버는 IAM역할이 설정되었기 때문에 서버의 도커에 AWS 설정 하지 않아도 됨

6. IAM 역할이 설정되지 않은 서버라면 CloudWatchLogsFullAccess 의 권한을 가진 유저의 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY을 발급받아서

/etc/systemd/system/docker.service.d/aws-credentials.conf 파일에 아래와 같이 입력 후 생성 후 도커 재시작

더보기

[Service]
Environment="AWS_ACCESS_KEY_ID=위에서생성한AccessKey"
Environment="AWS_SECRET_ACCESS_KEY=위에서생성한SecretKey"

7. 또는 도커 컨테이너 실행 발급받은 키를 docker run -e AWS_ACCESS_KEY_ID=AXXXXXXXXXXXXE -e AWS_SECRET_ACCESS_KEY=wXXXXXXXXXXXXY -e AWS_DEFAULT_REGION=us-west-2 와 같이 도커 실행에 환경변수 주는 방법도 가능함



* 로그 출력하기

sudo apt install awscli

aws logs get-log-events --log-group-name flaskapi --log-stream-name web/log --region ap-northeast-2

https://github.com/jorgebastida/awslogs

참고 링크

https://ch-visu4l.tistory.com/14

https://stackoverflow.com/questions/31073863/docker-cannot-find-aws-credentials-in-container-although-they-exist

 

기타

도커 로그는 -f 를 통해 tailing이 가능함

  • docker logs -f demonized_container