【问题标题】:Rails keeps asking for AWS credentials for MySQL storageRails 不断要求为 MySQL 存储提供 AWS 凭证
【发布时间】:2020-11-12 05:07:01
【问题描述】:

我正在按照以下说明在 Debian 10 服务器(不是 AWS)上试用 Sharetribe 社区版:https://github.com/sharetribe/sharetribe#installation

我被困在第 7 步,出现以下错误:

Aws::Sigv4::Errors::MissingCredentialsError:缺少凭据, 提供具有以下选项之一的凭据:

    :access_key_id and :secret_access_key
    :credentials
    :credentials_provider

但是,Rails 知道我使用的不是亚马逊而是本地存储,因为我有以下两个设置:

File: config/environments/development.rb
config.active_storage.service = :local

File: config/environments/production.rb
config.active_storage.service = :local

更改这些设置后,我运行了以下命令:

~/sharetribe$ EDITOR=“sub1 --wait” bin/rails credentials:edit

得到下面的输出:

添加 config/master.key 来存储主加密密钥: [已编辑]

将此保存在您的团队可以访问的密码管理器中。如果你失去了 密钥,包括您在内的任何人都无法访问任何用它加密的内容。

创建配置/master.key

忽略 config/master.key 这样它就不会出现在 Git 历史记录中:

附加.gitignore

加密并保存新凭据。

但运行后:

~/sharetribe$ bundle exec rake db:create db:structure:load

我得到了上面的错误。

编辑:这里是 config/storage.yml。不知道我是否应该注释掉亚马逊部分

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
  service: S3
  access_key_id: <%= APP_CONFIG.aws_access_key_id%>
  secret_access_key: <%= APP_CONFIG.aws_secret_access_key %>
  region: <%= APP_CONFIG.s3_region %>
  bucket: <%= APP_CONFIG.clp_s3_bucket_name %>
  upload:
    acl: "public-read"
    cache_control: 'max-age=3600'

TLDR:我想将 Sharetribe 的数据库存储在它自己的服务器中,但 Rails 一直要求提供 AWS/Amazon 凭据,尽管进行了本地设置

【问题讨论】:

  • 你能发布storage.yml文件的内容吗?具体来说,确保local 指令指向Disk
  • 谢谢。刚刚添加了
  • 如果我完全注释掉 Amazon 部分,我会收到此错误:缺少 :amazon Active Storage 服务的配置。可用于 [:test, :local] 的配置

标签: mysql ruby-on-rails amazon-web-services aws-sdk-ruby sharetribe


【解决方案1】:

Sharetribe 具有 aws-sdk-ruby 作为依赖项(请参阅:https://github.com/sharetribe/sharetribe/blob/master/Gemfile#L34)。

aws-sdk-ruby 需要一个设置了 AWS 凭证的配置文件才能运行。该文件位于~/.aws/credentials,格式如下:

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

这已记录在此处的 README 文件 (https://github.com/aws/aws-sdk-ruby#configuration) 以及此博客文章中:https://aws.amazon.com/blogs/security/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks

最初,我无法复制您的问题,因为我的本地计算机上确实存在该文件。但是,一旦我删除了~/.aws/credentials,我就可以复制这个问题。

【讨论】:

    【解决方案2】:

    我遇到了这个问题,然后这样解决了:

    在 Storage.yml 中注释掉整个 Amazon 块,类似于注释掉 google 块的方式。

    在 production.rb config.active_storage.service = :local

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 2018-11-30
      • 1970-01-01
      • 2019-01-26
      • 2019-09-13
      • 1970-01-01
      • 2013-01-13
      • 2018-05-07
      • 1970-01-01
      相关资源
      最近更新 更多