aws configure --profile [IAM 사용자 이름] Key ID : IAM 사용자 추가할 때 다운받았던 CSV 파일의 Access key ID Access Key : IAM 사용자 추가할 때 다운받았던 CSV 파일의 Secret access key region name : ap-northeast-2output format : json
- Uploading
// package.json
{
...
"script": {
...
"deploy": "aws s3 sync ./dist s3://[S3 버킷 이름] --profile=[IAM 사용자 이름]"
}
}
// ./dist는 vite를 사용해서 그런거고 CRA를 이용했다면 ./build로 나올 것임
✅ CloudFront에 배포하기
📦 CloudFront의 이점?
성능 정적 리소스에 대해 캐시를 사용하여 데이터를 관리할 수 있으며 캐시를 짧게 하거나 날리는 등 적절하게 설정한다면 성능상 많은 개선을 할 수 있다.
보안 CloudFront만을 통해서 유저가 S3로 접근할 수 있어 보안을 높일 수 있다(public Access를 비활성화할 수 있다.)
글로벌 서비스 CloudFront는 생성한 region에 속하지 않고 엣지 로케이션이라는 캐싱 서버에 캐싱되기에 전 세계 사용자들에게 빠르게 응답할 수 있다.
📦 CloudFront배포 생성
AWS > CloudFront > 배포 > 생성
Origin domain에 대해 S3 버킷을 선택한 뒤 버킷을 CloudFront에서만 접근할 수 있게 하기위해 원본 엑세스 설정 후 OAC를 생성하자
Origin Shield를 활성화함으로 엣지 로케이션에서 가져오는 콘텐츠의 요청을 최적화할 수 있다.
여러 지역에 엣지 로케이션이 존재하고 요청하는 객체를 캐시에 가지고 있지 않을 때에는 각 엣지 로케이션이 동시에 Origin으로 요청을해서S3 버킷에 대해 과부화가 일어날 수 있다. 이때 Origin Shield가 있다면 요청은 Shield로 가게되고 Origin Shield가 S3 버킷에서 객체를 가져오게 된다.모든 엣지 로케이션은 Shield로 요청을 하므로 S3에 대한 부하를 줄일 수 있고 이를 통해 전번적인 성능과 신뢰성을 향상시킬 수 있다.
기본 캐시 동작은 뷰어 프로토콜 정책만 변경 후 나머지는 기본값으로 사용한다.
WAF는 악의적인 HTTP/S 트래픽을 필터링, 모니터링 및 타단하여 웹 앱을 보호하고, 승인되지 않은 데이터가 앱에서 나가는 것을 방지하지만 비용이 청구되는 옵션이기에 비활성화
배포 완료 후 사용자 정의 오류 응답편집을 설정하여 마무리를 하면 된다.
이후CloudFront의 배포 도메인을 통해서 접근할 수 있다.
✅ Github Action으로 CI / CD 구축
📦 CI / CD(Continuous Integration / Continuous Deployment)란?
지속적 통합은 개발 팀이 코드를 지속적으로 통합하고 이를 자동으로 테스트하여 버그를 최소화하는 프로세스이다. 코드 변경 시(push)에 자동으로 빌드 및 테스트를 진행하여 프로덕트 품질 관리 및 버그 발견이 빨라질 수 있으며,지속적 배포를 통해 새로운 기능을 사용자에게 빠르게 전달하고 구축 시간을 단축시킬 수 있습니다.
github aciton뿐만아니라 Jenkins, Travis... 여러 CI / CD 툴이 존재한다.
위와 같은 도구를 통해서 배포에 대한 파이프라인을 설정한다.
파이프라인 구축을 통해 불필요한 비용도 줄이고, 개발에만 집중할 수 있는 환경을 조성할 수 있다.