Closed Kim-youngjae closed 1 year ago
closed #101
기존의 로컬에서 이미지 파일을 업로드하고 불러오는 로직으로 구현되어 있었다.
이를 배포 시 서버 스토리지(S3) 에서 가져와 사용할 수 있도록 S3 API 를 스프링 부트에 연동하여 이미지 업로드가 잘 되는지 테스트를 진행하였다.
처음 API 연동을 하는데 있어 어려움이 많았는데 @duswnsxnxn 께 많은 도움을 받았다.
구현한 내용에서 문제점은 다음과 같았다.
com.amazonaws.services.s3.model.AmazonS3Exception: The bucket does not allow ACLs (Service: Amazon S3; Status Code: 400; Error Code: AccessControlListNotSupported; Request ID: ECWDZKD95SFQNE7B; S3 Extended Request ID: Lyy8ya1kOYoj5oNlu6FQPFynTPTjpUahryB0uLqP5mxIbkVlAQ7HD4aLk1JzMJjDhLBz18e9xadnhGP/fEyQ9g==; Proxy: null)
이런 예외가 발생하였다.
발생하는 이유를 찾기 위해서는 자바 라이브러리를 계속 파고 들어가는 수 밖에 없는 한계가 있어서 정책 설정을 다시 보니
이미 퍼블릭 액세스를 허용한다고 설정 되어 있었지만 .withCannedAcl(CannedAccessControlList.PublicRead) 메서드로 인해 예외가 발생하는 것이었다.
그래서 권한 정책에 putObjectAcl 정책을 추가해주고 ACL 설정까지 활성화 해주어서야 이 메서드가 제대로 동작을 하였고
[권한 정책 추가]
[ACL 활성화]
ACL 설정을 비활성화 할 것을 AWS 에서 권장하니 메서드를 굳이 추가해줄 필요는 없다고 생각했습니다..
그래도 S3 연동을 하고 이미지 업로드를 해보면서 발생할 수 있는 문제에 대해 고민해볼 수 있는 시간이 되어서 좋았습니다.
에러 로그
테스트 및 공부를 목적으로 발행한 PR 입니다. 참고만 해주시고 병합 하시면 안됩니다...!!
📌 관련 이슈
closed #101
✨ 과제 내용
기존의 로컬에서 이미지 파일을 업로드하고 불러오는 로직으로 구현되어 있었다.
이를 배포 시 서버 스토리지(S3) 에서 가져와 사용할 수 있도록 S3 API 를 스프링 부트에 연동하여 이미지 업로드가 잘 되는지 테스트를 진행하였다.
처음 API 연동을 하는데 있어 어려움이 많았는데 @duswnsxnxn 께 많은 도움을 받았다.
구현한 내용에서 문제점은 다음과 같았다.
이런 예외가 발생하였다.
발생하는 이유를 찾기 위해서는 자바 라이브러리를 계속 파고 들어가는 수 밖에 없는 한계가 있어서 정책 설정을 다시 보니
이미 퍼블릭 액세스를 허용한다고 설정 되어 있었지만 .withCannedAcl(CannedAccessControlList.PublicRead) 메서드로 인해 예외가 발생하는 것이었다.
그래서 권한 정책에 putObjectAcl 정책을 추가해주고 ACL 설정까지 활성화 해주어서야 이 메서드가 제대로 동작을 하였고
[권한 정책 추가]
[ACL 활성화]
ACL 설정을 비활성화 할 것을 AWS 에서 권장하니 메서드를 굳이 추가해줄 필요는 없다고 생각했습니다..
그래도 S3 연동을 하고 이미지 업로드를 해보면서 발생할 수 있는 문제에 대해 고민해볼 수 있는 시간이 되어서 좋았습니다.
📸 스크린샷(선택)
에러 로그
📚 레퍼런스 (또는 새로 알게 된 내용) 혹은 궁금한 사항들