GitHubへのCommitをトリガーにReactのBuild、S3への配置、Cloudfrontのキャッシュクリアまでを自動化する
2023-03-12
このブログのデプロイを自動化しました。
処理の流れ
GitHub
へのPushをトリガーに、CodePipeline
を実行CodePipeline
は、CodeBuild
を実行CodeBuild
はbuildspec.yml
に従って処理を実行React
プロジェクトをBuild
Build
したファイルをS3
へ配置Cloudfront
のキャッシュをクリア
CodeBuild
は、Codepipeline
に結果を通知
構築手順
CodePipeline
とCodeBuild
の作成
CodePipeline
を開き、パイプラインの作成
をクリック- パイプライン名
blog
- ソースプロバイダーに
GitHub(バージョン2)
を選び、リポジトリとブランチを選択 ソースコードの変更時にパイプラインを開始する
のチェックが入っていることを確認- ビルドプロバイダーに
AWS CodeBuild
を選択 プロジェクトを作成する
を選択- プロジェクト名に
blog
を入力 - オペレーションシステムに
Amazon Linux2
を選択 - ランタイムに
Standard
を選択 - イメージに
aws/codebuild/amazonlinux2-x86_64-standard:4.0
を選択 - 環境変数に
S3_BUCKET_NAME
を追加 - 環境変数に
CLOUDFRONT_DISTRIBUTION_ID
を追加 - その他の設定はデフォルトのまま
CodePipelineに進む
をクリック
- プロジェクト名に
- パイプラインの作成ウィザードに戻ってくるので
次に
をクリック 導入段階をスキップ
を選択する。デプロイはCodeBuild
で行うため、CodePipeline
のデプロイは不要パイプラインを作成
をクリック
CodeBuild
を実行するロールにS3
とCloudfront
へのアクセス権限を付与
IAM
を開くcodebuild-blog-service-role
という名前のロールを選択許可を追加
のポリシーのアタッチ
をクリックAmazonS3FullAccess
を検索して選択AmazonCloudFrontFullAccess
を検索して選択
GitHub
のリポジトリにbuildspec.yml
を追加
buildspec.yml
を追加touch buildspec.yml
buildspec.yml
に以下を追加version: 0.2 phases: build: commands: - npm install - npm run build post_build: commands: - aws s3 sync out s3://${S3_BUCKET_NAME} - aws cloudfront create-invalidation --distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} --paths '/*'
- コミットしてプッシュ
以上で、GitHubへのPushをトリガーに、AWS Codepipelineを実行する設定は完了です。
main
ブランチにPushすると、コンテンツの配信が自動的に行われます。