저장을 습관화

NestJS - multer를 사용하여 S3에 데이터 저장 1 본문

공부/node.js

NestJS - multer를 사용하여 S3에 데이터 저장 1

ctrs 2023. 10. 14. 20:03

지난 multer 사용에 이어서..

https://ctrs.tistory.com/437

 

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를 사용하도록 프로젝트 내용 수정해주도록 한다.