AWS S3 버킷 생성

꾸준히·2025년 6월 27일

개인 포트폴리오 사이트에서 프로젝트 데이터들을 별도의 GitHub 레포를 파서 관리했었음.
그런데 문제가 새로운 데이터를 추가할 때나, 수정할 때 용량 제한과 또 레포 자체가 무거워져서 레포 로딩 지옥이 열렸음.

또 Axios로 받아올 때도 속도가 느렸었음.

그래서 이러한 문제로 GitHub에서 AWS S3로 변경하여 프로젝트 데이터들을 관리하기로 함.


AWS S3 버킷 생성

  1. AWS에서 S3 버킷 검색하고, 버킷 생성 누르고 버킷 이름까지 지정
  2. 퍼블릭 설정
    모든 퍼블릭 액세스를 차단하면 모든 접근을 차단하기 때문에, 일단 나는 모두 허용으로 변경함. (세부 사항을 체크하면서 설정하는게 좋음)
  3. 그리고 나머지들은 손 안대고 버킷 생성

나는 이미 만들어둔 버킷이 있어서 그런지 지역 설정이 없는데, 지역 설정은 버킷이 많이 사용 될 지역을 설정하는게 좋음


파일 올리기

버킷이 생성되었으면, 필요한 파일들을 올려줌
나는 각 프로젝트명으로 폴더를 분리해서 올려줬음.


여기까지 아무 설정없이 버킷을 생성하고 axios로 데이터 불러오려고 하면, access Denied임.
이제 퍼블릭 액세스 차단을 해제하기 위해 권한 설정에 들어가야함.


퍼블릭 액세스 차단

이건 처음에 버킷 만들 때, 퍼블릭 액세스 차단 설정을 모두 해제했기 때문에 비활성으로 표시되어 있음.

버킷 정책

편집 누르면 버킷 정책 편집기 화면이 나옴

정책 편집기

그리고 정책 생성기로 이동

정책 생성기

  • Select policy type : S3 Bucket Policy
  • Effect : Allow
  • Principal : *
  • Actions: GetObject
  • ARN : 정책 편집기에 있음

그리고 생성하기 누르면 JSON 형태 문서가 나오는데
Resource의 맨 마지막에 /* 추가하고 정책 편집기에 해당 JSON 붙여넣기


그리고 나는 CORS 에러도 떴었는데, 버킷 권한 설정 맨 마지막 CORS에 해당 내용 추가함

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

결과

이렇게 버킷 설정하고 나면, 해당 S3에 있는 데이터들을 불러올 수 있음.

cloudFront
cloudFront는 아마존에서 제공하는 CDN 서비스인데, 이걸 해주면 훨씬 더 빠르게 글로벌 서빙이 가능함.
그리고 정적 리소스 캐싱도 가능하고, 커스텀 도메인 연결도 가능, 보안에도 좋음

🚀 어떤 경우 CloudFront를 쓰는가:

서비스 / 배포용 / 속도 중요 → S3 + CloudFront 추천

  • 전 세계 사용자 대상이면 (지리적 거리 단축)
  • 같은 이미지 요청이 반복돼서 캐싱 이점이 큰 경우
  • 커스텀 CDN 도메인 (cdn.내도메인.com)을 쓰고 싶을 때
  • S3 접근을 CloudFront로만 허용하고, S3는 비공개로 만들고 싶을 때

그런데 지금 내 포트폴리오 같은 경우에는, 나 혼자 쓰는 소규모 프로젝트라 S3만으로도 충분해서 CloudFront는 안쓰기로 함.

0개의 댓글