0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

特定のブランチにpushされたらGithub Actionsを使ってs3に自動デプロイする

Last updated at Posted at 2022-12-25

Github Actionsを使ってプッシュされた内容をs3に自動で反映します。(作業時のメモなので抜け漏れがある可能性があります。検証用環境を用意してお試しください。)

前提条件

Githubに検証用リポジトリが用意されている

s3にバケットを用意

ファイル配置用にs3上にバケットを新規作成します。
スクリーンショット 2022-12-25 17.22.23.png
バケット名は任意の名前、そのほかの設定はデフォルトのまま進めます。必要に応じて各種設定は調整してください。

IAMユーザーを用意

バケット操作用のIAMユーザーを新規追加します。

追加するユーザーには用途に応じて権限を絞ったポリシーをアタッチします。
参考:Amazon S3のアクセスに必要な最低限のIAMポリシーの設定

ユーザー作成時に生成されるアクセスキーIDシークレットキー はこの後の手順で利用するので控えておいてください。

GitHub Secretsの設定

前の手順で用意したアクセスキーIDシークレットキーをGithub Secretsに登録します。

作業リポジトリのsettings > Actions へアクセスし、new repository secretから登録を行います。
スクリーンショット 2022-12-25 17.39.43.png
スクリーンショット 2022-12-25 17.45.13.png

## Secret1
name:AWS_ACCESS_KEY_ID
secret:{{IAMユーザー作成時に控えたアクセスキーIDを保存する}}

## Secret2
name:AWS_SECRET_ACCESS_KEY
secret:{{IAMユーザー作成時に控えたシークレットキーを保存する}}

GitHub Actions設定用にyamlファイルを作成

対象のリポジトリ直下に.github/workflowsという名前でディレクトリを新規作成し、その中にyamlファイルを配置します。

name: Upload to S3
on:
  push:
    branches:
      - release

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Deploy
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: aws s3 sync --region ap-northeast-1 ./src/ s3://[バケット名]/ --delete
  • ${{ secrets.AWS_ACCESS_KEY_ID }}${{ secrets.AWS_SECRET_ACCESS_KEY }}の記載で、登録したIDとキーを取得します
  • バケット名は初めに作成したファイル配置用の名前を入れます
  • 対象のブランチを変更する場合はbranchesの値を変更します

以上の設定で、releaseというブランチにプッシュされた際にGithub Actionsが発火し、/srcディレクトリの中身がs3に反映されます。

うまく動かない場合確認する箇所

GithubのPersonal access tokensにworkflowの権限が付与されているか

git pushする際に権限エラーが出た場合、GithubのPersonal access tokensの権限を確認しましょう。
参考:GitHubActionsで自動ビルドする際、Tokenのスコープでつまづいた話
スクリーンショット 2022-12-25 18.19.34.png

IAMユーザー ポリシーのResourceのスコープは適切か

今回作成した検証用の環境で動いたが、実際の環境に適用した際に動かなくなった場合はIAMユーザーのポリシーのResourceのスコープを確認しましょう。テスト用のバケットのみを指定している場合、他のバケットでは権限の問題でエラーになります。
参考:複数のアカウントのバケットポリシーの設定

yamlファイルのawsコマンドで指定しているパスは適切か

今回のyamlファイルの設定では/srcディレクトリ配下のファイルを反映しています。反映するディレクトリのパスが変わる場合、併せてyamlファイルの修正しましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?