파일을 EC2에서 S3로 cron으로 정기 백업

2407 단어 EC2aws-cliS3AWS

경위



EC2에 지어진 kubernetes 로그를 EC2 인스턴스 외부에 저장하고 싶을 때의 이야기.
EKS나 GKE를 사용하면 그만큼 멋지게 할 수 있는 것 같습니다만, 이번은 그들을 이용하지 않는 전제입니다.
절반 정도 정책과 롤의 작성 방법의 설명이 되어 버렸습니다만, 비망록으로서 실어 둡니다.

절차



S3 버킷 만들기



그렇지 않은 경우 작성하십시오.

EC2에 IAM 롤 연결



대상 S3을 조작하기 위한 IAM 역할.
이미 사용할 수 있는 롤이 있는 경우는 그것을 이용해도 좋다.
그렇지 않은 경우 [IAM 역할 할당/바꾸기]에서 만들 수 있습니다.

  • [새 IAM 역할 만들기]
  • [역할 만들기]
  • EC2를 선택하고 [다음 단계: 액세스 권한]
  • [정책 만들기]
  • 서비스
  • S3

  • 액션
  • 목록/ListBucket
  • 읽기/GetObject
  • 쓰기/PutObject

  • 리소스
  • bucket [ARN 추가]
  • object [ARN 추가]
  • 디렉터리를 제한하려면 ObjectName에 넣기
  • 제한하지 않는 경우 모두 체크 표시



  • [정책 확인]
  • 적절한 이름으로 정책 만들기
  • 생성이 완료되고 정책 목록으로 돌아가면 역할 목록으로 돌아가기
  • 역할 목록을 업데이트하고 만든 정책 선택
  • [다음 단계: 태그] → [다음 단계: 확인]
  • 적절한 역할 이름을 사용하여 역할 만들기
  • 생성이 완료되고 역할 목록으로 돌아가면 IAM 역할 할당/바꾸기 화면으로 돌아갑니다
  • IAM 역할 목록을 업데이트하고 만든 역할 선택
  • [적용]

  • aws s3 sync 사용



    버킷과 디렉토리를 지정하면 그 내용을 동기화 해주는 매우 편리한 명령입니다.
    지정된 디렉토리와 버킷의 내용을 비교하고 버킷에 없는 것만 업로드해 줍니다.
    지정된 동기화 대상에서 데이터가 사라져도 S3의 객체는 삭제되지 않으므로 안심.

    이번에는 이것을 cron으로 정기적으로 실행하여 EC2의 로그를 S3에 업로드합니다.
  • aws 명령이 없으면 설치 [ 절차 ]
  • aws sts get-caller-identity로 부착한 IAM 롤이 제대로 있는지 확인
  • aws s3 sync EC2の同期先 s3://バケット名/ディレクトリ名(あれば)에서 동기화되었는지 확인

  • cron 설정


    aws s3 sync 사용할 수 있음을 확인한 후에는 cron이 정기적으로 실행되도록합니다.
  • crontab -e에서 설정 파일을 열고 다음과 같이 씁니다
  • */1 * * * * /bin/bash -c ". /ホームディレクトリ/.bash_profile; 成功したawsコマンド"
    

    이번은 1분 두는 설정.
    먼저 .bash_profile를 로드하는 것은 경로 설정을 반영하기 때문입니다.
    aws 명령을 절대 경로로 작성해도 좋았을지도 모른다.
  • crontab -l에서 설정된 작업 확인



  • cron 실행 로그를 확인하려면 crontab -e에서 열린 설정 끝에이 녀석을 씁니다.
    > /ログの出力先 2>&1
    

    좋은 웹페이지 즐겨찾기