AWS

AWS 정적 사이트 구축 (GitAction,S3,CloudFront,Route53) (간단히)

KK_Ryong 2023. 3. 3. 17:42

■■■S3 버킷 생성■■■

Redirect HTTP to HTTPS / GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE /

Caching Optimized / 액세스 모두 차단 / 정적 웹 호스팅 활성화

버킷 정책은 CF 만든 후 원본액세스를 활용 하여 넣어주기 

 

■■■CloudFront■■■

CloudFront 생성 (원본액세스 권장으로 하여 생성)

(도메인과 SSL 은 없을 시 새로 발급 받기 )

 

정적 웹 사이트 시 오류페이지에  403,404 /index.html 넣어주기 

 

■■■Route53■■■

Route53 으로 도메인 별 CF 와 연결 시켜주기 

A레코드,Cname

 

■■■접속 테스트■■■

aws s3 cp [올릴파일 위치] [S3버킷] --profile [접근할 계정 미리 세팅해두기]

 

■■■Git■■■

Git repo 생성 및 Secrets에 access key  정보 넣기 

(main , prd , stg 각각 생성 하여 최대한 main 접근 안하고 merge 로만)

.git 에 yml 파일 넣어서 실행 

 

name: stg-deploy-to-s3

on:
  push:
    branches:
    - stg
   
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2
     
      - name: Setup Python for AWS CLI
        uses: actions/setup-python@v1
        with:
          python-version: '3.x'

      - name: Install AWS CLI
        run: pip3 install awscli --upgrade --user

      - name: Cache node modules
        uses: actions/cache@v1
        with:
          path: node_modules
          key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.OS }}-build-
            ${{ runner.OS }}-
           
      - name: Install Dependencies
        run: npm install
       
      - name: Build
        run: npm run build_stg

      - name: Deploy to s3 and Cloudfront distribution
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.ACCESS_KEY_ID }}                            #secrets 미리 생성 해두기 
          AWS_SECRET_ACCESS_KEY: ${{ secrets.SECRET_ACCESS_KEY }}
        run: |
          aws s3 cp \
            --recursive \
            --region ap-northeast-2 \
            _stage s3://[S3 버킷 주소]
   aws cloudfront create-invalidation --distribution-id [CF배포ID] --paths "/*" #캐시 무효화 잠시 안쓰고 배포 뒤 다시 무효화

IDC 서버 일 경우 

- name: Deploy to IDC
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.HOST IP }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
          source: _production/   #소스 위치 적기 
          target: "/home/[배포할 위치]"  

 

     

 

 

 

'AWS' 카테고리의 다른 글

AWS 도메인 오픈 순서  (0) 2023.03.16
AWS MSK+Docker+Prometheus+Grafana(테스트)  (0) 2023.03.06
AWS MSK 구축  (0) 2023.02.28
AWS Route53-CloudFront-S3 연동  (0) 2023.02.17
AWS EC2,RDS 스케쥴 가동(자동 시작/종료)  (0) 2023.02.15