hugoのブログ記事をs3にアップしてCloudfrontのキャッシュ削除までを一気に行う
hugoのブログ記事をs3にアップしてCloudfrontのキャッシュ削除までを一気に行うシェルスクリプトです。 Github Actions作るまでのつなぎとして使用するために作成。
1. IAMユーザを作っておく s3の同期取るのとcloudfrontのキャッシュを削除するためのIAMユーザを作っておきましょう。
バケット名やアカウントID、CloudfrontのディストリビューションIDは環境に合わせて適宜調整してください。
(adminやpower権限を持つユーザですでにconfigureしていて、それを使うなら不要)
以下はIAMユーザにアタッチするIAMポリシーのjsonです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "cloudfront:CreateInvalidation" ], "Resource": [ "arn:aws:s3:::${bucket}/*", "arn:aws:s3:::${bucket}", "arn:aws:cloudfront::${account_id}:distribution/*" ] } ] } 2. configureする 上記ポリシーをアタッチしたユーザを作成し、アクセスキーを作成した上でconfigureしておく
aws configure --profile hugo シェルスクリプト フォルダやバケットのディレクトリは環境に合わせて適宜調整してください
# /bin/sh s3_bucket=s3://$1/ cloudfront_dist=$2 # ブログを生成 hugo # publicフォルダとs3の中身を同期 aws s3 sync public/ $s3_bucket --profile hugo # キャッシュを削除 aws cloudfront create-invalidation --distribution-id $cloudfront_dist --paths "/*" --profile hugo 実行方法例