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