AWS-Cloudwatch 로 로그 저장
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
기타
도커 로그는 -f 를 통해 tailing이 가능함
- docker logs -f demonized_container