Rails4.1: ошибки AWS отсутствуют
Я пытаюсь создать загрузчик изображений, используя paperclip, драгоценный камень aws-sdk и Amazon S3.
Я получаю эту ошибку:
Aws::Errors::MissingRegionError in ProjectsController#create.
Missing region; use :region option or export region name to ENV['AWS_REGION']. using Oregon region.
projects_controller.rb
def create
@project = current_user.projects.new(project_params)
@project.save
respond_with(@project)
end
файл application.rb
config.paperclip_defaults = {
storage: :s3,
s3_host_name: "s3-us-west-2.amazonaws.com",
s3_credentials: {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
}
В соответствии с документацией S3 я понимаю, что мне нужно перейти на ENV ['AWS_REGION']
config.paperclip_defaults = {
storage: :s3,
region: "ENV['AWS_REGION"],
s3_credentials: {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
}
и добавьте область в мой .env файл
export AWS_BUCKET=realv1
export AWS_ACCESS_KEY_ID=<MY_ACCESS_KEY_ID_HERE>
export AWS_SECRET_ACCESS_KEY=<MY_ACCESS_KEY_HERE>
export AWS_REGION="'us-west-2'
Я перезагрузил сервер и повторно протестировал, но все равно получаю те же ошибки.
update
обновление:
в консоли rails
2.0.0p247: 001 > ENV [ "AWS_REGION" ]
= > "us-west-2"
2.0.0p247: 002 >
Ответы
Ответ 1
Ошибка исходит из драгоценного камня Paperclip. В config.paperclip_defaults
вы использовали region
, когда вы должны были использовать s3_region
. Вот как выглядит config:
config.paperclip_defaults = {
:storage => :s3,
:s3_region => ENV['AWS_REGION'],
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
Ответ 2
У вас есть синтаксическая ошибка в файле .env
, который, скорее всего, вызывает эту ошибку.
Изменить:
export AWS_REGION="'us-west-2'
в
export AWS_REGION='us-west-2'
Перезагрузите оболочку и повторите попытку.
Upate
Убедитесь, что ваш хэш ENV
имеет правильный region
. Вы можете проверить, набрав: ENV | grep AWS
в консоли.
Затем добавьте region: ENV['AWS_REGION']
к вашему s3_credentials
:
config.paperclip_defaults = {
storage: :s3,
region: ENV['AWS_REGION'],
s3_credentials: {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
}