AWS 에서 S3
를 검색해서 들어가기
버킷 이름
과 AWS 리전
은 application.properties 에 설정할 때 필요하므로 기억해두자.
객체 소유권을 ACL 활성화됨
으로 체크하자.
The bucket does not allow ACLs 에러
원인
만약, 'ACL 비활성화됨' 으로 버킷을 만들 경우
Postman 으로 이미지 파일을 요청보낼 때The bucket does not allow ACLs
이러한 에러 메시지가 나타나게 된다.해결법
이미 'ACL 비활성화됨' 으로 생성돼있는 버킷으로 들어가서 > 권한 > 객체 소유권 > 편집 에서
'ACL 활성화됨' 으로 변경해줄 수 있다.
체크 모두 해제해준다.
다른 설정은 그대로 두고, 버킷을 만들어준다.
그러면 버킷일 생성된것을 확인 할 수 있다.
보안상 '기본 암호화'를 활성화를 하는 게 좋다고 한다.
생성해둔 버킷 > 권한 > 버킷 정책 > 편집
버킷 ARN 을 복사 > 정책 생성기 로 들어간다
아래처럼 입력 및 체크해준 후, Add Statement 를 누른다.
Select Type of Policy
: S3 Bucket Policy 를 선택
Principal
: * 를 입력
Action
: GetObject 에 체크
ARN
: 복사해둔 버킷 ARN 붙여넣기
그러면 입력 및 체크해둔 정보를 바탕으로 정책을 생성해준다.
해당 정책을 모두 복사 > Close > 다시 버킷 정책 편집 으로 돌아간다.
복사한 정책을 아래에 그대로 붙여넣고 > 변경 사항 저장
Action does not apply to any resource(s) in statement 에러
원인
생성된 정책에서 Resource 를 보면"Resource": "arn:aws:s3:::post-bucket-test",
와 같다.
이대로 사진을 업로드 할 경우엔 위와 같은 에러 메시지가 발생하는데, resource의 경로를 지정해주지 않았기 때문이다.해결법
버킷 전체에 접근이 가능하게 하고 싶다면,"Resource": "arn:aws:s3:::post-bucket-test/*"
끝에*
를 붙여준다.
폴더를 지정하고 싶다면,"Resource": "arn:aws:s3:::post-bucket-test/postFolder/*"
처럼 할 수 있다.
해당 버킷에 사진을 업로드해서 정상적으로 버킷과 연결이 되었는지 확인하면 된다.
생성해둔 버킷 > 업로드
업로드한 사진 > 객체 URL 로 들어갔을 때, 업로드한 사진을 볼 수 있다면 정상적으로 연결된 것이다.
참고: AWS S3 이미지 업로드 - 배포한 사이트에 이미지 업로드
참고: AWS - S3 사용하기 (버킷 만들기)
참고: The bucket does not allow ACLs
참고: [AWS] S3 bucket policy (S3 버킷 정책)