- Ejemplos de Ruby AWS::SDK (gema aws-sdk-v1)
- Crear una Conexión
- Enlistar los Buckets Propios
- Crear un Bucket
- Enlistar un Contenido de un Bucket
- Eliminar un Bucket
- Forzar la eliminación de Buckets que no están vacíos
- Crear un Object
- Cambiar el ACL de un Object
- Descargar un Object (a un archivo)
- Eliminar un Object
- Generar URL de descarga de Objects (firmados y sin firmar)
- Ejemplos de Ruby AWS::S3 (gema aws-s3)
- Crear una Conexión
- Enlistar Buckets Propios
- Crear un Bucket
- Enlistar el Contenido de un Bucket
- Eliminar un Bucket
- Forzar la Eliminación de Buckets no vacíos
- Crear un Object
- Cambiar el ACL de un Object
- Descargar un Object (a un archivo)
- Eliminar un Object
- Generar URL de Descarga de un Object (firmado y sin firmar)
Ejemplos de Ruby AWS::SDK (gema aws-sdk-v1)
Este artículo enlista muchos ejemplos de código de Ruby para interactuar con DreamObjects.
Crear una Conexión
Crea una conexión para que puedas interactuar con DreamObjects.
AWS.config( :s3_endpoint => 'objects-us-east-1.dream.io', :access_key_id => 'my-access-key', :secret_access_key => 'my-secret-key' )
Crear una instancia de un Object de Cliente.
s3 = AWS::S3.new
Enlistar Buckets Propios
Obtiene una lista de Buckets que posees e imprime el nombre.
s3.buckets.each do |bucket| puts bucket.name end
La salida va a verse más o menos así:
mahbuckat1 mahbuckat2 mahbuckat3
Crear un Bucket
Crea un nuevo bucket llamado my-new-bucket.
s3.buckets.create('my-new-bucket')
Enlista un Contenido de un Bucket
Obtiene una lista de hashes con el contenido de cada Object. Esto también imprime el nombre de cada Object, el tamaño del archivo y la fecha de la última modificación.
new_bucket = s3.buckets['my-new-bucket'] new_bucket.objects.each do |obj| puts "#{obj.key}\t#{obj.content_length}\t#{obj.last_modified}" end
La salida se verá más o menos así si el bucket tiene algunos archivos:
myphoto1.jpg 251262 2011-08-08 21:35:48 -0400 myphoto2.jpg 262518 2011-08-08 21:38:01 -0400
Eliminar un Bucket
El Bucket debe estar vacío, si no, no funcionará.
bucket = s3.buckets['my-new-bucket'] bucket.delete
Forzar la Eliminación de Buckets que no están vacíos
bucket = s3.buckets['my-new-bucket'] bucket.delete!
Crear un Object
Crear un archivo hello.txt
con la cadena "Hello World!"
bucket = s3.buckets['my-new-bucket'] obj = bucket.objects.create( 'hello.txt', 'Hello World!', )
Sube un archivo test.txt
, configura el tipo de contenido, y lo hace legible al público.
obj = s3.buckets['my-new-bucket'].objects['test.txt'] obj.write(File.open('path/to/test.txt', 'rb') :content_type => 'text/plain', :acl => 'public_read', )
Cambiar el ACL de un Object
Hace al object hello.txt
legible al público y secret_plans.txt
para ser privado.
bucket = s3.buckets['my-new-bucket'] bucket.objects['hello.txt'].acl = :public_read bucket.objects['secret_plans.txt'].acl = :private
Descargar un Object (a un archivo)
Descarga un archivo poetry.pdf
y lo guarda en /home/username/documents/.
Asegúrate de cambiar username a tu usuario Shell.
bucket = s3.buckets['my-new-bucket'] File.open('/home/username/documents/poetry.pdf', 'w') do |file| bucket.objects['poetry.pdf'].read do |chunk| file.write(chunk) end end
Eliminar un Object
Elimina el object goodbye.txt.
bucket = s3.buckets['my-new-bucket'] bucket.objects.delete('goodbye.txt')
Generar URL de Descarga de un Object (firmado y sin firmar)
Esto genera una URL de descarga sin asignar para hello.txt
. Esto funciona por que hello.txt
fue hecho público configurando el ACL de arriba. Esto genera entonces una URL firmada para secret_plans.txt
que funcionará durante 1 hora. Las URL de descarga firmadas funcionarán durante el período de tiempo, incluso si el objeto es privado (cuando finalice el período de tiempo, la URL dejará de funcionar).
puts s3.buckets['my-new-bucket'].objects['hello.txt'].public_url puts s3.buckets['my-new-bucket'].objects['secret_plans.txt'].url_for( :read, :expires => 60 * 60 )
La salida de esto se verá más o menos así:
https://objects-us-east-1.dream.io/my-bucket-name/hello.txt https://objects-us-east-1.dream.io/my-bucket-name/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX
Ejemplos de Ruby AWS::S3 (gema aws-s3)
Crear una Conexión
Crear una conexión para que puedas interactuar con el servidor.
AWS::S3::Base.establish_connection!( :server => 'objects-us-east-1.dream.io', :use_ssl => true, :access_key_id => 'my-access-key', :secret_access_key => 'my-secret-key' )
Enlistar Buckets Propios
Obtiene una lista de los objects AWS::S3::Bucket que posees. Esto también imprime el nombre del bucket y la fecha de creación de cada bucket.
AWS::S3::Service.buckets.each do |bucket| puts "#{bucket.name}\t#{bucket.creation_date}" end
La salida se verá mas o menos así:
mahbuckat1 2011-04-21T18:05:39.000Z mahbuckat2 2011-04-21T18:05:48.000Z mahbuckat3 2011-04-21T18:07:18.000Z
Crear un Bucket
Crea un bucket llamado my-new-bucket.
AWS::S3::Bucket.create('my-new-bucket')
Enlistar el Contenido de un Bucket
Obtiene una lista de hashes con el contenido de cada object. Esto también imprime el nombre de cada object, el tamaño del archivo y la fecha de la última modificación.
new_bucket = AWS::S3::Bucket.find('my-new-bucket') new_bucket.each do |object| puts "#{object.key}\t#{object.about['content-length']}\t#{object.about['last-modified']}" end
La salida se verá más o menos así si el bucket tiene algunos archivos:
myphoto1.jpg 251262 2011-08-08T21:35:48.000Z myphoto2.jpg 262518 2011-08-08T21:38:01.000Z
Eliminar un Bucket
El Bucket debe estar vacío, si no, no funcionará.
AWS::S3::Bucket.delete('my-new-bucket')
Forzar la Eliminación de Buckets no vacíos
AWS::S3::Bucket.delete('my-new-bucket', :force => true)
Crear un Object
Crea un archivo hello.txt
con la cadena "Hello World!"
AWS::S3::S3Object.store( 'hello.txt', 'Hello World!', 'my-new-bucket', :content_type => 'text/plain' )
Cambiar el ACL de un Object
Hace al objeto hello.txt
legible paga el público y secret_plans.txt
para ser privado.
policy = AWS::S3::S3Object.acl('hello.txt', 'my-new-bucket') policy.grants = [ AWS::S3::ACL::Grant.grant(:public_read) ] AWS::S3::S3Object.acl('hello.txt', 'my-new-bucket', policy) policy = AWS::S3::S3Object.acl('secret_plans.txt', 'my-new-bucket') policy.grants = [] AWS::S3::S3Object.acl('secret_plans.txt', 'my-new-bucket', policy)
Descargar un Object (a un archivo)
Descarga el object poetry.pdf
y lo guarda en /home/username/documents/.
Asegúrate de cambiar username a tu usuario Shell.
open('/home/username/documents/poetry.pdf', 'w') do |file| AWS::S3::S3Object.stream('poetry.pdf', 'my-new-bucket') do |chunk| file.write(chunk) end end
Eliminar un Object
Elimina el object goodbye.txt.
AWS::S3::S3Object.delete('goodbye.txt', 'my-new-bucket')
Generar URL de Descarga de un Object (firmado y sin firmar)
Esto genera una URL de descarga sin asignar para hello.txt
. Esto funciona por que hello.txt
fue hecho público configurando el ACL de arriba. Esto genera entonces una URL de descarga firmada para secret_plans.txt
que funcionará durante 1 hora. Las URL de descarga firmadas funcionarán durante el período de tiempo, incluso si el object es privado (cuando finalice el período de tiempo, la URL dejará de funcionar).
puts AWS::S3::S3Object.url_for( 'hello.txt', 'my-new-bucket', :authenticated => false ) puts AWS::S3::S3Object.url_for( 'secret_plans.txt', 'my-new-bucket', :expires_in => 60 * 60 )
La salida se verá más o menos así:
https://objects-us-east-1.dream.io/my-bucket-name/hello.txt https://objects-us-east-1.dream.io/my-bucket-name/secret_plans.txt?Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXX&Expires=1316027075&AWSAccessKeyId=XXXXXXXXXXXXXXXXXXX