
백엔드 개발자를 준비하며 생기는 의문들을 정리한 포스트입니다.
이전 포스트에서 AWS S3의 서비스에 대해 그리고 파일이 업로드 되는 방식들을 알아 보았습니다.
이번 포스트에서는 S3에 이미지를 올리기 전 AWS에서 설정해야 하는 것들을 정리하였습니다.
먼저 AWS Console - Signup 에 접속해서 아이디를 만들어주도록 합시다.
해외 카드 등록도 해야하니 본인의 카드를 등록해주도록 합시다.

가입에 성공했다면 오른쪽 위 내 보안 자격 증명에 들어가 root 아이디에 대해
멀티 팩터 인증(MFA)를 적용해주도록 합시다.
이는 2차 인증과도 같은 것인데 AWS 같은 온라인 서비스들을 이용하다보면 아이디가 탈취당했을 때
엄청난 비용의 과금이 나올 수 있으니 꼭 보안 설정을 해둡시다.
현재 가입한 계정은 모든 권한이 있는 root 계정입니다.
IAM 계정은 root 계정에서 선택한 AWS 리소스에 대한 엑세스가 지정된 웹 서비스만 이용 가능한
계정입니다. 따라서 권한이 있는 대상만을 제어하기 때문에 보안적으로 유리합니다.

위에 검색 바에서 IAM을 검색해 들어간 뒤

사용자 생성 탭에 들어가 사용자 이름을
admin으로 한 뒤
다음과 같이 빨간 체크박스에 있는 부분을 클릭하여 내가 접속할 사용자 지정 암호를 적어둡시다.
만약 협업을 할 때 IAM 계정을 다른 개발자 분에게 나눠준다면 마지막 체크박스를 사용하는 것을 권장합니다.

다음 권한 설정으로 들어가 AWS에서 가장 강력한 권한인 AdministratorAccess 를 부여해줍니다.
이는 root의 권한과 마찬가지로 모든 권한을 제어할 수 있는 관리자 권한을 주는 것과 동일합니다. 본인이 사용하는 계정이니 이러한 권한을 부여했지만 필요한 권한에 대해서만 권한을 부여하도록 합시다.

다음과 같이 버튼을 눌러 사용자 생성을 마칩시다.
이후 오른쪽 상단에 있는 본인의 계정 ID 12자를 꼭 복사하여 admin 계정에 접속합니다.

본인의 ID 12자와 함께 IAM username
admin과 본인이 지정한 패스워드로 접속합니다.

이후 접속된 admin 계정 검색바에 S3를 검색하여 들어갑니다.

버킷 만들기를 눌러줍니다.

버킷 이름은 다른 사용자들과 이름을 공유하기 때문에 일단 실습을 위해
아무렇게나 이름을 작성하여 만들어주도록 합시다.

여기서 아래에 내리다보면 퍼블릭 엑서스 설정이 있는데
필자는 이미지만 업로드하는 것이 목적이기 때문에 권한 차단을 해제하고 생성하였습니다.

이때 버킷을 현재 생성하는 지역이 서울인지 꼭 확인해줍시다.
현재 생성된 S3 버킷에 대한 정책 설정을 해줄 것인데 이는 올라간 이미지에 대한
Url을 만들기 위한 규칙을 나열한 Json 파일입니다.
설정은 주석과 같습니다.

해당 권한 탭에 들어가 버킷 정책 편집을 들어가 다음과 같이 작성해줍니다.
{
"Version": "2012-10-17", // 정책 버전
"Id": "AdminUploadPublicRead", // 정책 식별자
"Statement": [ // 권한 규칙을 정의하는 배열
{
"Sid": "AllowPutObjectAndAclForAdmin", // 첫 번째 규칙의 식별자
"Effect": "Allow", // 허용 (Deny는 거부)
"Principal": "*", // 모든 사용자에게 적용
"Action": [ // 허용되는 S3 작업 목록
"s3:DeleteObject", // 객체 삭제
"s3:GetObject", // 객체 읽기(다운로드)
"s3:PutObject" // 객체 업로드
],
"Resource": "[본인 ARN]/*" // 권한이 적용될 리소스
},
{
"Sid": "AllowPublicReadAccess", // 두 번째 규칙의 식별자
"Effect": "Allow", // 허용
"Principal": "*", // 모든 사용자에게 적용
"Action": "s3:GetObject", // 허용되는 S3 작업 (객체 읽기)
"Resource": "[본인 ARN]/*" // 권한이 적용될 리소스
}
]
}

버킷 ARN은 입력 바로 위에 있으니 복사한 뒤
/*를 꼭 붙여줍니다.

S3에 대해 관리할 IAM 계정을 하나 더 생성합니다.

여기에 권한은 AmazonS3FullAccess 만 주어 S3에 대해 관리할 수 있도록 합니다.

계정이 생성되었다면 보안 자격 탭에 들어가 엑세스 키를 하나 생성하도록 합니다.
이는 이미지 업로드 할 때 bean에 등록하여 aws에 접속할 수 있도록 하기 위함입니다.



만들어진 엑세스 키에 대해서도 두 개 모두 복사해서 잘 보관하도록 합니다.
이로써 AWS 에 S3 설정이 모두 완료되었습니다.