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

Mon Mar 19, 2018 - hugo
Sun Jan 19, 2020

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

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

使うもの

  • CodeCommit(フルマネージド型のソースコントロールサービス)

  • CodeBuild(完全マネージ型ビルドサービス)

  • CodePipeline(継続的デリバリーとリリースの自動化)

CodeBuildの設定

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

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: 0.2

env:
  variables:
    LC_CTYPE: "C.UTF-8"
    hugo_version : "0.36.1"
    bucket_name: "bokunonikki.net"

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にいきます。プロジェクトの作成を選択。

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

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

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

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

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

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

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

CodePipelineの設定

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

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

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

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

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

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

Tags: aws
See Also