我尝试设置Amazon S3支持,以使用refinerycms在云端存储图像。
我在https://console.aws.amazon.com/s3/
创建了一个存储桶我将它命名为应用程序'bee-barcelona',它表示它属于美国标准区域
在~/config/initializers/refinery/images.rb
我输入了所有数据(其中'xxx?代表我输入的实际密钥:
# Configure S3 (you can also use ENV for this)
# The s3_backend setting by default defers to the core setting for this but can be set just for images.
config.s3_backend = Refinery::Core.s3_backend
config.s3_bucket_name = ENV['bee-barcelona']
config.s3_access_key_id = ENV['xxx']
config.s3_secret_access_key = ENV['xxx']
config.s3_region = ENV['xxx']
然后我将更改应用于heroku:
heroku config:add S3_KEY=xxx S3_SECRET=xxx S3_BUCKET=bee-barcelona S3_REGION=us-standard
但是,在我尝试上传的应用中,我只会得到:“抱歉,有些错误”。
我错过了什么?
答案 0 :(得分:1)
多么可悲的错误。直到我跑了10公里跑,我才想到那个选择......
我将应用设置为“养蜂” 我在亚马逊上的水桶名为“bee-barcelona”
我确实在应用中注册了正确的存储桶。仍然炼油厂试图继续前往另一个名为“养蜂”的人。使用我的密钥,我的文件无法在那里结束。
我创建了一个新的应用程序和一个新的存储桶,所有这些都是疯狂的名字,但是!它们在AmazonS3和GIT上都是一样的!!!
不,它就像魅力一样。
多么罕见的情况......
答案 1 :(得分:0)
我这样做的方式如下:
你看到了吗?美国标准,而非俄勒冈,而不是其他地方。
将Gems添加到Gemfile
gem "fog"
gem "unf"
gem "dragonfly-s3_data_store"
在config / application.rb
中config.assets.initialize_on_precompile = true
在config / environments / production.rb
中Refinery::Core.config.s3_backend = true
在config / environments / development.rb
中Refinery::Core.config.s3_backend = false
为heroku(生产)和本地存储配置S3以进行开发。在config / initializers / refinery / core.rb
中if Rails.env.production?
config.s3_backend = true
else
config.s3_backend = false
end
config.s3_bucket_name = ENV['S3_BUCKET']
config.s3_region = ENV['S3_REGION']
config.s3_access_key_id = ENV['S3_ACCESS_KEY']
config.s3_secret_access_key = ENV['S3_SECRET_KEY']
向heroku添加变量:
heroku config:add S3_ACCESS_KEY=xxxxxx S3_SECRET_KEY=xxxxxx S3_BUCKET=bucket-name-here S3_REGION=us-east-1
我遇到了很多问题,因为我在S3_REGION = us-standard之前就已经有了。这是错的。如图所示设置US-Standard存储桶:
S3_REGION =我们 - 东 - 1
在Rails 4.2.1和refinery 3.0.0上,这对我来说完美无缺。另外,请确保使用完全相同的变量名称。有时它会说S3_KEY而不是S3_ACCESS_KEY或S3_SECRET而不是S3_SECRET_KEY。只需确保您的文件和Heroku变量中包含相同的文件。