AWS 클라우드 컴퓨팅 & S3 구축
Amazon S3
서버 컴퓨터를 임대를 해서 그 컴퓨터에 만들어진 API를 열 수 있도록 하면 전세계에 있는 모든 사람들이 해당 API를 사용할 수 있도록 된다.
S3
s3라는 디스크를 사용해서, cloud storage에다가 이미지를 저장한다. 즉 S3는 Storage이다.
버킷 정책 예제
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddCannedAcl",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:root",
"arn:aws:iam::444455556666:root"
]
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": [
"public-read"
]
}
}
}
]
}
버킷 정책 작성하기
AWS_S3_ACCESS_KEY 와 AWS_S3_SECRET_KEY는 S3즉 AWS에 접근할 수 있는 KEY다. 이 KEY를 사용해서 access한 다음에 BUCKET_NAME과 REGION을 통해서 S3에 접근을 해서 S3라는 storage에 이미지,mp4,mp3 파일 등등을 저장할 수 있다. Database에는 S3에 대한 경로가 존재한다. Database에서 받을 때는 그 경로를 받아오면 그 경로를 통해서 프론트에서 S3를 이용해서 이미지를 서빙할 수 있다.
백엔드 Database에는 실제 file들이 저장되어있는 원격의 클라우드의 경로가 들어가 있고, 프론트에서 특정 file을 가져올 때 백엔드에서 보내준 원격의 클라우드의 경로 정보를 이용해서, 클라우드로 부터 file을 가져올 수 있게 되는 것이다.
S3즉 원격의 storage에 image가 저장여부를 나타내는 화면이다.
Multer와 S3를 연동
=> 프론트에서 image를 올리면 백엔드에 연결되 서버의 폴더로 가는 것이 아니라 image가 바로 AWS의 S3로 가도록 설정을 한다.
AWS S3를 위한 env설정
AWS_S3_ACCESS_KEY - access key ID
AWS_S3_SECRET_KEY - 보안 access key
AWS_S3_REGION - 생성한 S3 지역
AWS_S3_BUCKET_NAME - 생성한 S3 이름
KEY를 사용해서 AWS_S3에 접근 할 수 있다. 그 다음 region과 bucket_name을 통해서 특정 S3(storage)에 접근해 imge,mp4 file등을 저장할 수 있는 것이다.
그리고 백엔드 server의 DB에는 S3에 대한 경로를 저장하고, 해당 file에 대한 Request가 오면 저장한 경로를 Response 함으로써 프론트에서 S3에 저장된 file을 불러 올 수 있는 것이다.
버킷의 upload 내역 확인
upload된 file은 객체 형태로 저장되게 될 것이다.
Amazon S3, Amazon Lightsail