[AWS] CLI로 S3 제어

송준섭 Junseop Song·2024년 5월 1일
1
post-thumbnail

참고

실습으로 배우는 AWS 핵심 서비스


설정

우선 aws configure로 설정 진행
IAM User의 access-key와 secret-key를 입력하고, 리전 및 데이터 형식을 입력해주면 됨

aws s3 ls 명령어가 에러를 반환하지 않으면 잘 설정이 된 것

버킷 생성

버킷을 생성하려면 아래 명령어 입력

aws s3 mb s3://{버킷 이름}

위에서 버킷 이름을 www.songjseop.io로 한 이유는 나중에 설명할 예정
매니지먼트 콘솔에서 확인을 해보면 새로 버킷이 생성된 것을 알 수 있음

로컬 파일을 버킷에 업로드

로컬 환경에 있는 파일을 버킷에 업로드하기 위해서는 아래 명령어 입력

aws s3 cp test.txt s3://{버킷 이름}/

이러면 현재 폴더에 있는 test.txt가 버킷에 업로드가 됨
리눅스 파일 복사 명령어 cp와 비슷한 느낌?

업로드가 잘 된 모습

아래와 같이 폴더도 지정해 줄 수 있음
명령어 실행 전에 폴더를 미리 만들어 줄 필요 없이 폴더가 없다면 바로 폴더도 생성해 줌

S3 버킷 파일 다운로드

다운로드도 똑같이 cp 명령어를 쓰는데 반대로 해주면 됨

aws s3 cp s3://{버킷 이름}/{파일 키} {파일을 저장할 폴더 경로 또는 저장할 파일 이름}

다운로드를 잘 받아온 모습을 볼 수 있음

S3 버킷 파일 삭제

삭제는 rm 명령어 사용

aws s3 rm s3://{버킷이름}/{파일 키}

아래처럼 삭제
delete: s3://www.songjseop.io/test.txt가 뜬 것을 보니 삭제가 잘 된 느낌

그러나 매니지먼트 콘솔로 들어가 확인을 해보니 삭제가 되어있지 않음

조금 기다려보니 삭제가 됨 (삭제 시간이 걸려서 그런 것이었음)

로컬 폴더와 S3 버킷 동기화

하나 하나 로컬 파일을 버킷에 추가 및 삭제 하기는 귀찮을 수 있음
로컬 환경의 폴더를 S3 버킷과 동기화를 시키기 위해서는 sync 명령어 사용

aws s3 sync {로컬 폴더 경로} s3://{버킷 이름}

버킷을 모두 비운 다음 test용 폴더와 파일을 만든 후 명령어를 실행했음

업로드가 잘 됐다!

이 상황에서 동기화한 로컬 폴더에 새로운 파일을 또 만들면?
업로드가 자동으로 되지는 않음
명령어를 실행하면 단지 현재 폴더의 상태를 업로드 해주는 느낌
그리고 삭제는 인식하지 못하는 것 같음 (캡쳐본엔 실수로 test.txt를 삭제했지만 test1.txt를 삭제하고 다시 동기화를 해봐도 삭제는 인식하지 못하였음)

폴더에 많은 파일이 존재하는 상황에서 이 명령어를 실수로 실행하면 많은 요금을 지불해야 할 수도 있으므로 조심!!
또한 폴더의 숨김 파일도 같이 올라간다는 것을 알아두면 좋음

업로드와 반대로 다운로드도 가능
cp와 비슷하게 경로를 반대로 적어주면 됨

ACL 수정 (접근 제어 수정)

CLI로 파일 객체의 ACL을 바꿔줄 수 있음

aws s3api put-object-acl --bucket {버킷 이름} --key {파일 키} --acl {ACL 옵션}

현재 위에서 버킷에 넣어준 test1.txt는 public 접근이 불가능한 상태 (객체 URL로 접근을 하면 아래와 같이 에러 발생)

ACL 옵션에는 여러 것이 올 수 있지만 public-read를 줘보려고 함
테스트를 위해 퍼블릭 액세스 차단을 해제하고, ACL 활성화를 해주었음

이제 아래 명령어를 입력하면 모든 사람에 대하여 읽기 권한이 부여된 것을 확인할 수 있음

0개의 댓글

관련 채용 정보