s3_website で公開する S3 バケットを切り替える

Posted on

このブログは Jekyll を使っていて、Amazon S3 の Static Web Hosting で公開しています。

Jekyll サイトを s3_website で Amazon S3 に公開する」にも書いたとおり、RubyGem の s3_website を使ってプッシュしています。今回は s3_website の小ネタです。

複数のバケットにプッシュしたい

ひとつのバケットへプッシュするだけなら困らないのですが、たとえばステージングと本番など、複数のバケットを切り替えることはできません。

s3_website.yml の s3_bucket を手で書き換えればできるのですが、毎回となるとさすがに面倒です。ちょっと強引ですが、rake コマンドと sed を組み合わせてバケットを切り替えれるようにしてみました。

sed を使ってバケット名を設定する行をまるごと書き換えたあと s3_website push を実行しています。

task :preview do
  sh "sed -i -e 's/^s3_bucket: blog.manabusakai.com$/s3_bucket: sta-blog.manabusakai.com/g' s3_website.yml"
  sh "jekyll build"
  sh "s3_website push"
end

task :public do
  sh "sed -i -e 's/^s3_bucket: sta-blog.manabusakai.com$/s3_bucket: blog.manabusakai.com/g' s3_website.yml"
  sh "jekyll build"
  sh "s3_website push"
end

rake preview でステージング、rake public で本番のバケットにプッシュできます。