2

我正在按照以下说明在 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 凭证

4

2 回答 2

2

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

需要一个设置了 AWS 凭证的aws-sdk-ruby配置文件才能运行。该文件位于~/.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我就可以复制这个问题。

于 2020-07-22T20:36:58.890 回答
0

我遇到了这个问题,并像这样解决了它:

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

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

于 2021-01-19T17:50:03.057 回答