Для этого есть две возможные причины: одна очевидная, а другая - не столь очевидная, пока вы не вспомните, что S3 - это масштабная глобально распределенная система.
Если корзина удаляется после того, как ваш скрипт извлекает список, это будет очевидной причиной. Поскольку вы говорите, что запускали сценарий несколько раз, чтобы обойти ошибку, это, вероятно, не проблема, но определенно следует помнить.
Другим, менее очевидным случаем будет удаление корзины за несколько минут до запуска сценария. S3 поддерживает глобальный список всех имен сегментов, и этот список реплицируется во все регионы. После удаления сегмента реплика индекса, используемая для обслуживания вашего запроса, может еще не знать, что сегмент удален.
Разумно предположить, что это условие , вероятно, станет более вероятным или будет длиться дольше при двух условиях: недавно удаленный сегмент находится в другом регионе, чем тот, к которому вы подключаетесь, и регион, к которому вы подключаетесь, это регион, отличный от us-east-1. Это кажется вероятным, поскольку под капотом us-east-1 является официальным хранителем авторитетного списка сегментов, поэтому любая из этих двух вещей или обе могут увеличить задержку до достижения глобальной согласованности. (Обратите внимание, что во время относительно кратковременного простоя us-east-1 2017 года S3 во всех других регионах функционировал почти идеально, но создать ведро в любом регионе S3 было невозможно).
В любом случае вам нужно перехватить исключение и продолжить.