본문 바로가기
카테고리 없음

AWS S3 access denied 서버에 이미지 등록하는 법[20221210 - TIL]

by 날파리1 2022. 12. 10.

핵심

버킷의 액세스가 아래처럼 퍼블릭이라고 되어있어야 버킷의 객체를 클릭했을때 access denied가 뜨지 않는다.

과정

버킷 명 클릭 -> 상단 권한 클릭 -> 버킷 정책 -> 정책 생성기 클릭

아래를 채워주고

action에 getObject 클릭

ARN 이름은 버킷정책편집 페이지 상단에 버킷ARN 이라고 되어잇는걸 복사해온다.

 

Add statement 클릭하면

나온 정책문구를 복사

저장

아래와 같이 복사해준후 변경사항 저장을 클릭해준다.

Resource 뒤에 /* 라는 문구를 꼭 넣어줘야 저장이 된다.

오류

귀하 또는 귀하의 aws 관리자가 권한을 업데이트하여 s3:putbucketpolicy 작업을 허용하면 [변경 사항 저장]을 선택하세요. amazon s3의 identity and access management 에 대해 자세히 알아보기

 

라는 오류때문에 근데 작동이 안된다. 아직 왜 인지는 모르겠지만

pricipal에 나의 사용자 Iam 아이디를 넣어보니 통과가 되긴된다.

"Principal": { "AWS": "arn:aws:iam:: 내 Iam번호:user/내 iam 아이디이름User" },

이렇게 수정하면 된다.

사용자 문제

인줄알고 아래 정책을 추가해보았지만 상관이 없는 것 같았다.

 

CORS 문제

버킷 정책 아래에 CORS 란이 있어 그것을 추가해야하나 싶었는데 상관이 없다.

추가 정책 입력

사실 아래처럼 입력하고 위의 getObjest 를 입력하니  통과 되었는데 다시 아래 문구를 지우니 되서 뭐가 문젠지 모르겠다.

{ "Version": "2012-10-17",
"Id": "****",
"Statement": [
{ "Sid": "Stmt1666959991796",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::번호:user/User이름" },
"Action": "s3:GetBucketPolicy",
"Resource": "arn:aws:s3:::itaewondictionary" },
	]
}

요약 (수정됨)

객체가 퍼블릭으로 되어있으면 url을 볼 수 있음. 정책 입력시 2가지 getObject 와 GetBucketPolicy를 해주니 되긴 되었는데 후자는 지워도 다시 작동되어서 그 원인인지는 잘 모르겠음.

getObject는 Resource뒤에 /*를 붙여줘야함

principal: "*" 가 안되면 일단 아래 코드를 입력해봄

"Principal": { "AWS": "arn:aws:iam::번호:user/User이름" },

 

위와 같이 해도 안되던 동료가 있다가 문제를 알아보니 Access Denided 는 액세스 권한이 퍼블릭으로 되어있어야한다.

권한에서 퍼블릭 액세스 편집 클릭

위와 같이 

임의의 퍼블릭 버킷 또는 액세스 ~~~~ 교차 계정 액세스 차단 이라는 부분이 반드시 해제가 되어 있어야한다.

그 외적인 부분은 아직까지 상관없는 듯 하다.(불확실하다는말 하지만 아래 체크 란이 퍼블릭의 핵심이긴하다.)

퍼블릭이 되고난 후에는 다른 블로그에서 처럼 추가 정책을 입력해도 문제가 없는 듯 하다.

댓글