1. 글을 작성하게 된 계기
외부 업체가 S3에 파일을 업로드하면 이를 검사해야 할 일이 있었습니다. 이 과정에서 S3에 존재하는 파일을 어떻게 조회/내려받는지에 대해 간단한 명령어를 학습했고, 이를 정리하기 위해 글을 작성하게 되었습니다.
2. 조회
이는 아래 명령어로 조회할 수 있습니다.
1
$ aws s3 ls ${BUCKET_PATH}
예를 들어, 버킷 이름이 jun-ds-bucket이라면 다음과 같습니다.
1
2
3
4
5
$ aws s3 ls jun-ds-bucket
PRE cache/
PRE payment/
PRE yml/
2023-12-15 21:16:14 348 index.html
3. 동기화
버킷 내부의 파일을 내려받기 위해서는 아래 명령어를 사용할 수 있습니다. 정확히는 S3 내부 경로에 존재하는 파일과 로컬 파일을 동기화 하는 명령어입니다.
1
aws s3 sync s3://${BUCKET_PATH} ${LOCAL_DIRECTORY_PATH}
예를 들어, 버킷 이름이 jun-ds-bucket이라면 다음과 같습니다.
1
2
3
4
5
$ aws s3 sync s3://jun-ds-bucket ./
download: s3://jun-ds-bucket/cache/name.json to cache/name.json
download: s3://jun-ds-bucket/payment/openapi3.json to payment/openapi3.json
download: s3://jun-ds-bucket/yml/application.yml to yml/application.yml
download: s3://jun-ds-bucket/index.html to ./index.html
만약 이를 완전히 동기화하기 위해서는 --delete 옵션을 사용할 수 있습니다. 이 경우 로컬 디렉터리 내부 파일이 삭제될 수 있으므로 주의해야 합니다.
1
2
3
4
5
6
7
8
9
10
$ ls
cache index.html payment
test test.txt yml
$ aws s3 sync s3://jun-ds-bucket ./ --delete
delete: ./test.txt # 해당 파일 삭제
$ ls
cache index.html payment
test yml
단, 폴더는 삭제되지 않습니다.
또한 반대로 로컬 파일을 S3 버킷 내부에 동기화할 수도 있습니다.
1
$ aws s3 sync ${LOCAL_DIRECTORY_PATH} s3://${BUCKET_PATH}
3. 정리
S3 버킷 내부 파일을 조회/내려받는 방법에 대해 살펴보았습니다. 간단한 내용이지만 잘 정리해서 빠르게 사용할 수 있도록 합시다.