На boto2 мы можем сохранить объект, используя имя объекта Key в качестве ключа и предварительные условия (например, If-Match, If-None-Match и т. д.) внутри параметра dict заголовков, который будет отправлен с запросом PUT.
Пример:
# assume both bucket and key are created beforehand
fp_a = FakeWriteFile(file_size, 'A')
key.set_content_from_file(fp_a, headers={'If-Match': '*'})
Теперь для boto3 есть по крайней мере пара API, которые позволили бы нам поместить объект в ведро, например:
fp_a = FakeWriteFile(file_size, 'A')
bucket.Object('foo').put(Body=fp_a)
В качестве альтернативы, используя низкоуровневый клиент S3:
bucket.put_object(Key='foo', Body=fp_a)
Для двух приведенных выше случаев на boto3, где мне нужно добавить предварительные условия, чтобы гарантировать, что эти запросы PUT выполняются, если они соответствуют всем условиям, аналогично параметру заголовков boto2 с установленными предварительными условиями? Я пытался найти информацию о boto3 API DOC, но эти предварительные условия установлены только для операций GET: https://boto3.readthedocs.io/en/latest/reference/services/s3.html
Спасибо!