AWS S3 이미지 업로드 - S3 버킷 만들기

박영준·2023년 7월 17일
0

Spring

목록 보기
42/58

S3 버킷 만들기

1. 버킷 만들기

1)

AWS 에서 S3 를 검색해서 들어가기

2)

3)

버킷 이름AWS 리전 은 application.properties 에 설정할 때 필요하므로 기억해두자.

4)

객체 소유권을 ACL 활성화됨 으로 체크하자.

The bucket does not allow ACLs 에러

원인
만약, 'ACL 비활성화됨' 으로 버킷을 만들 경우
Postman 으로 이미지 파일을 요청보낼 때 The bucket does not allow ACLs 이러한 에러 메시지가 나타나게 된다.

해결법
이미 'ACL 비활성화됨' 으로 생성돼있는 버킷으로 들어가서 > 권한 > 객체 소유권 > 편집 에서
'ACL 활성화됨' 으로 변경해줄 수 있다.

5)

체크 모두 해제해준다.

6)

다른 설정은 그대로 두고, 버킷을 만들어준다.

그러면 버킷일 생성된것을 확인 할 수 있다.

보안상 '기본 암호화'를 활성화를 하는 게 좋다고 한다.

2. 버킷 정책 만들기

1)

생성해둔 버킷 > 권한 > 버킷 정책 > 편집

2)

버킷 ARN 을 복사 > 정책 생성기 로 들어간다

3)

아래처럼 입력 및 체크해준 후, Add Statement 를 누른다.

Select Type of Policy : S3 Bucket Policy 를 선택

Principal : * 를 입력

Action : GetObject 에 체크

ARN : 복사해둔 버킷 ARN 붙여넣기

4)

그러면 입력 및 체크해둔 정보를 바탕으로 정책을 생성해준다.

5)

해당 정책을 모두 복사 > Close > 다시 버킷 정책 편집 으로 돌아간다.

6)

복사한 정책을 아래에 그대로 붙여넣고 > 변경 사항 저장

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/*" 처럼 할 수 있다.

3. 사진 업로드

해당 버킷에 사진을 업로드해서 정상적으로 버킷과 연결이 되었는지 확인하면 된다.

1)

생성해둔 버킷 > 업로드

2)

업로드한 사진 > 객체 URL 로 들어갔을 때, 업로드한 사진을 볼 수 있다면 정상적으로 연결된 것이다.

배포한 사이트에 이미지 업로드

참고: AWS S3 이미지 업로드 - 배포한 사이트에 이미지 업로드


참고: AWS - S3 사용하기 (버킷 만들기)
참고: The bucket does not allow ACLs
참고: [AWS] S3 bucket policy (S3 버킷 정책)

profile
개발자로 거듭나기!

0개의 댓글