AWS

[AWS cli] s3 파일/디렉터리 다운로드

비번변경 2021. 8. 25. 21:26

S3의 특정 경로의 디렉터리를 서버로 다운로드할 필요가 생겼다.

이 글에서는 AWS cli를 이용한다.

 

따라서 당연히 AWS cli가 설치되어 있어야 한다.

 

AWS cli 설치 확인

aws --version

aws --version

이 서버는 aws ec2여서 그런지 이미 설치되어 있었다. 혹시 설치되어 있지 않다면 아래의 공식 문서 또는 구글링 해서 설치한다.

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-install.html

참고로 AWS CLI 2가 최신 버전이다. 현재 설치되어 있는 버전은 AWS CLI 1이지만 크게 문제는 없을 것이다.

 

 

S3 권한 확인

또한, S3에 접근해야 하기 때문에 S3 접근 권한이 있어야 한다.

권한은 AWS 콘솔에서 액세스 키 등을 생성한 뒤 aws configure 명령으로 설정할 수 있다.

서버가 aws ec2인 경우에는 IAM 역할을 부여하여 설정할 수도 있다. 액세스 키는 관리하기가 귀찮기 때문에 테스트 수준에서는 AmazonS3FullAccess 정책을 가진 역할을 생성하여 부여하는 게 편할 것이다.

 

s3 명령어

s3 명령어는 아래와 같은 형식이다.

aws s3 <Command> [<Arg> ...]

# s3 명령어 관련 도움말
aws s3 help

<Command> 자리에 올 수 있는 명령어는 ls, mv, cp, rm 등 리눅스의 파일 또는 디렉터리 관련 명령과 유사하다. 예상했겠지만 파일 다운로드는 cp 명령을 이용한다. 파일 업로드도 cp 명령을 아용하여 할 수 있다.

 

파일 다운로드

aws s3 cp <S3_URI> <DEST_DIR>

# 예시
aws s3 cp s3://test/mail_sender.py /home/ec2-user/

aws s3 cp

 

 

디렉터리 다운로드

aws s3 cp <S3_URI> <DEST_DIR> --recursive
# --recursive : 지정된 디렉터리 또는 프리픽스 아래의 모든 파일/개체에 대해 명령 수행

# 예시
aws s3 cp s3://test/python_text/ /home/ec2-user/python_text/ --resursive

특정 디렉터리 아래의 파일을 전부 다룰 때에는 --recursive 옵션을 사용한다. 업로드도 마찬가지.

 

예시 )

아래 사진과 같이 test라는 s3 버킷의 python_text라는 프리픽스 또는 디렉터리의 파일을 모두 다운로드하려고 한다.

 

aws s3 ls

현재 사용자의 홈 디렉터리에 python_text라는 디렉터리 아래에 파일들이 다운로드되었으면 좋겠다.

 

aws s3 cp download

다운로드할 경로를 따로 생성하지 않아도 실행 과정에서 디렉터리가 자동 생성되면서 정상적으로 다운로드되었다.