我正在使用Spree 3.1。要使用Heroku,我需要AWS S3 tp存储图片。 花了这么多时间使用KeyError本地和Heroku。
答案 0 :(得分:2)
喜欢在这里分享:
在AWS S3文档中为ID和access_key_id以及secret_access_key创建IAM USER。为了使其工作,我需要创建个人资料并设置管理员权限。
只在需要的环境中粘贴它,例如:config / environments / production.rb和development.rb
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
请勿替换该值。代替 对于Heroku:
heroku config:set S3_BUCKET_NAME=your-bucket-name AWS_ACCESS_KEY_ID=your-access-key-id AWS_SECRET_ACCESS_KEY=your-secret-access-key AWS_REGION=your-region
对于本地人: 我们在.env中添加值
$ cat .env
S3_BUCKET_NAME=your-bucket-name-development
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key
不要“引用”这些值
答案 1 :(得分:0)
您必须替换
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
作者
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV['S3_BUCKET_NAME'],
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'],
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'],
s3_region: ENV.fetch'AWS_REGION'],
}
}