无法从Rails应用程序中的S3 Development Bucket上传文件

时间:2015-04-25 06:12:49

标签: ruby-on-rails amazon-web-services amazon-s3

当从Nitrous.io以开发模式运行我的rails应用程序时,我无法访问我在AWS S3上设置的开发桶。上传按钮打开我的个人计算机,从那里我不想加载文件。 (即使我尝试从计算机加载文件时,也会收到一条很长的错误消息,说明"我们计算的请求签名与您提供的签名不符。检查您的密钥和签名方法"

我认为我没有正确配置AWS S3。

目前,我有一个IAM用户,我已将其分配给AdministratorAccess另外,我在application.yml文件中使用了正确的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。在fog.rb中,我从环境中读到了它。

我还应该补充说,我目前正在参加网络开发学徒计划。

很抱歉没有显示我的文件

这是我的application.yml,其中包含敏感数据:

SENDGRID_PASSWORD: alphanumberic
SENDGRID_USERNAME: -------@heroku.com
AWS_ACCESS_KEY_ID: alphanumeric
AWS_SECRET_ACCESS_KEY: alphanumeric
development:
  AWS_BUCKET: vmanamino-bloccit-development
production:
  AWS_BUCKET: vmanamino-bloccit-production

development:
  secret_key_base: alphanumeric
test:
  secret_key_base: alphanumeric

这是我的fog.rb文件,它从环境中读取值

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:  'AWS',
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key: ENV['AWS_ACCESS_KEY_ID'],       
  }

  config.fog_directory = ENV['AWS_BUCKET']

  config.fog_public = true
end

2 个答案:

答案 0 :(得分:1)

您为访问密钥和秘密访问密钥使用AWS_ACCESS_KEY_ID环境变量,而后者当然应该使用ENV['AWS_SECRET_ACCESS_KEY']

答案 1 :(得分:0)

我没有意识到我需要将KEY ID和SECRET KEY括在引号中。一旦我这样做,我就让它发挥作用。我可以将图像从我的计算机上传到S3。另外,我没有完全理解作业。我以为我的应用会从S3上传图片。现在,之前提出的错误是有道理的。我从计算机上传图像,将图像发送到S3。