1. 문제 정의
TODO.1 카드의 Attachment기능 부분을 구현함에 있어 파일을 aws의 버킷에 저장을 하여 URL주소를 받아오는 것 까지는 잘 수행되었으나 해당 URL로 접속을 하여도 이미지가 보이지 않고 ACCESS DENIED가 발생하는것을 발견
(캡처를 못해 Board에서 똑같은 문제발생 화면으로 대체 )
2. 원인
AWS의 버킷에 저장하고 url을 가져오는 것 까지는 문제없이 잘 되는 상황이다.
해당 url로 이동을 하여 보여지는 화면에서 AccessDenied라는 오류 코드를 확인할 수 있었다.
그렇다면 해당 Access에 접근하는 권한이 없다는 소리가 아닐까 생각했다.
3. 해결방안
구글링을 통해 버킷의 '퍼블릭 액세스 차단(버킷 설정)' 부분을 건드려주면 된다는 것을 확인했다.
기존 상태의 설정으로 모든 퍼블릭 액세스 차단이 되어있었고 이를 풀어주었다.
4. 테스트
여전히 똑같은 문제가 발생했다..
5. 해결방안 2
다시 구글링을 통해 한가지 글을 발견했다.
바로 버킷 정책을 설정해주라는 글이었다.
Principal : * 이 모든 사용자를 지칭하는 것이고
Action : s3:GetObject가 객체를 가져오는 작업을 말한다 .
Resource는 해당 객체가 들어있는 경로를 지칭하고 있다.
따라서 이 정책을 해석해보면 이 객체를 사용하는 모든 사용자에게 객체를 가져오는 작업을 허용한다는 내용이다.
6. 테스트 2
해당 작업을 수행하고 다시 테스트를 진행해 주었다.
해당 이미지가 잘 나타나는 것을 확인할 수 있었다.
7. 결론
버킷에 각종 파일들을 저장하고 주소를 불러오는 작업은 마음대로 할 수 있지만 해당 파일을 불러와서 보여주거나 하는 일을 처리하기 위해서는 Access권한 및 정책 설정을 외부 사용자가 이용할 수 있도록 만들어 주어야 한다.
{
"Version": "2012-10-17",
"Id": "Policy1735440181945",
"Statement": [
{
"Sid": "Stmt1735440180237",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::onerproject/*"
}
]
}
버킷 정책 사용해보고 싶으면 이대로 사용해보면 될 것 같다.