shou2017.com
JP / EN

AWSを使ってHugoを自動デプロイする

Mon Mar 19, 2018
Sat Aug 10, 2024

AWSを使ってHugoを自動デプロイする

今までは、手動でデプロイしていましたが、やはりナウイ感じにしようと思いAWSのサービスを使ってgit pushすると自動でデプロイできるように設定します。

今回は、CodeBuild,CodePipelineの設定をメモしておきます。

使うもの

  • CodeCommit(フルマネージド型のソースコントロールサービス)
  • CodeBuild(完全マネージ型ビルドサービス)
  • CodePipeline(継続的デリバリーとリリースの自動化)

CodeBuildの設定

まずはbuildspec.ymlを作成します。buildspec.ymlはフォルダ直下におきます。

AWSを使ってHugoを自動デプロイする

僕の場合は、以下のようにしました。CloudFrontのキャッシュ削除もしようと思ったのですが、CloudFrontはキャッシュを削除する度にお金がかかるのでやめました。

オペレーティングシステムはUbuntuです。

version: 0.2

env:
  variables:
    LC_CTYPE: "C.UTF-8"
    hugo_version : "0.36.1"
    bucket_name: "shou2017.com"

phases:
    install:
        commands:
            - pip install awscli --upgrade --user
            - wget https://github.com/gohugoio/hugo/releases/download/v${hugo_version}/hugo_${hugo_version}_Linux-64bit.deb
            - dpkg -i hugo_${hugo_version}_Linux-64bit.deb
    build:
        commands:
            - hugo
    post_build:
       commands:
            - echo "S3 Upload Beginning"
            - aws s3 sync --delete ./public s3://${bucket_name}
            - echo "S3 Upload Complete"

コンソールからCodeBuildにいきます。プロジェクトの作成を選択。

AWSを使ってHugoを自動デプロイする

以下のように作成します。

AWSを使ってHugoを自動デプロイする

AWSを使ってHugoを自動デプロイする

S3でbuildするのですが、その際にCodeBuildがS3にアクセスできるようにcodebuild-blog-service-roleにポリシーのアタッチをします。

コンソールからIAMを選択します。

ロールに先ほど作ったcodebuild-blog-service-roleがあると思います。

AWSを使ってHugoを自動デプロイする

codebuild-blog-service-roleを選択すると以下のような詳細が出てきます。

AWSを使ってHugoを自動デプロイする

ポリシーのアタッチを選択し、AmazonS3FullAccessを追加します。

AWSを使ってHugoを自動デプロイする

CodeBuildに戻り、ビルドをすると成功するはずです。

AWSを使ってHugoを自動デプロイする

CodePipelineの設定

次はCodePipelineの設定を行います。

コンソールからCodePipelineに移動し、パイプラインの作成を選択。以下のように設定していきます。

AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする AWSを使ってHugoを自動デプロイする

これでCodeCommitにpushすると自動でデプロイできるようになりました。

個人のブログ程度ですとAWSの無料枠の範囲で収まると思います。そんなに更新しないし。

有料になったとしてもたかがしれてるのでHugoでメディア運営をするというのも面白いかもしれません。ライターの人にgitを覚えてもらえばいいわけですから。

gitで管理できるのでWordPressとかよりも効率的な運営ができそうです。

See Also