GitHub Actions を使って AWS の S3 へデプロイするための環境設定手順を記載します
S3 バケットの作成
アップロードする先の S3 バケットを作成しておきましょう
AWS IAM の作成
S3 へアクセス可能な IAM ユーザーを作成します
- AWS IAM へ遷移する
- アクセス管理のユーザーへ遷移する
- ユーザーを追加ボタンを押下する
- ユーザー名に適当な名前「github」などを入力し、「プログラムによるアクセス」にチェックを付けて次のステップボタンを押下する
- アクセス許可の設定へ遷移するので、「既存のポリシーを直接アタッチ」を選択して「AmazonS3FullAccess」にチェックを付けて次のステップボタンを押下する
- タグの追加画面に遷移するので、次のステップボタンを押下する
- ユーザーの作成確認画面に遷移するので、ユーザーの作成ボタンを押下する
- ユーザーが作成されたら、「アクセスキー ID」「シークレットアクセスキー」をメモするか、.csvのダウンロードをしておく
GitHub リポジトリの Secrets へ AWS 接続情報を登録
GitHub リポジトリの Secrets へ AWS 接続情報を登録します
- S3 へアップロードする GitHub リポジトリの Settings を選択する
- Secrets メニューへ遷移する
- Actions secrets で、New repository secret ボタンを押下する
- 以下の内容で各追加する
Name | Value |
---|---|
AWS_ACCESS_KEY_ID | (作成したIAMユーザーのアクセスキーID) |
AWS_SECRET_ACCESS_KEY | (作成したIAMユーザーのシークレットアクセスキー) |
S3_BUCKET | (アップロードする先の S3 バケット名) |
GitHub Actions 用のワークフローを定義
- GitHub で Actions へ遷移し、「set up a workflow yourself」のリンクをクリックする
- Edit new file に以下の内容を記載して、Start commit ボタンを押下し、コミットテキスト「GitHub Actions の設定を追加」などを入力して Commit new file ボタンを押下する
name: Amazon S3 Upload
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- 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-1
- name: Upload to S3
env:
S3_UPLOAD_BUCKET: ${{ secrets.S3_BUCKET }}
run: |
aws s3 sync . s3://$S3_UPLOAD_BUCKET/ --delete --exclude "README.md" --exclude ".git/*" --exclude ".github/*" --exclude ".gitignore"
これで master ブランチへファイルをPUSHするごとに、S3 へファイルがアプロードされます
ワークフローの状態は、GitHub リポジトリの Actions へ遷移してみてください
プルリクエストマージ時にしたい場合や、S3 アップ後に CloudFront のキャッシュを削除したいなど、場合によってワークフローの定義を編集してください