ruby-on-rails - Amazon s3:Gmail 上的图片链接已失效
问题描述
从 rails 应用程序发送 HTML 电子邮件会使图像 url 失效。我使用AWS S3和AWS SES构建。
意见/news_mailer.html.erb
<div class="icon">
<%= image_tag @item.image.to_s %>
</div>
mailers/news_mailer.rb
class NewsMailer < ApplicationMailer
def all_notify(item)
@item = item
mail(
subject: @item.title,
to: "test@example.com",
)
end
end
我想知道我必须修复 S3 设置...
图片链接是这样的
https://ci6.googleusercontent.com/proxy/jhtnRHXmN3Z-Mh0r-3Dildvviner2BBXGyqOcjIRvUTL7s3s2gNlucBVi25nfQze1GSspvhbpCLygjLYqge-yn4mP7jPLpZhBmFUtEbVTFqg8V23v-1bvqN14SCfRVPg_pPtfjEk69r-2rajeeJyH19Pi-8PzCE1tUv4uyPIAyzKa-Ijc-fd_56w5Nc5U3Yl0MQrGe5AXc3d3LeQd8I0vQKtp494SOYPIiSCeE2WsmGwkRts2BX7EfOaKAhZX99bdVkYOjoCM183hb8A6fLFpFSK-CxcfChIrjgKvDLbXwuBQT89PWTFBYGpaGEBPer3eNnuIKfZa8ZtkBG6UI6IsHcDfVi93yqQ_oGvM2SD2h-inkuy4_Oaa9Yjx-qgHPAlUunzA3Hi2frTErjNh1flwmz62iWhuysSwTYLQ95hisu3fuUViuC_o5awVCUrzBDPMeATLcctZObWtbGmcD5LYv9tWrnz3dyBZdlxizU2jGLimAyaLauQDbmCX6B-EVxnkLg=s0-d-e1-ft#https://example.s3-ap-northeast-1.amazonaws.com/uploads/product/image/154/marubatsu-quiz-generater.jpg?X-Amz-Expires=600&X-Amz-Date=20190614T232723Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJIMUKNPRWGBOPJMQ/20190614/ap-northeast-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=53134c41b3adf17720a2e4bd14c08b7831d4877591e4c9704dbfcee9834960c1
解决方案
假设您的图片链接是您在电子邮件中使用的实际链接...
看起来 URL 可能不正确,AWS 返回的错误是:
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
亚马逊错误显示:<Endpoint>s3.amazonaws.com</Endpoint>
<Bucket>example</Bucket>
您使用的端点是https://example.s3-ap-northeast-1.amazonaws.com
但它应该是https://example.s3.amazonaws.com
(根据错误),不包括该区域。
您可以将您的存储桶图像公开(或存储桶本身),并使用公共 url,或者您可以节省一些钱并保持存储桶私有,但允许通过云前端 (CDN) 进行访问,这有其他好处(速度、缓存、更低的花费)。
推荐阅读
- python - 嵌套对象的查询集排序
- vue.js - vue js过渡未正确显示
- java - 为管理员firebase android创建重置密码
- c# - ASP.NET - 信任级别 = 完整的 asp.net mvc 5?
- node.js - npm 库 kafka-node 和 kafka-streams 之间的区别
- html - 将 div 标签中的按钮定位在锚元素下
- applescript - 这个重复块中的“缺失值”来自哪里?
- javascript - 如何将使用 classList.contains() 作为条件的 if 语句转换为 switch 语句?
- pandas - 熊猫根据日期范围爆炸列
- python - Python __repr__ 方法未按预期工作