AWS IAM 사용자 추가하기
귀찮아서 IAM 사용자를 추가하지 않고 root 사용자인 상태로 자동화 작업을 하고싶었는데
서치를 해보니 Root 사용자 계정은 모든 리소스에 대한 완전한 접근 권한을 가지고 있어
보안 위협이 될 수 있기 때문에 절대 절대 권장되지 않는다고 한다,, 바아로 만들어보자. !
IAM 이란 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다.
IAM > 액세스 관리 > 사용자
사용자 생성을 클릭한다.


사용자 이름을 작성한다.

기존 정책 직접 연결을 선택하고
AmazonS3FullAccess와 CloudFrontFullAccess를 선택한다.

생성 완료 후에 액세스 키 만들기를 클릭

AWS 외부에서 실행되는 애플리케이션 선택

액세스 키와 비밀 액세스 키를 복사하여 꼭 메모장에 저장해두고
.csv 파일도 다운받아둔다.
Github Actions 설정
자동화하려는 레파지토리의 settings에 들어가 Secrets and variables > Actions에 들어간다.


Repository secrets에 New repository secret 생성 버튼을 눌러

ID와 Access Key, Cloudfront ID, .env에 작성된 것들을 secrets로 설정해준다.

Actions 에 set up a workflow yourself 에서 .yml파일을 작성한다.

React, yarn, vite 로 create 한 앱이라 빌드 파일 경로를 dist/로 설정해줘야 한다.!!
name: Build & Deploy React App
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v3
- name: AWS IAM 사용자 설정
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: 의존성 설치
run: yarn install
- name: 리액트 빌드
run: yarn build
env:
VITE_APP_BASE_URL: ${{ secrets.VITE_APP_BASE_URL }}
- name: 빌드한 파일 S3에 업로드
run: aws s3 sync dist/ s3://${{ secrets.AWS_S3_BUCKET_NAME }}
- name: CloudFront 캐시 무력화 설정
uses: chetan/invalidate-cloudfront-action@v2
env:
DISTRIBUTION: ${{ secrets.AWS_CLOUDFRONT_ID }}
PATHS: "/*"
AWS_REGION: ${{ secrets.AWS_REGION }}
AWS_S3_ACCESS_KEY: ${{ secrets.AWS_S3_ACCESS_KEY }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
upload failed: dist/vite.svg to s3://***/vite.svg An error occurred (AccessControlListNotSupported) when calling the PutObject operation: The bucket does not allow ACLs
빌드한 파일 S3에 업로드 과정에서 이러한 오류가 났었어서
서치해보니
최근 S3에서는 버킷이 ACL을 비활성화한 경우에 --acl public-read와 같은 옵션을 사용할 수 없도록 변경되었습니다.
이 문제를 해결하려면 --acl public-read 옵션을 제거하고 대신 버킷 정책을 통해 객체에 공용 읽기 권한을 설정해야 합니다.
ㅇ..ㅣ 이런
--acl public-read 옵션을 제거하니 바로 성공했다..!
