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']
        }
    }