ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS - S3 + CloudFront (with Spring-Boot)
    정글 크래프톤 5기 회고 및 정리/AWS 2024. 6. 19. 15:52

    정글 크래프톤에서  AWS 교육을 한 후 실습 계정을 3일동안 제공해줬다.

    해당 실습 계정은 상위에서 control하는 SCP 정책에 따라 일부 서비스들만 사용이 불가한다고 했다.

    그럼 거의 접해볼 수 있는 AWS 서비스들은 다 만져볼 수 있지 않을까?

    그래서 먼저 S3와 CloudFront를 다뤄볼려고 한다.


    1. IAM

    # application.yml
    cloud:
      aws:
        credentials:
          access-key: temp                      # IAM 계정의 accessKey
          secret-key: temp                      # IAM 계정의 secretKey
        region:
          static: us-east-1                     # 버킷의 리전
        s3:
          bucket: temp                          #  버킷 이름
        stack:
          auto: false
        cloud_front_url: https://temp.cloudfront.net/

    - Spring-Boot에서 AWS 서비스에 접근하기 위해서 access-key와 scret-key가 필요하다.

    - 해당 두 키는 IAM에서 계정을 만듬으로써 얻을 수 있는 키이다.

     

    - 나는 따로 그룹을 만들어주지 않고 바로 정책을 연결하는 방식을 선택했다.

    - S3와 CloudFront를 사용하기 위해 2가지에 대한 권한을 체크 후 사용자 생성을 한다.

        · ( AmazonS3FullAccess, CloudFrontFullAcess )

     

    - 다음과 같이 행동하면 키들을 얻을 수 있다.


    2. S3

    - 버킷을 만든 후 버킷 이름을 application.yml 에 추가해준다.

    - 해당 게시물에는 spring-boot 관련한 코드들은 따로 다루지 않겠지만 마지막에 github 코드를 남겨두겠다.

     


    3. CloudFront

    - CDN(콘텐츠 전송 네트워크, content delivery network) 간단히 말하면 지리적으로 분산된 여러 개의 서버로 사용자에게 웹 콘텐츠를 효율적으로 제공할 수 있는 서버의 분산 네트워크라고 한다.

    - CloudFront는 AWS에서 제공하는 CDN으로 S3에 계속 접근하는 것보다 비용을 줄일 수 있고 성능을 높일 수 있기에 사용한다.

     

    위의 Origin domain을 선택하면 생성되는 설정입니다.

     

    - 생성 후에는 S3와 CloudFront를 연결시켜주기 위해 CloudFront의 정책을 S3에 적용시켜준다.

     

    - 다음 같은 설정이 끝난다면 

    S3
    기존
    https://{s3 버킷 이름}.s3.ap-northeast-2.amazonaws.com/image/{req.file.key};
    CloudFornt
    적용
    https://{배포 도메인 이름}/{req.file.key};

     

     

Designed by Tistory.