Código de ejemplo
Amazon Web Services (AWS) es un conjunto de servicios extremadamente populares para sitios web y aplicaciones, por lo que es importante saber cómo interactuar con los distintos servicios. Aquí, nos centramos en el Servicio de almacenamiento simple (S3), que es esencialmente un servicio de almacenamiento de archivos.
Te puede interesar:Revisión del curso: Machine Learning AZ: Python y R prácticos en ciencia de datosTodos los archivos deben asignarse a un depósito, al que se le asigna un nombre y se puede dirigir mediante http://s3.amazonaws.com/{bucket}/{key}
. A cada archivo se le asigna una clave única, que se puede utilizar más adelante para recuperar el archivo.
Hay muchas otras opciones para asignar a depósitos y archivos (cifrado, ACL, etc.), pero no hablaremos mucho aquí. Solo observe las referencias a ‘lectura pública’, que permite que cualquiera pueda descargar el archivo.
Te puede interesar:Agrupación de K-medias con Scikit-LearnEl código
El siguiente código muestra, en Python usando boto, cómo cargar un archivo en S3.
Te puede interesar:Guía para principiantes de ngrx y Angularimport os
import boto
from boto.s3.key import Key
def upload_to_s3(aws_access_key_id, aws_secret_access_key, file, bucket, key, callback=None, md5=None, reduced_redundancy=False, content_type=None):
"""
Uploads the given file to the AWS S3
bucket and key specified.
callback is a function of the form:
def callback(complete, total)
The callback should accept two integer parameters,
the first representing the number of bytes that
have been successfully transmitted to S3 and the
second representing the size of the to be transmitted
object.
Returns boolean indicating success/failure of upload.
"""
try:
size = os.fstat(file.fileno()).st_size
except:
# Not all file objects implement fileno(),
# so we fall back on this
file.seek(0, os.SEEK_END)
size = file.tell()
conn = boto.connect_s3(aws_access_key_id, aws_secret_access_key)
bucket = conn.get_bucket(bucket, validate=True)
k = Key(bucket)
k.key = key
if content_type:
k.set_metadata('Content-Type', content_type)
sent = k.set_contents_from_file(file, cb=callback, md5=md5, reduced_redundancy=reduced_redundancy, rewind=True)
# Rewind for later use
file.seek(0)
if sent == size:
return True
return False
Usando el código
Y así es como usarías el código:
Te puede interesar:Introducción a ELK StackAWS_ACCESS_KEY = 'your_access_key'
AWS_ACCESS_SECRET_KEY = 'your_secret_key'
file = open('someFile.txt', 'r+')
key = file.name
bucket="your-bucket"
if upload_to_s3(AWS_ACCESS_KEY, AWS_ACCESS_SECRET_KEY, file, bucket, key):
print 'It worked!'
else:
print 'The upload failed...'
boto funciona con mucho más que S3, también puede acceder EC2, SES, SQSy casi todos los demás servicios de AWS. Los documentos de boto son geniales, por lo que leerlos debería darte una buena idea de cómo usar los otros servicios. Pero si no, publicaremos más ejemplos de boto, como cómo recuperar los archivos de S3.
Te puede interesar:Problema diario de codificación: Programación de acertijos en su bandeja de entradaRecursos