from example aws python amazon-s3 bucket

python - example - cómo eliminar archivos de Amazon S3 Bucket?



python s3 (7)

¿A través de qué interfaz? Usando la interfaz REST, solo envía una eliminación :

DELETE /ObjectName HTTP/1.1 Host: BucketName.s3.amazonaws.com Date: date Content-Length: length Authorization: signatureValue

A través de la interfaz SOAP :

<DeleteObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Key>Nelson</Key> <AWSAccessKeyId> 1D9FVRAYCP1VJEXAMPLE=</AWSAccessKeyId> <Timestamp>2006-03-01T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </DeleteObject>

Si está utilizando una biblioteca de Python como boto , debería exponer una característica de "eliminar", como delete_key() .

Necesito escribir el código en python que eliminará el archivo requerido de un cubo de Amazon s3. Puedo conectarme al cubo de Amazon s3 y también para guardar archivos, pero ¿cómo puedo eliminar un archivo?


Me funcionó, pruébalo.

import boto import sys from boto.s3.key import Key import boto.s3.connection AWS_ACCESS_KEY_ID = ''<access_key>'' AWS_SECRET_ACCESS_KEY = ''<secret_access_key>'' Bucketname = ''bucket_name'' conn = boto.s3.connect_to_region(''us-east-2'', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, is_secure=True, calling_format = boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.get_bucket(Bucketname) k = Key(bucket) k.key = ''filename to delete'' bucket.delete_key(k)


Me sorprende que no haya esta manera fácil: key.delete() :

from boto.s3.connection import S3Connection, Bucket, Key conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY) bucket = Bucket(conn, S3_BUCKET_NAME) k = Key(bucket = bucket, name=path_to_file) k.delete()


Por ahora, he resuelto el problema usando la utilidad de Linux s3cmd . Lo usé así en Python:

delFile = ''s3cmd -c /home/project/.s3cfg del s3://images/anon-images/small/'' + filename os.system(delFile)


Usando Python boto3 SDK (y asumiendo que las credenciales están configuradas para AWS), lo siguiente eliminará un objeto especificado en un depósito:

import boto3 client = boto3.client(''s3'') client.delete_object(Bucket=''mybucketname'', Key=''myfile.whatever'')


Usando boto3 (actualmente versión 1.4.4) use S3.Object.delete() .

import boto3 s3 = boto3.resource(''s3'') s3.Object(''your-bucket'', ''your-key'').delete()


encontró una forma más de hacerlo usando el boto:

from boto.s3.connection import S3Connection, Bucket, Key conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY) b = Bucket(conn, S3_BUCKET_NAME) k = Key(b) k.key = ''images/my-images/''+filename b.delete_key(k)