AWS) S3 생성
이번에 새로운 프로젝트를 하면서 이미지를 s3로 업로드 하는 api를 만들어야됐다.
이전에는 strapi에서 시도했었는데 이번에는 nestjs에서 s3로 업로드를 하는 것을 개발해야 해서 개인 aws 프리티어 개설부터 시작해서 s3 버킷을 만들었다.
먼저, s3 버킷부터 만들어보자.
1단계 : AWS 회원가입 및 로그인
이 단계에서는 굳이 자세한 설명은 필요하지 않으므로 넘어간다.
2단계 : s3 접속 후 버킷 만들기를 클릭한다.
여기서는 버킷을 선택해야 되는데 나는 원래 유럽쪽이였다가 이번에 아시아 태평양(서울)로 지정하였다.
3단계 : 객체 소유권 지정
객체 소유권을 설정하는데, 나는 내 aws 계정으로 ec2를 만들고 한 계정으로 관리를 할 것이기 때문에 ACL을 비활성화 하였다. 아마 회사나 다른 사람과 협업 등을 하려면 해당 부분을 좀 수정할 필요가 있다.
나는 퍼블릭 엑세스 권한을 설정해두었는데 이는 엑세스 권한을 모두에게 오픈할 것인지 아닌지에 대해 설정하는것이다. 모든 퍼블릭 에세스 차단을 하면 모든 접근이 차단되기 때문에 필요한 것만 체크하자.
4단계: 버킷 버전 관리
이 부분은 버킷에 대해 버전관리를 하는 것인데, 나는 돈도 없고 굳이 필요성을 못느껴서 패스하였다.
5단계: 기본 암호화
여기서 기본 암호화를 활성화 하면 버킷에 저장되는 모든 새 객체를 암호화하여 저장한다.
또한 객체를 다운로드할 때 복호화해서 제공해준다.
이렇게 하면 일단 버킷을 생성하는 것은 끝났다.
버킷을 생성 후에는 아래와 같이 버킷이 나올텐데 여기서 권한 > 버킷정책 > 편집클릭 > 버킷 ARN 복사 > 정책 생성기 를 클릭한다.
정책 생성기를 클릭하면 아래와 같이 나오는데 다음과 같이 실행한다.
1. Select Type of Policy 에서 S3 Bucket Policy 선택
2. Principal에서 * 를 입력한다.
3. Actions 에서 Get Object, Put Object를 선택
4. Amazon Resource Name (ARN) 에 위에서 복사한 ARN을 입력한 후 뒤에 /*를 붙여준다.
5. Add Statement를 클릭
그러면 아래의 Json을 복사해둔다.
위에서 복사한 json을 버킷 정책 편집 페이지에서 json을 붙여넣기 해준 후 변경 사항을 저장한다.
이렇게 하면 퍼블릭 엑세스 라는 기능이 표시되면서 S3를 퍼블릭으로 이용 가능하다.
혹시나 버킷 정책을 입력하고 변경사항 저장을 하시려 할때
Action does not apply to any resource(s) in statement 에러가 발생하셨다면
버킷 정책의 Resource에 있는 value 즉 arn값 뒤에다가 /*를 붙여주고 변경사장 저장을 클릭하시면 퍼블릭으로 변경 됩니다~