web-dev-qa-db-fra.com

Rails4.1: région manquante des erreurs AWS

J'essaie de créer un programme de téléchargement d'images à l'aide de Paperclip, du joyau d'aws-sdk et d'Amazon S3. Je reçois cette erreur:

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

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

Selon la documentation S3, je comprends que je dois passer à 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']
        }
    }

et ajouter une région à mon fichier .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'

J'ai redémarré le serveur et retesté mais j'obtiens toujours les mêmes erreurs.

mettre à jour

mettre à jour:

dans la console Rails

2.0.0p247: 001> ENV ["AWS_REGION"]

=> "us-west-2" 2.0.0p247: 002>

12
Neil

L'erreur provient de la gemme Paperclip. Dans votre config.Paperclip_defaults, vous avez utilisé region alors que vous auriez dû utiliser s3_region. Voici à quoi devrait ressembler la configuration:

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']
  }
}
16
Mike S

Vous avez une erreur de syntaxe dans votre fichier .env qui est probablement à l'origine de cette erreur.

Changement:

export AWS_REGION="'us-west-2'

à:

export AWS_REGION='us-west-2'

Rechargez le shell et réessayez.

Upate

Assurez-vous que votre hash ENV a la bonne region. Vous pouvez vérifier en tapant: ENV | grep AWS dans votre console.

Ajoutez ensuite region: ENV['AWS_REGION'] à votre 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']
        }
    }
0
K M Rakibul Islam