Amazon S3 + Paperclip で認証アクセス
ぶっちゃけ、Restricting Access to Objects Stored on Amazon S3 に書いてあるそのまんまで、
:s3_permissions
オプションを :private
に設定して、
has_attached_file :annual_report,
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:s3_permissions => :private,
:path => "photos/:id/:filename"
アクセスを許可する人にだけ、expiring_url
にアクセスさせれば良い。
def download
redirect_to root_url if permission_denied?
redirect_to @department.annual_report.expiring_url(10)
end
任意のスタイルだけ制限アクセスをかけたい場合
例えば、original のスタイルのファイルにだけ制限アクセスをかけたい場合は、
:s3_permissions => {
:original => :private
}
と、:s3_permissions
オプションをハッシュで渡し、制限アクセスをかけたいスタイルにだけオプションを渡せば良いみたい。
ちなみに、:s3_permissions
オプションに関しては、 Amazon S3 のドキュメント、
REST Access Control Policy
の「Canned Access Policies」に詳しく書いてある。