Prueba esto...
import boto
import boto.s3
import sys
from boto.s3.key import Key
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
bucket_name = AWS_ACCESS_KEY_ID.lower() + '-dump'
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(bucket_name,
location=boto.s3.connection.Location.DEFAULT)
testfile = "replace this with an actual filename"
print 'Uploading %s to Amazon S3 bucket %s' % \
(testfile, bucket_name)
def percent_cb(complete, total):
sys.stdout.write('.')
sys.stdout.flush()
k = Key(bucket)
k.key = 'my test file'
k.set_contents_from_filename(testfile,
cb=percent_cb, num_cb=10)
[ACTUALIZACIÓN] No soy un pitonista, así que gracias por los avisos sobre las declaraciones de importación. Además, no recomendaría colocar credenciales dentro de su propio código fuente. Si está ejecutando esto dentro de AWS, use credenciales de IAM con perfiles de instancia ( http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html ) y para mantener el mismo comportamiento en su entorno de desarrollo / prueba, utilice algo como Hologram de AdRoll ( https://github.com/AdRoll/hologram )
No hay necesidad de hacerlo tan complicado:
fuente
key.set_contents_from_filename('some_file.zip')
también funcionaría aquí. Ver doc . El código correspondiente para boto3 se puede encontrar aquí .fuente
aws configure
, ingrese su información y se conectará automáticamente con boto3. Consulte boto3.readthedocs.io/en/latest/guide/quickstart.htmlaws configure
anticipación para facilitar su vida.Usé esto y es muy simple de implementar.
https://www.smore.com/labs/tinys3/
fuente
boto3.client
embargo, una solución simple (como la respuesta de Manish Mehra) funcionó de inmediato.fuente
aws_access_key_id
yaws_secret_access_key
también puede configurarse con la AWS CLI y almacenarse fuera del script para que se pueda llamar a `client = boto3.client ('s3')Sube el archivo a s3 dentro de una sesión con credenciales.
fuente
Esto también funcionará:
fuente
Este es un trazador de líneas de tres. Simplemente siga las instrucciones de la documentación de boto3 .
Algunos argumentos importantes son:
Parámetros:
str
): la ruta al archivo para cargar.str
): el nombre del bucket al que se cargará.str
): el nombre del que desea asignar a su archivo en su depósito s3. Este podría ser el mismo que el nombre del archivo o un nombre diferente de su elección, pero el tipo de archivo debe seguir siendo el mismo.Nota: Supongo que ha guardado sus credenciales en una
~\.aws
carpeta como se sugiere en las mejores prácticas de configuración en la documentación de boto3 .fuente
fuente
Usando boto3
Para más: - https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html
fuente
Para cargar un ejemplo de carpeta como el siguiente código y la imagen de la carpeta S3
PD: para obtener más URL de referencia
fuente
fuente
Tengo algo que me parece que tiene un poco más de orden:
Hay tres variables importantes en este caso, el CUBO const, el file_to_upload y el nombre_archivo
BUCKET
: es el nombre de su bucket de S3file_to_upload_path
: debe ser la ruta del archivo que desea cargarfile_name
: es el archivo resultante y la ruta en su depósito (aquí es donde agrega carpetas o lo que sea)Hay muchas formas, pero puede reutilizar este código en otro script como este
fuente