-
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};