s3 HeadObject возвращает метаданные объекта, но вызов boto3 Copy Object периодически завершается ошибкой (NoSuchKey) - PullRequest
0 голосов
/ 09 июля 2020

Согласно документации AWS и сообществу по переполнению стека, лучший способ справиться с ошибкой 404 (NoSuchKey) для чтения после справа - это вызвать и повторить операцию HeadObject для указанного ключа c, пока она не будет успешной! Вот мой код:

# first writing objects into the prefix1 here
...

# copy files from the prefix1 to the prefix2
for obj in bucket.objects.filter(Prefix=prefix1):

   # this function make sure the specific key is available for read 
   # by calling HeadObject with retries - throwing exception otherwise
   waitForObjectToBeAvaiableForRead(bucketName, obj.key)

   copy_source = {
       "Bucket": bucketName,
       "Key": obj.key
   }
   new_key = obj.key.replace(prefix1, prefix2, 1)
   new_obj = bucket.Object(new_key)
   new_obj.copy(copy_source)

Этот код работает большую часть времени. Но очень РЕДКО я получаю эту ошибку для new_obj.copy(copy_source):

NoSuchKey:An error occurred (NoSuchKey) when calling the UploadPartCopy operation: The specified key does not exist.

Однако мои журналы показывают, что вызов HeadObject возвращает успешный ответ после нескольких попыток (что означает, что файл в конечном итоге согласован !!!) но операция копирования не выполняется! Может кто-нибудь объяснить, в чем может быть причина такого поведения? Оцените ваш ответ.

...