準備
Gemの「AWS - SDK」を使用する。
※ CarrierWaveを使用している前提
gem "aws-sdk"
実装
KEY_PAIR_ID:CloudFrontで作成したキーペアのID
PRIVATE_KEY:CloudFrontで作成したキーペアのプライベートキーの内容
※ private_key_pathオプションを使用すれば、プライベートキーのファイルパスを指定すれば読み込んでくれる。
公式リファレンス
class ApplicationUploader < CarrierWave::Uploader::Base
def signed_url
if path.blank?
url
else
signer = Aws::CloudFront::UrlSigner.new(key_pair_id: KEY_PAIR_ID, private_key: PRIVATE_KEY)
signer.signed_url(url, expires: Time.zone.now + 5.minutes)
end
end
end