可以使用Paperclip和AWS S3上传但不能删除Heroku上的图像

时间:2016-01-14 17:04:32

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

为Paperclip正确配置了S3凭据:

2016-01-14T15:48:48.079923+00:00 app[web.1]: Completed 500 Internal Server Error in 591ms (ActiveRecord: 60.3ms)
2016-01-14T15:48:48.082519+00:00 app[web.1]:
2016-01-14T15:48:48.082522+00:00 app[web.1]: AWS::Errors::MissingCredentialsError (
2016-01-14T15:48:48.082523+00:00 app[web.1]: Missing Credentials.
2016-01-14T15:48:48.082524+00:00 app[web.1]:
2016-01-14T15:48:48.082525+00:00 app[web.1]: Unable to find AWS credentials.  You can configure your AWS credentials
2016-01-14T15:48:48.082526+00:00 app[web.1]: a few different ways:
2016-01-14T15:48:48.082526+00:00 app[web.1]:
2016-01-14T15:48:48.082527+00:00 app[web.1]: * Call AWS.config with :access_key_id and :secret_access_key
2016-01-14T15:48:48.082528+00:00 app[web.1]:
2016-01-14T15:48:48.082529+00:00 app[web.1]: * Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to ENV
2016-01-14T15:48:48.082529+00:00 app[web.1]:
2016-01-14T15:48:48.082530+00:00 app[web.1]: * On EC2 you can run instances with an IAM instance profile and credentials
2016-01-14T15:48:48.082531+00:00 app[web.1]:   will be auto loaded from the instance metadata service on those
2016-01-14T15:48:48.082531+00:00 app[web.1]:   instances.
2016-01-14T15:48:48.082532+00:00 app[web.1]:
2016-01-14T15:48:48.082533+00:00 app[web.1]: * Call AWS.config with :credential_provider.  A credential provider should
2016-01-14T15:48:48.082533+00:00 app[web.1]:   either include AWS::Core::CredentialProviders::Provider or respond to
2016-01-14T15:48:48.082534+00:00 app[web.1]:   the same public methods.

我确实看到了Heroku UI中设置的环境变量,我可以很好地上传照片。

但是,当我尝试在生产中销毁给定模型时,我在日志中收到此错误:

AWS::Errors::MissingCredentialsError

这一切在本地也很好(显然使用不同的S3存储桶)。有什么问题?为什么即使上传工作正常,我也只是在生产中{{1}}?

1 个答案:

答案 0 :(得分:1)

您可能希望确保您使用的是aws-sdk gem v1而不是aws-sdk v2。日志使它看起来像你在v1(" AWS ::") - 如果你在aws-sdk v2上,回形针不会起作用。不要以为thinkbot会继续支持它,我建议你研究使用jquery-file-uploader(https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails#pre-signed-post)直接上传到s3 - 注意文章没有显示aws-sdk-v2说明。下面链接的答案确实使用了aws-sdk-v2:

Rails direct to S3 upload using aws-sdk gem and jQuery-File-Upload on heroku