JS 스크립트로 쉘 스크립트를 만들어 다량의 S3 객체 이관하기

김현웅·2022년 12월 19일
1

S3 객체들을 이관하는 상황을 마주했다.

aws 계정 분리가 되며 기존에 이용하던 s3 버킷의 객체들을 이관해야했다.

단순히 통째로 옮기는 것이라면 조금 더 간단했겠지만, 어떠한 규칙에 의해 키값이 바뀌어야했다.

따라서 이관 이전에 어떤 스크립트를 사용해야했다.

간단한 해결을 위해 아래와 같은 플로우를 생각했다.

  1. 데이터베이스로 부터 각 객체의 기존 Key 과 새로운 Key 값을 쿼리하여 배열로 데이터를 뽑아서 저장해둔다.
  2. 자바스크립트 코드를 이용해서 해당 배열을을 순회하여, 적절한 aws-cli 커맨드들을 쉘 스크립트로 뽑아낸다.
  3. 쉘 스크립트를 실행한다.

적절한 aws-cli 찾아보기

  • aws s3 help 를 쳐본다.
  • 음.. 이름을 보면 cp 나 sync 를 쓰면 될것같다.
  • aws s3 cp help 쳐본다.
  • 잘 찾은듯하다. 나의 경우 cp < S3Uri > < S3Uri > 를 이용하면 되겠거니 싶었다.

밑에 내려보면 option args 로 줄 수 있는것들을 확인할 수 있는데, 필요한 기능들과 유용해보이는 기능들이 많다.

이따가 스크립트를 돌리기 전에 의도대로 잘 작동할지 --dryrun 으로 테스트해보면 좋다.
** 실제로 다른 것에 작용을 하지는 않고, 동작하는 것 처럼 보이도록 실행하기
(단위 테스트 시 함수 mocking 할때 이런 네이밍을 본 적 있다)

  • 아래와 같이 쭉 쉘 스크립트를 파일에 뽑아낸다. ** 로직은 걷어내고 데모 형태로 수정하여 캡쳐해왔다

node main 으로 배열 한두개 잘라보면서 쉘스크립트가 올바르게 뽑히는지 확인해보고 --dryrun 도 해본 뒤 이관을 시작한다.

  • node main && sh output.sh 로 쉘스크립트를 뽑고 작동시킨다

간편하게 이관이 진행되는 모습

끝!

profile
경험을 기록하는 블로그입니다.

0개의 댓글