回形针和 Amazon S3 问题

2024-02-08

我有一个在 Heroku 上运行的 Rails 应用程序。我使用回形针为用户头像和其他一些东西上传一些简单的图像,我将 S3 设置为我的后端,一切似乎都工作正常,除了在尝试推送到 S3 时出现以下错误:

The AWS Access Key Id you provided does not exist in our records. 

我以为我错误地粘贴了访问密钥和秘密密钥,我又试了一次,仍然没有成功。我想这可能只是一把有缺陷的钥匙,我将其停用并生成了一把新钥匙。还是没有运气。

现在,对于这两个密钥,我已在 OS X 上使用了 S3 浏览器应用程序,并且能够连接到每个密钥并查看我当前的存储桶以及添加/删除存储桶。有什么我应该注意的吗?我的应用程序的 S3 和回形针设置如下

development:
  bucket: (unique name)
  access_key_id: ENV['S3_KEY']
  secret_access_key: ENV['S3_SECRET']

test:
  bucket: (unique name)
  access_key_id: ENV['S3_KEY']
  secret_access_key: ENV['S3_SECRET']

production:
  bucket: (unique_name)
  access_key_id: ENV['S3_KEY']
  secret_access_key: ENV['S3_SECRET']

has_attached_file :cover,
    :styles => {
      :thumb => "50x50"
    },
    :storage => :s3,
    :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
    :path => ":class/:id/:style/:filename"

编辑注意:ENV['S3_KEY']和ENV['S3_SECRET']是heroku中的环境变量,我什至尝试过直接使用我的密钥,但它仍然不起作用

注意:我刚刚添加了(唯一名称)位,这些位实际上并不存在——我还验证了存储桶名称,但我什至认为这还没有达到那么远。我还正确设置了 Heroku 环境变量,并在 dev 上设置了它们


你没有设置一个桶。它位于您的 s3.yml 文件中,但您没有从调用中读取该值has_attached_file.

回形针 S3 文档:http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3#s3_protocol-instance_method http://rubydoc.info/gems/paperclip/Paperclip/Storage/S3#s3_protocol-instance_method

另外,请注意那些告诉您不要在 Heroku 中使用 s3.yml 文件的人。这是一种浪费,而且只是增加了抽象,对你没有任何好处。您已经使用所需的值设置了 ENV,因此请使用它们。

我之前已经这样做过,我不想将 s3.yml 文件推送到 Heroku,但我确实想使用一个进行测试和开发。在初始化程序中,您可以执行以下操作:

# If an s3.yml file exists, use the key, secret key, and bucket values from there.
# Otherwise, pull them from the environment.
if File.exists?("#{Rails.root}/config/s3.yml")
  s3_config = YAML.load_file("#{Rails.root}/config/s3.yml")
  S3[:key] = s3_config[Rails.env]['key']
  S3[:secret] = s3_config[Rails.env]['secret']
  S3[:bucket] = s3_config[Rails.env]['bucket']
else
  S3[:key] = ENV['S3_KEY']
  S3[:secret] = ENV['S3_SECRET']
  S3[:bucket] = ENV['S3_BUCKET']
end

然后,当您在模型中设置 Paperclip 时,您可以像这样引用该值:

...
:s3_credentials => {
  :access_key_id => S3[:key],
  :secret_access_key => S3[:secret]
},
:bucket => S3[:bucket]

显然,这意味着您不希望将 s3.yml 文件放在 git 存储库中(实际上,无论如何您都不应该这样做)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回形针和 Amazon S3 问题 的相关文章

随机推荐

  • 使用 C# 测量 TCP 上的数据传输速率

    我想测量当前的下载速度 我正在通过 TCP 发送巨大的文件 我怎样才能捕获每秒的传输速率 如果我使用 IPv4InterfaceStatistics 或类似方法 我将捕获设备传输速率 而不是捕获文件传输速率 捕获设备传输速率的问题在于 它捕
  • 自连接查询

    考虑下表 mysql gt select from phone numbers number type person id 17182225465 home 1 19172225465 cell 1 12129876543 home 2 1
  • android中ListView无法点击?

    我使用联系人同步制作了一个应用程序 我列出了以下联系信息 包括照片 姓名和电话号码 我成功地在自定义中列出了所有这些内容ListView 但我无法点击ListView 看起来像是被锁定了 无法点击 但我对另一项活动做了同样的程序 使用自定义
  • 在 LINQ 中对集合的集合进行交集

    我有一个要相交的列表列表 List
  • Hibernate JPA ManyToOne 复合键

    我正在尝试设置我的实体以允许 pks 我的数据库由两个字段组成 Dealer detail id pk user detail id pk 两者都根据相应表中的 id 进行连接 到目前为止我已经尝试过但没有成功 Embeddable pub
  • Git Pull 请求没有更改,但 git diff 显示更改

    我的分支机构有问题 介绍 我的项目有 3 个分支 Dev Main 和 Staging On Dev分支我们添加新功能 Main我们修复错误的分支Staging我们部署用于测试 当 Bug PullRequest 完成时Main分支 我们发
  • 使用 VSTS 和 Azure 时正确管理应用程序设置

    如果使用 VSTS 和 Azure 有两种不同的方法来管理应用程序设置 请记住 这只是用于持续部署的工具的示例 您可以覆盖 VSTS 中 CD 管道中的 JSON 文件 旧系统中的 Web 配置 也可以覆盖 Azure 应用程序设置 部分中
  • ElasticSearch——根据字段值提高相关性

    需要在 ElasticSearch 中找到一种方法来根据字段的特定值提高文档的相关性 具体来说 我的所有文档中有一个特殊字段 该字段值越高 包含该字段的文档就越相关 无论搜索如何 考虑以下文档结构 all enabled true prop
  • 如何在 React-Native (JavaScript) 中显示文本更多/更少

    我正在开发反应本机应用程序 在其中 我们展示了一些描述Text 可能是行数 因此 如果数据超过 3 行 如果扩展 我必须显示更多和更少
  • 如何将 (mxn) 维的 Numpy 数组展开为单个向量

    我只想知道是否有将 numpy 数组展开为单个向量的捷径 例如 将以下 Matlab 代码转换为 python Matlab方式 A 零 10 10 A unroll A 预先感谢 这是你的想法吗 编辑 正如 Patrick 指出的 将 A
  • 有没有办法显示密码执行计划?

    我看到过一个话题 了解 Neo4j Cypher Profile 关键字和执行计划 https stackoverflow com questions 17760627 understanding neo4j cypher profile
  • 是否可以在 p:columns 标签内使用 p:cellEditor?

    我有一个 primefaces 数据表 可以动态获取其列 我希望它的单元格可以使用 primefaces cellEditor 进行编辑 如图所示here http www primefaces org showcase ui datata
  • Android - 全局变量?

    我需要在我的应用程序中存储一些数据 我知道我可以这样做 class public class MyApplication extends Application private String someVariable public Stri
  • 包含动态按钮的旋转框架布局

    我有一个 Framelayout 它在运行时添加四个图像视图 并且在中心它包含主图像 用户可以使用该主图像执行不同的操作 但我面临旋转布局视图的问题 目前正在触摸旋转按钮我正在这样做 public void setRotateListene
  • 如何使用通用视图在视图中设置模型的字段?

    我有一个模型 它有一个作者ForeignKey 像这样 class Appointment models Model author models ForeignKey User 我想要author为当前登录用户创建约会时自动设置的字段 换句
  • 跨源资源共享 (CORS) 是否区分 HTTP 和 HTTPS?

    我有两个网站 https www domain only uses https com 和 www domain uses both http and https com 现在我在前者到后者的页面中发出2个ajax GET请求 一个是 ht
  • 使用 NetworkManager 上传文件不起作用

    因此 我尝试使用 Qt Network Mangager 将一个简单的文本文件上传到我正在服务的 php 脚本中 但这不起作用 我尝试了使用 QHttpMultiPart 和在请求中设置原始数据标头的示例 但没有任何效果 这是我的 Qt 代
  • 如何取消手风琴控件的更改事件

    accordion accordion change function event ui alert event have to be changed changestart function event ui return false 是
  • PyCharm 未解析的参考“打印”[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我开始学习 python 语言 并决定尝试一下 PyCharm IDE 它看起来非常不错 但是 每当我写 print 时 它都会显示 未解析
  • 回形针和 Amazon S3 问题

    我有一个在 Heroku 上运行的 Rails 应用程序 我使用回形针为用户头像和其他一些东西上传一些简单的图像 我将 S3 设置为我的后端 一切似乎都工作正常 除了在尝试推送到 S3 时出现以下错误 The AWS Access Key