【发布时间】:2013-01-20 10:45:42
【问题描述】:
我正在使用 Paperclip 在 Amazon S3 上存储图像附件并通过 Cloudfront 交付它们。我环顾四周,找不到与签名 URL 一起使用以保护内容的示例。我想知道这里是否有人知道如何做到这一点?
谢谢,
伦纳德
【问题讨论】:
标签: ruby-on-rails paperclip amazon-cloudfront
我正在使用 Paperclip 在 Amazon S3 上存储图像附件并通过 Cloudfront 交付它们。我环顾四周,找不到与签名 URL 一起使用以保护内容的示例。我想知道这里是否有人知道如何做到这一点?
谢谢,
伦纳德
【问题讨论】:
标签: ruby-on-rails paperclip amazon-cloudfront
有点晚了,但对于寻找答案的人来说永远不会太晚。
像往常一样将您的图片上传到 S3,将 s3_permissions 设置为私有,这样他们就无法通过 S3 进行公共访问。设置 s3_host_alias 以便回形针在请求附件 URL 时使用该主机,然后签署该 URL。
您可以同时使用签名 URL 或签名 cookie。例如,使用cloudfront-signer gem:
has_attached_file :photo,
s3_permissions: :private,
s3_host_alias: "dcx01yp1dg1u1.cloudfront.net"
# Now photo.url will point to dcx01yp1dg1u1.cloudfront.net instead of S3
Aws::CF::Signer.sign_url photo.url, expires: Time.now + 600
有关详细信息,请参阅https://github.com/leonelgalan/cloudfront-signer#usage。免责声明,我是这个 gem 的当前维护者。
【讨论】:
s3_host_alias通过CloudFront检索图片。