配置回形针与cloudfront

我正在尝试使用cloudfront配置回形针,并且我的url不会返回正确的路径或域。

这是我的回形针配置:

s3_cr

edentials: { access_key_id: ENV.fetch("S3_ACCESS_KEY"), secret_access_key: ENV.fetch("S3_SECRET"), bucket: ENV.fetch("S3_BUCKET"), }, storage: :s3, url: ':s3_alias_url', s3_host_alias: "xxxx.cloudfront.com", s3_headers: { "Cache-Control" => "max-age=31557600" }, s3_protocol: "https", path: ":rails_root/public/spree/products/:id/:style/:basename.:extension", default_url: "/spree/products/:id/:style/:basename.:extension", default_style: "product", 

我的所有url都使用默认url返回…这是对的吗?

在模型本身,我有一些配置,我担心可能会覆盖:s3_alias_url 。 那可能吗?

 class Image ', small: '100x100>', product: '240x240>', large: '600x600>' }, default_style: :product, url: '/spree/products/:id/:style/:basename.:extension', path: ':rails_root/public/spree/products/:id/:style/:basename.:extension' 

这到底是做什么的?

我的主要问题是当我们将图像保存到模型时会发生什么? 这些url是否确定了? 或者,当我们尝试获取附件时,他们是否已确定? 我假设当我们将附件与图像相关联时,它会上传到s3吗? 但是当我们尝试获取附件时,我们首先尝试点击cloudfront cdn? 到底是怎么回事?

我发现有一些问题不涉及cloudfront。 我自己并没有多少使用过cloudfront,但是我使用CName为S3对象服务,这个概念看起来很相似。

在您的配置文件中

 url: ':s3_alias_url', s3_host_alias: "xxxx.cloudfront.com", 

就回形针设置与AWS一起使用而言,这是正确的。 这里发生的事情是,当您显示图像时,您的url正在寻找您的s3_host_alias作为开始路径的位置。

但是,在上传时,您将转到存储桶(在您的凭据中)并将对象放入路径(所以bucket_name \ path \ to \ file.jpg)。

我的所有url都使用默认url返回…这是对的吗?

是。 有点。

这不是你想要做的,而是你正在做的事情。 在你的Image模型中,你要设置你的url:/spree/products/:id/:style/:basename.:extension ,这也正是你在default_url:中所拥有的default_url:在配置文件中。

因此,很难说出为什么会得到这种回应。 在大多数情况下,您希望default_url:是一些图像,如果没有附加图像则会显示。 有点像404页面,但对于图像。 这应该位于你知道你可以击中的静态路径上,即使s3发生故障(根据我的经验,它只发生过一次)。

如果你更改了这个,我可以添加更多信息来处理你的具体问题,如果你仍在使用默认路径或url,请告诉我。

(注意:如果您没有附件,则此图像仅显示。附加图像时不会/不应显示该图像但在您查找的位置不存在。例如,如果您从s3删除图像发现在它正在检查的路径上。)

我担心可能会覆盖:s3_alias_url。 那可能吗?

是。 这就是你的模型中的url发生的事情,它告诉它检查与默认路径相同的路径。

我也会从你的路径中删除:rails_root 。 它会有所帮助,主要是因为rails_root试图转到您计算机上的某个位置,并告诉您的s3路径来构建该位置的路径。 这可能会变得混乱(例如,s3键可能会显示并看起来像/ C:/ MyDocuments / Sites / MySite / public / spree / products // original / ….它变得很糟糕。)

这到底是做什么的?

我不明白这是指哪个部分,但如果你告诉我“这个”指的是什么,我会很乐意回答。

我的主要问题是当我们将图像保存到模型时会发生什么?

保存图像时,为s3对象设置密钥,并将图像上传到s3存储桶。 该密钥由您的存储桶和路径组成,应该注意的是,url专门用于检索图像。 上传文件后对URL的更改将更改回形针查找图像的位置。

这些url是否确定了? 或者,当我们尝试获取附件时,他们是否已确定?

在上传图像时会构建Url,但是,当您引用图像时,您应该能够说出类似img_tag src="image.attachment" ,并且应该创建一个供您查看的URL。 (如果不知道你的观点中有什么,这很难解释)。

我假设当我们将附件与图像相关联时,它会上传到s3吗? 是的但是当我们尝试获取附件时,我们首先尝试点击cloudfront cdn? 到底是怎么回事?

在上传时使用你的存储桶:在凭据中找到,在下载(或显示)时它使用从url:path:构建的url: path: