【发布时间】:2017-07-20 23:06:55
【问题描述】:
Paperclip 可以在没有 AWS 的情况下工作,但是当我尝试使用 S3 存储时它会中断。
#production.rb
config.paperclip_defaults = {
storage: :s3,
s3_region: ENV["AWS_REGION"],
s3_credentials: {
# s3_host_name: ENV["AWS_HOST_NAME"],
bucket: ENV["S3_BUCKET_NAME"],
access_key_id: ENV["AWS_ACCESS_KEY_ID"],
secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
}
}
config.paperclip_defaults = { s3_host_name: "s3-us-west-1.amazonaws.com", }
# Added this line to fix: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
在添加最后一行之前,我收到了 S3 错误 (The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.)。添加后,文件将上传到本地存储而不是 S3。
我也尝试将这些添加到 paperclip.rb 中,但出现了不同的错误。当我添加所有 3 行时,我收到错误 Read-only file system @ dir_s_mkdir - /projects
#paperclip.rb
# Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
# Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
#
# Paperclip::Attachment.default_options[:s3_host_name] = 's3-us-west-1.amazonaws.com'
宝石文件:
gem "paperclip", "~> 5.0.0"
gem 'aws-sdk', '~> 2.3'
我也试过 rake assets:precompile RAILS_ENV=production 似乎没有帮助
编辑: AWS_HOST_NAME:s3-us-west-1.amazonaws.com
AWS_REGION: us-west-1
S3_BUCKET_NAME:基础图像-2
AWS_ACCESS_KEY_ID:...
AWS_SECRET_ACCESS_KEY:...
我已设置 IAM 帐户并在 us-west-1 区域创建了存储桶。我需要在 S3 上做些什么来添加权限吗?
我不明白为什么 Paperclip 将其存储在本地,如果配置用于 S3,则没有任何错误或任何东西..
【问题讨论】:
-
这是昨天发生的吗?
-
它仍在发生。我认为这与 S3 中断无关
-
值得一试。您能否添加您从 S3 收到的错误消息?另外,您添加的最后一行,您是否在
production.rb的第一个配置设置下方添加了它? -
编辑添加了我看到的 2 个不同的错误
-
你的配置看起来很可靠......我会做两件事:1)将
s3_host_name添加到初始配置哈希中,否则,看起来你只是覆盖了初始配置设置。 2) 确认您的 ENV 变量是正确的,并且您在正确的区域中创建了存储桶,US Standard。
标签: ruby-on-rails amazon-web-services amazon-s3 paperclip