Предупреждение AWS в документации S3 предполагает, что они используют слой кэширования поверх базы данных, которую они используют для хранения сведений об объектах в S3, таких как их ключ и метаданные.
Если вы сделаете PUT
для объекта в качестве первой операции и GET
после этого, произойдет пропуск кэша для операции GET
, поэтому слой кэширования будет извлекать информацию об этом объекте из базы данных.
Если вы выполните GET
до PUT
, то слой кэширования запросит базу данных, получит информацию о том, что этот объект не существует, и кеширует эту информацию, даже если после PUT
создается упомянутый объектвскоре после. Таким образом, GET
после PUT
получит информацию о том, что объект не существует из кэша.
Возможно, поэтому существует эта оговорка. К сожалению, это не отвечает на ваш вопрос, потому что мы не знаем, как работает этот уровень кэширования. Если этот уровень использует общее состояние, вы должны получить ответ 200
на все запросы, как только вы получите один ответ с 200
. Я предполагаю, что они не используют общее состояние для слоя кэширования, поскольку это легче масштабировать. Без общего состояния это зависит от вашей удачи, времени жизни для элементов в кеше и от того, используют ли они некую недействительность кеша для обновленных объектов, получаете ли вы 200
или 404
для запросов даже после первогоуспешный 200
запрос.
Поскольку детали внутренней работы S3 неизвестны, я не буду полагаться на последующие вызовы, чтобы преуспеть, но я предполагаю, что вероятность получения 404
после успешного200
довольно низкий. В конце концов, в зависимости от вашего варианта использования вы должны решить, имеет ли смысл объяснять эту ситуацию и как.