:private, :path => "photo" />
: O. Yuanying

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」に詳しく書いてある。