저장을 습관화
NestJS - multer를 사용하여 S3에 데이터 저장 1 본문
지난 multer 사용에 이어서..
NestJS - multer를 이용한 미디어 파일 서비스
공식문서 https://docs.nestjs.com/techniques/file-upload Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeSc
ctrs.tistory.com
Amazone S3 접속
https://s3.console.aws.amazon.com/s3/get-started?region=ap-northeast-2
https://s3.console.aws.amazon.com/s3/get-started?region=ap-northeast-2
s3.console.aws.amazon.com
'버킷 만들기'
'이 버킷의 퍼블릭 액세스 차단 설정'
-> '모든 퍼블릭 액세스 차단' 체크 해제
-> '현재 설정으로 인해 이 버킷과 그 안에 포함된 객체가 퍼블릭 상태가 될 수 있음을 알고 있습니다' 체크
'버킷 만들기'
버킷 목록에서 생성한 버킷 클릭
권한
버킷 정책 -> 편집
정책 에제
'Granting permissions to multiple accounts with add conditions'의 양식을 참조하여
정책을 생성한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action":[
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::ctrs-test/*"
}
]
}
이미지 데이터를 가져오는 GetObject와, 이미지 데이터를 추가하는 PutObject 작업에 대하여
"*"(모든 사람)을 대상으로 퍼미션(허가)을 추가해주는 작업을 한다는 의미이다.
변경 사항 저장
이 후, 우측 상단 사용자 이름 클릭 -> 보안 자격 증명 클릭
액세스 키 -> 액세스 키 만들기
'비밀 액세스 키'를 복사, 완료
이 내용은 절대로 외부로 유출이 되어서는 안되니 주의
이후 프로젝트의 .env에 내용 추가
AWS_S3_ACCESS_KEY:"(액세스 키)"
AWS_S3_SECRET_KEY:"(비밀 액세스 키)"
AWS_S3_REGION:"ap-northeast-2"
AWS_S3_BUCKET_NAME:"ctrs-test"
region과 bucket name은 버킷에서 확인
[추가]
현재 상태로 사용하면 "File upload failed : AccessControlListNotSupported: The bucket does not allow ACLs" 라는
에러 메세지가 출력된다.
이를 수정하기 위해서 버킷 -> 권한
-> 객체 소유권 -> 편집
'ACL 활성화됨'과 'ACL이 복원된다는 것을 확인합니다.'를 선택하고,
변경 사항 저장을 누른다.
뒤에서 수정하지 말고 아예 버킷을 생성할때 ACL을 활성화해주도록 하자
이로써 AWS에서 데이터를 받을 준비는 모두 완료되었다.
다음은 AWS-SDK를 사용하도록 프로젝트 내용 수정해주도록 한다.
'공부 > node.js' 카테고리의 다른 글
NestJS - 네임스페이스와 생명주기(Lifecycle) 메모 (0) | 2023.10.19 |
---|---|
NestJS - socket.emit, socket.on 연습 기록 (0) | 2023.10.19 |
NestJS - multer를 이용한 미디어 파일 서비스 (0) | 2023.10.09 |
NestJS - Swagger를 사용해서 API 문서 만들기 (0) | 2023.10.04 |
NestJS - 회원 가입 API 개발시 패스워드 암호화하기, mongoose virtual field 사용하기 (0) | 2023.10.02 |