[AWS] EC2의 데이터를 S3로 백업하기

pokcha's·2021년 11월 10일
0

aws

목록 보기
3/9

이전 글에서는 EC2에 있는 로그를 백업하기 위하여 cloudwatch를 사용하는 방법을 알아보았다. 하지만 cloudwatch는 압축된 파일의 로그 전달을 지원하지 않는다.
로그의 양이 많다면 압축은 불가피 할것이다. 그렇다면 압축파일로 묶은 로그들을 어떻게 백업해야 할까?

이 경우 로그 수집보다 파일 백업으로 초점을 맞춘다면 S3를 사용하는 것이 좋다.

1. S3 bucket 생성하기

EC2 인스턴스와 동일한 리전에 S3 bucket을 생성한다.

2. EC2 인스턴스에 적절한 S3 권한부여하기

S3에 대한 액세스 권한을 부여하는 IAM을 생성한다.AWS서비스의 EC2로 역할을 만든다. 모든 Amazon S3 버킷에 대한 EC2 액세스를 허용하려면 AmazonS3ReadOnlyAccess 또는 AmazonS3FullAccess 관리형 IAM 정책을 사용한다. 운영중인 데이터가 아니기에 AmazonS3FullAccess 정책을 연결하였다.역할 이름을 입력하고 역할 생성을 한다.
EC2 인스턴스에 만들어준 IAM을 연결해 준다.

AWS CLI 명령을 사용하여 아래 명령을 실행하면 S3버킷에 대한 액세스를 확인할 수 있다.

$ aws s3 ls s3://backuplog-demo

3. AWS CLI를 이용하여 스크립트 짜기

이제 AWS CLI 를이용하여 EC2 인스턴스에 있는 압축파일을 S3로 옮겨보자.
아래 명령어로 S3로 LOCALPATH의 경로에 있는 'xx.md' , 'xx.tar.gz' 확장자의 파일만 업로드 할 수 있다.

$ aws s3 cp LOCALPATH s3://BUCKET_NAME --recursive --include "**/**.md" --include "**/**.tar.gz"

내가 필요한 형식으로 스크립트를 수정하였다.
압축된 파일을 'home/ec2-user/backuplog' 아래에 두고 's3://backuplog-demo' 로 copy 하면서 'xx.tar.gz' 확장자를 포함하는 파일만을 옮긴다.

$ aws s3 cp /home/ec2-user/backuplog s3://backuplog-demo --recursive --include "**.tar.gz"

압축파일이 정상적으로 S3버킷으로 복사되었다.

AWS CLI Command Reference 참고하여 필요한 스크립트를 확인할 수 있다.
https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

4. Crontab (선택)

매번 서버에 접속하여 명령어로 파일을 백업받기에는 불편한 점이 많다.
주기적으로 로그를 백업받기 위해 스크립트를 crontab에 등록시켜 두면 운영적인 면에서 간편하다.
트래픽이 낮은 시간을 이용하여 crontab을 등록 하였다.

$ crontab -l
0 3 * * * aws s3 cp /home/ec2-user/backuplog s3://backuplog-demo --recursive --include "**.tar.gz
profile
AWS 운영기록 💾

0개의 댓글