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)