일단 버킷에 파일을 하나 업로드 해봄
그러고 업로드한 파일의 상세 정보를 보면 객체 URL이 있음
그러나 이 URL로 접근을 하더라도 보이지는 않음
아직 권한이 막혀있기 때문
이것을 public으로 만들기 위해서는 권한 설정을 해줘야 함
객체(파일) 상세 페이지에서 객체 작업 -> ACL을 사용하여 퍼블릭으로 설정을 누르면 뭔가 될 것 같지만 누를 수 없음
버킷을 기본 옵션으로 생성하면 public으로 설정할 수 없도록 되어 있고, 현재 사용 중인 버킷은 기본 옵션으로 생성했기 때문
버킷 생성 페이지로 가보면, 아래 표시한 '모든 퍼블릭 액세스 차단'이라는 것이 체크되어 있기 때문에 불가했던 것
이 체크를 전부 해제하면 퍼블릭으로 쓸 수 있음
물론 만들 때 이렇게 차단을 해제할 수 있지만 중간에 편집으로 차단을 해제할 수도 있음
이미 만든 song-buckettt을 편집하여 차단을 해제해보자
song-buckettt의 상세 정보로 들어와서 권한 탭을 클릭하면 버킷 생성할 때 처럼 퍼블릭 액세스 차단 부분이 있고 이를 편집할 수 있는 버튼이 있음
편집 버튼을 눌러서 체크를 해제해주면 됨
각각 다 다른 기능이지만 나중에 따로 깊게 공부하면 될 것 같음
이제 객체들은 무조건 퍼블릭이라는 것은 아니고 퍼블릭이 될 수 있어짐
지금 다시 객체 URL로 접근해도 아직 접근이 불가능 함
강의 상에는 밑 사진에 체크한 부분이 'ACL을 사용하여 퍼블릭으로 설정'이 아닌 그냥 '퍼블릭으로 설정' 버튼이고 그 버튼을 통해 퍼블릭으로 설정할 수 있었음
그러나 지금은 그러한 기능은 없어지고 꼭 ACL을 사용해야만 퍼블릭으로 바꿀 수 있는 것 같음
+) 버킷 생성할 때 아래 사진처럼 ACL 활성화, 퍼블릭 액세스 차단 해제를 하고 생성하니 이제 'ACL을 사용하여 퍼블릭으로 설정' 버튼이 활성화가 되어 있었음
그러면 이제 객체 URL로 접근을 하면 사진이 잘 뜨는 모습을 확인할 수 있었음
또한 객체 URL이 https임
위에서처럼 퍼블릭으로 설정한다면 ACL을 이용해서 모든 사람에게 읽기 권한을 주는 것임
public하게 올린 파일의 상세정보에서 권한 탭을 보면 아래와 같이 ACL에 객체 소유자, 모든 사람, 인증된 사용자 그룹의 정보가 존재함
리눅스 파일 관리에서 소유자, others, group으로 구분되는 것과 비슷함
객체 소유자인 나는 읽기가 가능하고, 객체 ACL 자체에 대해 읽기와 쓰기가 가능함
public하게 설정했기 때문에 모든 사람이 객체에 대해 읽기가 가능한 모습
만약 public하게 설정하지 않았다면 모든 사람의 객체 권한에 아무것도 없을 것임
편집
버튼을 눌러 직접 ACL을 편집해줄 수 있음
bucket policy는 말 그대로 bucket에 붙이는 정책
여러 개를 붙일 수 있음
일단 'public' 폴더(prefix)를 만든 후 파일을 추가해 주었음
그 후 버킷 상세 정보에서 권한 탭에 들어가면 아래와 같이 '버킷 정책' 부분이 있음
편집
버튼을 눌러 정책을 추가해보자
직접 타이핑해도 되지만, 정책 생성기를 통해 쉽게 정책을 추가할 수 있음
그러면 아래와 같은 웹앱이 뜸
처음으로 선택할 수 있는 Type of Policy는 어떤 정책을 선택할 것인지에 대한 옵션
그 중에 우리는 S3 Bucket Policy
를 선택
그 후 Effect는 허용해 줄 것이므로 Allow
선택
Principal은 모두를 뜻하는 *
입력
AWS Service는 Amazon S3
고정
Actions는 어떤 권한을 줄 것인지로, AWS S3의 API 모음집임
객체에 접근하는 GetObject
권한을 선택해주면 됨
ARN에는 {내 버킷 ARN}/{폴더 이름}/*
을 입력해주면 됨
버킷 이름이 test-bucket이라면 아마 arn:aws:s3:::test-bucket/public/*
와 같은 형식이 될 것
이제 다 입력했으면 Add Statement
버튼으로 추가해주면 됨
추가 후 Generate Policy
버튼을 누르면 아래와 같이 생성된 정책을 볼 수 있음
이 것을 그대로 복사해서 버킷 정책에 그대로 복사해주면 됨
이제 public 폴더 안의 객체에 접근을 해보면 따로 ACL을 직접 설정해주지 않아도 접근이 가능함을 알 수 있음