2017-08-17 2 views
1
>>> import boto 
>>> s3 = boto.connect_s3('<access_key>', '<secret_key>') 
>>> bucket = s3.lookup('donebox-static') 
>>> key = bucket.new_key('testkey') 
>>> key.set_contents_from_string('This is a test') 
>>> key.exists() 
>>> key.delete() 

en supprimant, j'ai eu l'erreur suivante. J'utilise la machine Linux mais je suis capable de supprimer le fichier de Windows machine. erreur est:J'essaye de supprimer le dossier du seau S3 en utilisant python mais je ne peux pas supprimer le dossier

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/key.py", line 558, in delete 
    headers=headers) 
    File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/bucket.py", line 762, in delete_key 
    query_args_l=None) 
    File "/usr/lib/python2.7/site-packages/boto-2.48.0-py2.7.egg/boto/s3/bucket.py", line 781, in _delete_key_internal 
    response.reason, body) 
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>6CF28CE4F8227FAE</RequestId><HostId>mrS5DIDHvXgweWSlwmQYVE0H05jsnepXd+3PiMqHcjXhWPkfo8ibeWA9rBcm7fKkdAO2f/fUTjo=</HostId></Error 

>

Répondre

0

Votre code est parfaitement bien. (J'ai testé sur mon propre seau, il a bien fonctionné.)

Le message d'erreur est Access Denied. Cela signifie que l'entité associée à vos informations d'identification AWS (très probablement votre utilisateur IAM) n'est pas autorisée à supprimer cet objet. Ou, très probablement, n'importe quel objet dans ce seau.

choses à vérifier:

  • Regardez les politiques sur votre IAM utilisateur (ou autre entité est associée à des informations d'identification que vous utilisez)
  • Regardez la politique Bucket sur la donebox-static seau

Cochez ces deux stratégies pour déterminer pourquoi vous n'êtes pas autorisé à supprimer des objets. Rappelez-vous - par défaut, vous n'êtes pas autorisé à faire quoi que ce soit donc vous cherchez une politique que ne vous accorder DeleteObject autorisations.

+0

même code fonctionne aussi pour moi quand j'ai essayé avec un seau différent dans une région différente, je ne sais pas pourquoi cela se produit. –