카테고리 없음

Ep5-2. IAM 설정해주기 + 오류 잡기

봄설날 2024. 8. 15. 17:53

이제 버킷 설정은 완료됐다. 하지만 이 버킷을 다른 사용자가 이용하도록 하기 위해서는 아직 권한 설정이 부족하다.

 

IAM 설정을 해줘야 한다.

IAM 이란 Identity and Access Management의 약자로, AWS에서 제공하는 서비스에 대한 엑세스를 안전하게 제어할 수 있는 서비스라는데 '정책'이라는 것을 통해서 서비스를 이용할 수 있고, 없고를 결정한다.

 

정리하자면 IAM을 통해 AWS 서비스에 대한 정책을 결정하고, 키를 발급받아 키가 있으면 서비스를 이용할 수 있는 것이다.

 

#1 IAM 정책 생성하기

1. AWS 에서 IAM에 들어온 후 사용자 -> 사용자 생성을 클릭

 

2. 사용자 이름만 입력하고 다음으로 넘어가자

3. 권한 설정 부분에서 직접 정책 연결 클릭! 이후 정책을 정할 수 있게 밑에 많은 정책 리스트가 뜨는데 검색으로 S3를 검색한 후 AmazonS3FullAccess 정책을 설정해주자

말 그대로 S3에 관련한 모든 권한을 가지겠다는 뜻!

 

이렇게만 하면 기본적인 IAM 설정은 완료되었다.

하지만 아직 키를 발급받지 않았다.

#2 엑게스 키 발급받기

생성된 IAM 정책을 누른 후 아래에 조안 자격 증명을 눌러 밑으로 내리면 엑세스키를 생성해줄 수 있다.

엑세스 키 만들기 클릭!

 

1. 외부에서 실행되는 애플리케이션

 

2. 설명 태그 및 발급 완료

다음에 나오는 설명 태그는 필수 사항이 아니기 때문에 넘길 수 있다. 그렇게 넘어가면 엑세스 키가 생성이 완료되고 다음과 같은 화면을 볼 수 있다.

여기서 비밀 엑세스키와 .csv 파일은 꼭 다운로드 해주다. 이 화면에서 확인하지 않으면 다시 볼 수 없다...

따로 저장을 해두고 만약 키를 잃어버린 경우 다시 만들어야 한다.

 

이제 개발중인 서비스의 코드에 AWS 키, 버킷 이름 등 환경 변수 값들을 설정해서 넣어주면 사용할 수 있다

 

#3 기능 확인 및 오류

버킷 생성 및 여러가지 정책 설정이 끝나 이미지를 S3에 업로드 해보기로 했다. 사용자가 이미지를 업로드 하면 버킷에 저장한 후 버킷에서의 URL을 받아와 DB에 저장되는 코드를 작성하고 실행했다.

 

정상적으로 저장되는 모습을 확인할 수 있었다.

 

하지만 두가지 문제점이 있다!!

 

1. 업로드 시간이 서울 시간으로 입력되지 않았다.

2. 사진 상에서는 URL 전체가 보이진 않지만, 두 이미지가 같은 URL을 가지고 있다. 버킷을 확인해보니 이미지를 올리때마다 같은 URL로 자동으로 덮어쓰기가 되고있었다. 하지만 이렇게 되면 여러 사용자를 받을 수 없기 때문에 URL 설정 방식을 코드상에서 결정해주기로 했다.

 

해결하기

1. 시간 설정의 경우 코드에서 시간을 서울시간대로 하게 한 줄 적어주면 된다. 간단한 해결!

2. URL 중복 문제의 경우 사용자가 업로드 한 사진을 S3에 올릴 때, 이미지의 URL에 UUID값을 추가하여 올리기로 했다. UUID 값은 쉽게 말하면 랜덤값이다. 따라서 사용자가 사진을 올릴 때 마다 이미지의 URL에 랜덤한 숫자와 영어 값이 붙어서 올라가게 되는것이다.

따라서 모든 이미지는 서로 다른 주소값을 갖게 되었고 덮어써지지 않고 모든 이미지가 저장되는 모습을 확인할 수 있었다!!