AWS S3 Bucket 업로드 후 접근 오류
다음과 같은 화면을 보았습니다.
어떤 오류인지 확인해본 결과 접근하려던 URL에 대한 접근 권한이 없다는 것을 알게되었습니다.
그래서 권한을 주도록 해보겠습니다.
권한을 주려고 하니까 간단하게 JSON형식으로 bucket 전체 파일에 대한 퍼미션을 만들 수 있게 만들 수 있습니다.
일단 해당 bucket으로 들어가서 우 상단 쯤에 있는 Properties 탭을 누르면, 다음과 같은 내용을 볼 수 있습니다.
여기서 Permissions를 들어가고 Edit bucket policy를 눌러서 들어갑니다.
다음과 같은 창이 나타나는데, 여기서 좌측 하단에 "AWS Policy Generator"을 눌러주면 쉽게 JSON으로 버킷의 권한을 설정하는 페이지가 나타납니다.
다음 페이지가 버킷의 권한을 설정하는 페이지입니다.
1) Select Type of Policy : S3 Bucket Policy // S3 Bucket에 대한 정책을 사용하기 위해서 바꾸어 줍니다.
2) Effect : Allow // 허용 정책이기 때문에 Allow 선택, 거부.차단 정책은 Deny로 합니다.
3) Principal : * // 접근 권한 사용자에 대한 설정인데 IAM에서 설정한 사용자에 대한 것인데 여기서는 와일드카드인 *를 넣어 주어서 모두 허용합니다.
4) AWS Service : Amazon S3 // 당연히 S3정책이기 때문에 Amazon S3를 넣습니다.
5) Action : GetObject // Object를 읽을 수 있게 허용하는 것입니다.
6) ARN : arn:aws:s3:::<원하는 공개 bucket name>/* // Amazon Resource Name으로 파일 경로로 생각하면 됩니다. 원하는 버킷의 하위 파일들 전체를 명시.
그리고 Add Statement 노란색 버튼을 누르면 하단이 생기면서 정책이 추가가 되는데 이제 Generate Policy(생성)을 누릅니다.
다음과 같이 생성된 모습을 볼 수 있습니다.
생성된 JSON 형식의 정책을 전체를 복사해서, 정책에 붙여넣어줍니다. 그리고 Save를 눌러주면 정책이 적용이 됩니다.
이제 다시 URL에 접근하면 접근이 되는 것을 볼 수 있습니다.
이렇게 정책으로 적용하는 이유는 개발자라면 자세하게 코드로 정책을 바꿀 수 있기 때문입니다.
조금 더 자세히 URL에 들어가자면
URL은 개발자 입장에서 pre-signed URL 과 Link를 두가지로 사용할 수 있습니다.
1) pre-signed URL는 https://버킷이름 로 시작합니다.
2) Link는 https://s3 로 시작합니다.
위에서 과정에서 보았던 것은 2) Link 를 사용하는 방법이었고, 접근권한을 주는 것이었습니다.
위 과정으로 접근 권한을 준다고 1)의 URL의 정책이 활성화되는 것이 아닙니다.
이상 마치겠습니다.