#amazon-web-services #amazon-s3
Вопрос:
Я пытаюсь использовать набор, хранящийся в S3, для ведения списка идентификаторов. Однако у меня есть небольшая проблема. Набор должен обновляться новым идентификатором с помощью функции lambda всякий раз, когда создается новая запись, но меня беспокоит перезапись, если две записи были сделаны одновременно. Это приведет к тому, что 2 отдельных экземпляра набора будут извлечены из S3, и один из пользователей перезапишет данные другого, а один из идентификаторов будет «потерян». Есть ли способ реализовать какую-то очередь, чтобы объект извлекался только после того, как функция lambda уже обновила объект после предыдущего извлечения?
Комментарии:
1. вы можете ограничить лямбду параллелизмом 1, гарантируя, что два процесса не будут выполняться одновременно. Это, конечно, ограничивает пропускную способность и не будет работать должным образом, если у вас есть, скажем, 10 событий в день / час, но в этот момент ваш подход S3 с одной единственной точкой синхронизации все равно не сработает.
Ответ №1:
Я сам этого не реализовал, но почему бы не попробовать включить управление версиями для вашего хранилища S3.Тогда вы не сможете перезаписать случайно, потому что у него всегда будет версия для каждого раза, когда что-то записывается в файл. Вам просто нужно усовершенствовать свой лямбда-код, чтобы затем работать с версиями файлов для записанного файлового объекта. Если у вас есть доступ к DynanoDb, то, возможно, лучше использовать его для выполнения «Условных обновлений» для ваших идентификаторов.Таким образом, у вас есть легкий механизм, гарантирующий, что вы не будете перезаписывать, не осознавая этого.