2012-09-05 7 views
11

Aquí es el Fog walkthrough of creating a file (an S3 object) in a directory (an S3 bucket):¿Cómo crear un objeto S3 en un cubo con una llamada de niebla?

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 
) 

pero parece a mí como si esto requiere 2 llamadas a la API:

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

Si ya tengo el directorio (un cubo S3) creado, ¿cómo creo un archivo (un objeto S3) con solo una llamada de niebla?

Respuesta

15

Si sabes que existe el directorio que puede hacer

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

O, si ya tiene un cubo en el que desea almacenar el archivo, a continuación, lo que puede hacer es la siguiente:

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

y después de eso, podrá llamar a bucket.files.create, para almacenar archivos en ese depósito.

Espero que ayude!

+1

Esto requiere permisos de acceso diferentes: * ListAllMyBuckets * y * GetBucketLocation * en todos los sectores. – schmijos

+0

@JosuaSchmid ¡Buena captura! :) – facundofarias

+0

Esto hace una solicitud extra innecesaria. – mipmip

Cuestiones relacionadas