야심차게 AWS를 사용해보고자 free tier를 신청하신 분들이 많으실 줄 생각합니다. 여러가지 매력적이고 강력한 서비스들이 있습니다. 그 중에서 가장 기본이 되는 것을 꼽아 보자면 역시 EC2, RDS와 함께 S3을 꼽아 볼 수 있습니다.
리눅스 서버 환경에 익숙한 저 로서는 S3을 처음 이용할때 EC2에 직접 마운트 하는 방법을 찾았었고 역시나 이미 먼저 AWS를 사용한 선배들이 간단하게 마운트 해서 S3을 이용할 수 있는 방법들을 만들어 놓았습니다. 저 역시 이러한 솔루션중에 평가가 좋은 것들을 테스트 해봤는데 테스트 해보고 내린 결론은 S3은 마운트해서 쓰라고 만든게 아니구나 였습니다. 마운트해서 사용해도 되긴 되지만 읽기, 쓰기 모두 비정상적으로 느리게 체감 되었습니다. 파일 사이즈가 100Mb만 넘어가도 너무 느려서 실제 서비스에서는 사용할 수 없다고 결론 내렸던 기억이 있습니다.
이 포스트 에서는 심플하고 강력한 커맨드라인 툴인 AWS CLI를 사용하여 간편하게 S3 버킷에 파일을 업로드 하거나 다운로드 하는 방법을 다루겠습니다.
일단 awscli 가 ec2 머신에 설치되어 있어야 합니다. cli 설치방법은 매우 상세하게 설명하여 포스트 했습니다.
[링크:AWSCLI 설치 방법은 이곳을 참조 해 주세요. ]
ec2 에서 s3 관련 명령어 옵션이 무엇이 있는지 먼저 살펴봅시다.
ec2-shell> aws s3 help
리눅스를 접해보신 분들에게 익숙한 man 페이지를 제공해주는군요! S3 명령어 옵션을 보시면 이렇게 7개가 나옵니다. 각각 무엇인지 살펴봅시다.
이 포스트까지 검색해서 찾아오신 분들이라면 cp, mv, rm, ls 이 네 가지는 제가 설명하지 않아도 아실것 같은 느낌적인 느낌이 드는 군요. 7가지 모두 하나 하나 살펴보겠습니다.
업로드/다운로드: cp, mv
cp: copy입니다. ec2 에서 s3 cp 하면 업로드 s3 에서 ec2로 cp 하면 다운로드입니다.
aws s3 cp /local/object s3://bucket/to/object/path
aws s3 cp s3://bucket/from/object/path /local/to/path
aws s3 cp README.txt s3://algopie-test
aws s3 cp s3://algopie-test/README.txt ./
mv: move 입니다. cp와 마찬가지로 업로드, 다운로드 둘다 되며 다만 명령이 실행 완료되면 오리지널 오브젝트는 지워집니다. 명령어 패턴은 위 cp 와 완전하게 동일합니다.
삭제: rm
rm: remove 입니다. s3에 있는 오브젝트를 삭제하는 명령어 옵션입니다.
aws s3 rm s3://bucket/to/path
ec2-shell> aws s3 rm s3://algopie-test/README.txt
목록 보기: ls
ls: list directory contents 입니다. dos로 치면 dir 과 비슷합니다. ls 로 해당 버킷에 들어 있는 파일 목록을 볼 수 있는 명령어 옵션입니다.
aws s3 ls s3://bucket/to/path
ec2-shell> aws s3 ls s3://algopie-test
Bucket 생성 / 삭제: mb, rb
mb: make bucket 입니다. s3에 버킷을 생성하는 명령어 옵션입니다.
aws s3 mb s3://bucket
ec2-shell> aws s3 mb s3://algopie-test
rb: remove bucket 입니다. 위에 설명한 rm은 버킷안에 있는 오브젝트를 삭제하는 것 이고 rb는 버킷 자체를 삭제하는 것 입니다.
aws s3 rb s3://bucket
ec2-shell> aws s3 rb s3://algopie-tmp
동기화: sync
sync: synchronize 입니다. 말그대로 동기화 하는 명령어 옵션입니다. local to s3, s3 to local, s3 to s3 이렇게 3가지를 지원합니다.
aws s3 sync /local/from/path s3://bucket/to/path
aws s3 sync s3://bucket/from/path /local/to/path
aws s3 sync s3://bucket/from/path s3://bucket/to/path
ec2-shell> aws s3 sync /home/www/algopie-public s3://algopie-public
ec2-shell> aws s3 sync s3://algopie-tmp /home/www/tmp
ec2-shell> aws s3 sync s3://algopie-public s3://algopie-tmp
장황하게 정리하였지만 사실 help 명령어 옵션으로 모두 자세하게 확인이 가능합니다. 각각 명령 옵션에 대한 헬프도 따로 따로 볼 수 있습니다.
가령 아래와 같은 명령어 옵션을 실행 시키면 sync 옵션에 대한 설명과 자세한 사용법 모두 나오니 help를 활용하는 습관을 들여 놓으면 굳이 검색을 하지 않아도 빠르게 찾아 볼 수 있습니다.
ec2-shell> aws s3 sync help