Infra/클라우드

AWS 클라우드 컴퓨팅 & S3 구축

Surge100 2022. 7. 31. 18:06

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

[출처 -https://www.inflearn.com/course/%ED%83%84%ED%83%84%ED%95%9C-%EB%B0%B1%EC%97%94%EB%93%9C-%EB%84%A4%EC%8A%A4%ED%8A%B8/dashboard]