2012-09-05 17 views
11

Ecco il Fog walkthrough of creating a file (an S3 object) in a directory (an S3 bucket):Come creare un oggetto S3 in un bucket con una chiamata di nebbia?

connection = Fog::Storage.new({ 
    :provider     => 'AWS', 
    :aws_access_key_id  => YOUR_AWS_ACCESS_KEY_ID, 
    :aws_secret_access_key => YOUR_AWS_SECRET_ACCESS_KEY 
}) 

directory = connection.directories.create(
    :key => "fog-demo-#{Time.now.to_i}", # globally unique name 
    :public => true 
) 

file = directory.files.create(
    :key => 'resume.html', 
    :body => File.open("/path/to/my/resume.html"), 
    :public => true 
) 

ma sembra a me come se questo richiede 2 chiamate API:

  1. connection.directories.create
  2. directory.files.create

Se ho già la directory (un bucket S3) creato, come posso creare un file (un oggetto S3) con una sola chiamata di nebbia?

risposta

15

Se si conosce la directory esiste si può fare

dir = connection.directories.new(:key => 'foo')# no request made 
dir.files.create(...) 
3

o, se già hanno un secchio in cui si desidera memorizzare il file, allora che cosa si può fare è il seguente:

bucket = connection.directories.get({BUCKET_NAME}) 

e dopo potrai chiamare bucket.files.create, per memorizzare i file su quel bucket.

Spero che aiuti!

+1

Ciò richiede tuttavia diverse autorizzazioni di accesso: * ListAllMyBuckets * e * GetBucketLocation * su tutti i bucket. – schmijos

+0

@JosuaSchmid Buona cattura! :) – facundofarias

+0

Ciò rende una richiesta extra non necessaria. – mipmip

Problemi correlati