GitHub Actions를 활용하여 React 프로젝트를 AWS S3에 자동으로 배포하는 방법을 알아보겠습니다.
이 포스팅을 참고하였습니다.
버킷을 생성 해줍니다.
이 때 json으로 버킷 정책을 설정하는 과정에서
알 수 없는 오류
예상치 못한 오류가 발생했습니다. 나중에 다시 시도하세요. 오류가 계속되면 AWS Support에 문의하여 지원 을 받으세요.
API 응답
Action does not apply to any resource(s) in statement
이런 오류가 뜬다면,

Resource 값 끝에 /*를 반드시 포함해야 합니다!
버킷 내 모든 객체에 대한 접근을 허용하는 설정입니다.
프로젝트 루트에 .github/workflows/deploy.yml 파일을 생성하고 다음 내용을 추가합니다.
name: Deploy React to S3
# 트리거 상황 설정
on:
push:
branches: ['Woody-refactor']
pull_request:
branches: ['main']
workflow_dispatch:
# job의 이름을 'CI-CD'라고 해보겠습니다.
jobs:
CI-CD:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v4
#사용하는 node 버전
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '20'
# Corepack 활성화 및 Yarn 버전 설정 추가
- name: Enable Corepack
run: |
corepack enable
corepack prepare yarn@4.1.1 --activate
- name: Install dependencies
run: yarn install
# env 파일에서 사용하는 환경 변수 설정
- name: Build
run: yarn build
env:
VITE_SERVER: ${{ secrets.VITE_SERVER }}
VITE_JSON_SERVER: ${{ secrets.VITE_JSON_SERVER }}
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.S3_REGION }} # 설정한 리전
# '--delete' 설정으로 소스 코드와 S3 버킷의 상태를 완벽하게 동기화
# S3 버킷에는 있지만 소스 디렉토리(./dist)에는 없는 파일들을 삭제하는 옵션
- name: Deploy to S3
run: aws s3 sync ./dist s3://설정한버킷이름 --delete
아래의 두 블로그를 참고하였습니다.
참고 포스팅1
참고 포스팅2
yaml파일에서 사용했던 시크릿키들을 추가해줍니다.
secrets.~ 값 들을 추가해줍니다.저는 지정 브랜치에 push를 하면 실행하도록 짜놨기 때문에 코드를 하나 push를 해보겠습니다!
코드를 지정한 브랜치에 push
🟢 🔴 GitHub Actions 탭에서 워크플로우 실행 상태 확인
성공하면, 초록불이 뜬 걸 볼 수 있습니다!


✨ S3 버킷의 정적 웹 사이트 호스팅 URL로 접속하여 배포 확인
아직 별도의 도메인을 연결하지 않았지만, S3에서 제공하는 엔드포인트 주소로 접속하면 배포가 정상적으로 완료된 것을 확인할 수 있습니다!

HTTPS 사용을 위해서는 CloudFront 설정이 필요합니다.
CloudFront설정은 생략된 포스팅입니다.