Я делаю сервер API GraphQL с помощью apollo-server-express.
Чтобы пользователи могли загружать свои изображения на S3, я сделал мутацию под названием userContentFileUpload Mutation, схема которой выглядит так:
type Mutation {
userContentFileUpload(file: File!) {
uploadUrl
fileUrl
}
}
uploadUrl
- это предварительно подписанный URL-адрес S3 для загрузки файла изображения, а fileUrl
- URL-адрес S3, включая ключ, который будет иметь загруженный файл изображения.
Таким образом, клиент может использовать этот API следующим образом:
- Загрузите файл изображения в
uploadUrl
, используяfetch
илиaxios
. - Подождите, пока запрос на загрузку не будет успешным.
- Используйте
fileUrl
в качестве удаленного URL-адреса загруженного файла.
Теперь я пытаюсь добавить лямбда-функцию AWS, которая сжимает загруженные изображения.
Лямбда-функция:
- Запускается событием загрузки файла S3.
- Сожмите загруженный файл.
- Поместите сжатый файл в корзину S3.
Однако, поскольку запрос на загрузку в uploadUrl
будет завершен до шага 1 лямбда-функции, будет промежуток между моментом, когда клиент начинает использовать fileUrl
, и временем, когда сжатый файл фактически помещается в корзину S3.
Как я могу восполнить этот пробел ??