-
[Bug Fix] AWS S3 ACL Error: The bucket does not allow ACLsFront-end 개발 2024. 2. 24. 04:30
AWS S3와 MongDB 그리고 Express을 조합하여 웹 어플리케이션을 만들고 있는 중이다.
그런데 위 이미지와 같은 문제가 발생했다.
AWS는 설정할 수 있는 항목도 많고 처음 만져보는 거라, 이런 Error가 발생해서 정말 머리가 아팠다.
AWS 관련된 ejs 파일이나 config 파일에서 오타가 났는지 열심히 뒤졌다. IAM 액세스 키에 문제가 있는지 찾아보기도 하고, 에러 문구에 ACL(Access Control List)가 지원되지 않는다고 해서 원인이었던 '객체 소유권'은 못보고 그 아래에 있던 항목들을 어떻게 바꿔야 하는지 찾으며 고생했다.
답을 못찾아서 구글에 검색해봤더니 바로 답이 나왔다... (빨리 검색해볼껄)
Problem
AccessControlListNotSupported: THe bucket does not allow ACLs
원인
AWS S3 bucket > 권한 > '객체 소유권' 설정 문제
객체 소유권 설정이 ACL 비활성화됨(권장)으로 설정 되어 있으면 해당 문제가 발생한다.
즉, 로컬 코드 또는 외부 어플리케이션이 버킷과 그 객체에 액세스 할 수 없다.Solution
버킷의 객체 소유권 항목을 활성화 하면 문제는 해결된다.
AWS S3 bucket > 권한 > '객체 소유권'을 찾아 '편집'으로 설정을 변경한다.
설정은 아래 이미지와 같이 변경하면 된다.
('ACL 비활성화됨(권장)'을 'ACL 활성화됨'으로 변경)
버킷 생성 후 초기 권장 설정은 '버킷 소유자 적용 설정'으로 되어 있다. 이 설정은 버킷 생성 계정만이 버킷과 그 객체에 대한 소유 및 액세스 권한을 가진다. 즉, 다른 AWS 계정이나 외부의 액세스는 불가능해진다.
변경한 설정은 ACL(액세스 제어 목록)과 관련 권한이 활성화되며, 소유하지 않은 객체에 대한 액세스가 ACL 기반으로 가능해진다. 즉, 내가 IAM을 통해 생성한 사용자(AmazonS3FullAccess 권한)가 접속할 수 있게 된다.
Reference
https://fun-coding-study.tistory.com/324
'Front-end 개발' 카테고리의 다른 글
[Copilot] JS에서 함수는 세미콜론(;)을 붙이지 않는 이유 (0) 2024.03.13 [TS] 유틸리티 타입 (0) 2024.02.29 [TS] Promise에서 Generic과 제네릭의 제약 조건 (0) 2024.02.16 [멋쟁이빌더] 사전 설명회 (0) 2024.02.07 [멋쟁이빌더] 지원 (탈락 ㅠ) (0) 2024.02.05