Как загрузить sh файл, сохраненный на S3, в интерфейс для загрузки? - PullRequest
2 голосов
/ 07 апреля 2020

В моем веб-приложении есть ссылка, по которой пользователь может щелкнуть и загрузить файл CSV, содержащий некоторую информацию.

Когда пользователь нажимает на ссылку для скачивания, приложение извлекает записи из DynamoDB и сохраняет результаты в виде файла на S3 в асинхронном режиме, потому что для извлечения и сохранения может потребоваться около 15 секунд.

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

В этом случае, как я могу sh файл для пользователя на веб-интерфейсе, как только файл был успешно сохранен на S3 и готов к загрузке?

1 Ответ

2 голосов
/ 07 апреля 2020

Для долгосрочных заданий типичная стратегия состоит в том, чтобы отслеживать своего рода идентификатор задания в базе данных и обновлять базу данных после его завершения. Например, у вас может быть API, который выглядит следующим образом:

POST /jobs

{ ... job parameters ... }

И в ответ:

{
  "id": "c7758160-12c2-448a-b982-1f613e4a9593"
  "status": "processing"
}

Затем вы можете опросить результат:

GET /jobs/c7758160-12c2-448a-b982-1f613e4a9593

Если задание status равно done или как-то еще, вы можете нажать на соответствующий S3 URL. (Возможно, ваш сервер API возвращает подписанный URL-адрес.)

Вместо опроса вы также можете использовать отправленные сервером события для обновлений.

В качестве альтернативного метода для более коротких выполняемых заданий вы может принять запрос API, запустить обработку задания и только после этого выдать HTTP 302/307, перенаправляющий на S3 URL. Я бы не стал делать это, как правило, дольше пары секунд.

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