Я выдаю 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")