2011-10-30 5 views
0

J'utilise la gemme carrierwave pour gérer les téléchargements de fichiers dans mon application 3 rails, cependant, je ne suis pas capable de me connecter à mon seau amazon s3.Carrierwave et amazon s3

J'ai suivi les instructions sur le wiki mais elles ne sont pas assez détaillées, par exemple où dois-je stocker mes informations d'identification s3?

Répondre

7

Mettez quelque chose comme ça dans un initialiseur.

CarrierWave.configure do |config| 
    config.storage = :fog 
    config.fog_directory = 'your_bucket' 

    config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => 'your_access_key' 
    :aws_secret_access_key => 'your_secret_key', 
    :region => 'your_region' 
    } 
end 

Vous pouvez stocker vos informations d'identification droite dans le fichier, si vous voulez (et le code est privé). Ou à partir d'un fichier séparé, ou de la base de données, à vous. Ce qui suit chargerait un fichier de configuration et autoriserait différentes configurations basées sur l'env.

# some module in your app 
module YourApp::AWS 
    CONFIG_PATH = File.join(Rails.root, 'config/aws.yml') 

    def self.config 
    @_config ||= YAML.load_file(CONFIG_PATH)[Rails.env] 
    end 
end 

# config/aws.yml 
base: &base 
    secret_access_key: "your_secret_access_key" 
    access_key_id: "your_access_key_id" 
    region: your_region 
development: 
    <<: *base 
    bucket_name: your_dev_bucket 
production: 
    <<: *base 
    bucket_name: your_production_bucket 

# back in the initializer 
config.fog_directory = YourApp::AWS.config['bucket_name'] 
# ... 
config.fog_credentials = { 
    :provider => 'AWS', 
    :aws_access_key_id => YourApp::AWS.config['access_key_id'], 
    :aws_secret_access_key => YourApp::AWS.config['secret_access_key'], 
    :region => YourApp::AWS.config['region'] 
} 
1

Découvrez this quick blog post je l'ai écrit sur la façon de le faire. Fondamentalement, il y a quelques étapes, dont chacune est assez compliquée:

  • Configuration des clés de l'API (vous permettant de vous connecter à l'API Amazon S3)
  • Connexion des clés API à votre compte (assurez-vous de garder le les informations d'identification ne sont pas enregistrées dans GitHub si vous utilisez un dépôt public si)
  • Déployer les modifications.

Espérons que cela aide!