GitHubリポジトリからGitHub Actionsを使い、静的ファイルを自動でデプロイする方法を紹介します。
S3バケットとリポジトリは、すでに作成されているものとします。
AWSへログインし、
IAM↗(Identity and Access Management)を開きます。
ユーザー一覧から、ユーザーを作成するボタンをクリックします。
名前を決めて、次へ進みます。
権限設定では、ポリシーを直接アタッチし、AmazoneS3FullAccessとCloudFrontFullAccessを選択します。
次へ進んで、ユーザーの作成を完了します。
作成後、ユーザーのセキュリティ認証情報から、アクセスキーを作成します。
「その他」を選び、タグも入力します。
作成されたアクセスキーは、大切に保管してください。
絶対に
公開された場所へ置いてはいけません。
リポジトリのSettings、Security、Secrets and variablesを開き、New repository secretをクリックします。
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを追加します。
.github/workflowsに、deploy.ymlを作成します。
./.github/workflows/deploy.ymlname: Main CI
on:
push:
branches:
- main
jobs:
push-to-s3:
name: Push to S3
runs-on: ubuntu-20.04
# 레포지토리에 접근하여 CI서버로 코드를 내려받음
steps:
- name: Checkout
uses: actions/checkout@v3
# 캐시 사용
- name: Cache dependencies
uses: actions/cache@v3
with:
path: |
./posts
key: ${{ runner.os }}-posts-${{ hashFiles('**/posts/**') }}
# aws에 접근하기 위한 권한 설정
- 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: ap-northeast-2
# s3에 파일 업로드
- name: Upload to S3
run: |
aws s3 sync \
./posts s3://promleeblog-cdn
# file path, s3 버킷 이름
追加してmainブランチへpushすると、GitHub Actionsが実行され、S3バケットへファイルがアップロードされます。