2014-01-22 3 views
2

Я хочу удалить несколько ключей GCS с Boto. В нем documentation это предполагает, что существует метод удаления нескольких объектов (delete_keys), однако я не могу заставить его работать.Удаление нескольких объектов в Boto Google Cloud Storage

Согласно этому article можно на Amazon S3:

s3 = boto.connect_s3() 
bucket = s3.get_bucket("basementcoders.logging") 
result = bucket.delete_keys([key.name for key in bucket if key.name[-1] == '6']) 
result.deleted 

Однако, когда я пытаюсь то же самое для Google Storage не работает:

 bucket = BotoConnection().get_bucket(bucketName) 
     keys = [key for key in bucket] 
     print len(keys) 
     result = bucket.delete_keys(keys) 
     print result.deleted 
     print result.errors 


Traceback (most recent call last): 
    File "gcsClient.py", line 166, in <module> 
    GcsClient.deleteMultipleObjects('debug_bucket') 
    File "gcsClient.py", line 155, in deleteMultipleObjects 
    result = bucket.delete_keys(keys) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/bucket.py", line 583, in delete_keys 
    while delete_keys2(headers): 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/bucket.py", line 582, in delete_keys2 
    body) 
boto.exception.GSResponseError: GSResponseError: 400 Bad Request 
+0

Вы должны спросить boto на вопрос. https://github.com/boto/boto/issues – okwap

+0

Проблема добавлена ​​в https://github.com/boto/boto/issues – user3222802

ответ

1

Это использует S3-х мульти- API удаления объектов, которые Google Cloud Storage не поддерживает. Таким образом, это невозможно сделать для Google Cloud Storage - вам нужно будет вызвать delete_key() один раз за ключ.

+0

любая идея, если она по-прежнему остается прежней? –

Смежные вопросы