bukelatta: S3のバケットポリシーをgitで管理するやつ

連休なのにこんなことをやっているのもアレなんですが「S3のバケットポリシーをコピペして目視確認」という作業を見てカッとなって作りました。terraformを使った方が手っ取り早かったかも…

https://github.com/winebarrel/bukelatta

bukelatta -e -o PolicyFileでS3のバケットポリシーをファイルに出力して、bukelatta -aで変更を適用します。ファイルに定義されていないバケットについては、管理対象外としてとくに何も行いません。

定義ファイルは以下のような感じ。テンプレートも使えます。

require 'other/policyfile'

bucket "foo-bucket" do
  {"Version"=>"2012-10-17",
   "Id"=>"AWSConsole-AccessLogs-Policy-XXX",
   "Statement"=>
    [{"Sid"=>"AWSConsoleStmt-XXX",
      "Effect"=>"Allow",
      "Principal"=>{"AWS"=>"arn:aws:iam::XXX:root"},
      "Action"=>"s3:PutObject",
      "Resource"=>
       "arn:aws:s3:::foo-bucket/AWSLogs/XXX/*"}]}
end

bucket "bar-bucket" do
  {"Version"=>"2012-10-17",
   "Statement"=>
    [{"Sid"=>"AddPerm",
      "Effect"=>"Allow",
      "Principal"=>"*",
      "Action"=>"s3:GetObject",
      "Resource"=>"arn:aws:s3:::bar-bucket/*"}]}
end

どうぞご利用ください。