AWS Lambda как система проверки файлов для загрузки на s3

Мне нужно использовать s3 для хранения контента от пользователей и управления доступом в сервисе типа социальной сети.

Пока это то, о чем я думал:

  1. Клиент сообщает LAMP-серверу, что хочет загрузить файл
  2. LAMP аутентифицируется и генерирует предварительно назначенный URL для s3, куда пользователь может загрузить. Он также создает зашифрованную версию этого ключа, используя закрытый ключ. Затем он добавляет этот ключ вместе с пользователем, который запустил его в таблице mysql (вместе с тем, когда он был запущен)
  3. Затем LAMP отправляет ключ и цифровую подпись от клиента 2..
  4. Затем клиент загружает файл на s3
  5. После окончания он говорит LAMP, что этот файл был завершен. Отправляет ключ и цифровую подпись.
  6. LAMP проверяет соответствие ключа и подписи. Если они это сделают, LAMP знает, что клиент честен в отношении ключа, который ему дается (и он не генерировал его случайным образом)
  7. Затем LAMP проверяет s3, чтобы убедиться, что файл с этим ключом существует, если он существует, затем удалите строку, которая была добавлена ​​в 2.

После расспросов мне сказали, что сама s3 не может проверить, является ли файл «допустимым» файлом определенного типа (я хочу использовать только изображения)
Поэтому я решил использовать aws lambda для проверки (если это «неправильный» файл, просто удалите его). Сразу после загрузки файла на s3 можно запустить лямбду.

Однако возможно, что ДО того, как лямбда закончит проверку файла, будет выполнен вышеуказанный шаг 7. Это означает, что мой сервер будет считать файл действительным.

Есть ли способ сделать s3 upload + lambda выполнение атомарным?
Любые предложения приветствуются

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]