S3 Возможная согласованность: безопасно ли удалять объект, пока для него есть выдающаяся копия? - PullRequest
0 голосов
/ 16 ноября 2018

Я выдаю S3 CopyObject (он же PUT-копию) из исходного контейнера, который отличается от целевого.Мне интересно, безопасно ли удалить источник после того, как CopyObject вернул OK клиенту REST?Под «безопасным» я подразумеваю, что целевой объект будет в конечном итоге обнаруживаться, и что он первоначально будет содержать все данных, доступных на момент выдачи копии.

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

(в моем сценарии ничего не записывается ни в исходный, ни в целевой ключ в промежуточный период. И тот же клиент делает копиюи удалите).

например, синхронный псевдокод:

try:

    # make sure this is a create. read-after-create consistency
    my_tmpname = "new_tempfile" + uuid4()
    s3_put(data, "s3://my-bucket1/" + my_tmpname)

    ...

    # copy it to its final location
    s3_copy("s3://my-bucket1/new_tempfile", "s3://my-bucket2/final_location")
finally:
    # Cleanup temp file.
    #
    # Can this delete interfere with the copy in flight?
    # e.g. Should one wait a few seconds/minutes?
    # e.g. Should one ensure that the target exists before deleting source?
    s3_delete("s3://my-bucket/new_tempfile")

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Да, совершенно безопасно удалить объект сразу после успешной операции копирования, используя этот объект в качестве исходного объекта, поскольку операции копирования не являются асинхронными.

Запрос на копирование не возвращается, пока операция не будет выполнена успешно или не пройдена.

Для повышения надежности данных операции Amazon S3 PUT и PUT Object синхронно сохраняют ваши данные на нескольких объектах перед возвратом SUCCESS.

https://docs.aws.amazon.com/AmazonS3/latest/dev/DataDurability.html

Модель согласованности в S3 связана только с видимостью объектов, а не с долговечностью их хранения.

0 голосов
/ 16 ноября 2018

Amazon S3 обеспечивает согласованность операций чтения и записи для PUT и примера копирования, который вы проиллюстрировали:

Модель согласованности данных Amazon S3

Amazon S3 обеспечивает согласованность чтения после записи для PUTS новых объекты в вашем S3 ведро во всех регионах с одной оговоркой. Предостережение является то, что если вы делаете HEAD или GET запрос к имени ключа (чтобы найти, если объект существует) перед созданием объекта Amazon S3 предоставляет возможная согласованность для чтения после записи.

Проверьте документацию на соответствие других операций.

https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...