Загрузка файла на S3 и немедленное выполнение кода обработки, когда файл доступен - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу знать, не усложняю ли я свое заявление.Я использую AWS PHP SDK для загрузки файла в S3, а затем использую S3 Events для запуска темы SNS для обработки моего файла.

Моя причина использования S3 Events заключается в том, что я боюсь выполнять код обработки сразу после выполнения кода загрузки;Я хочу проверить, что объект был успешно загружен на S3.Я боюсь выполнения кода обработки до завершения загрузки на S3.Причина, по которой я пишу здесь, заключается в том, что я понимаю, что не использую JS, и что PHP не является изначально асинхронным.

У кого-нибудь есть опыт с этим?Если это так, могу ли я отказаться от SNS и просто «предположить» (ужасно), что объект будет в S3 к тому времени, когда обрабатывает код, или я должен продолжать идти по этому пути, используя S3 Events / SNS для предупреждения моего приложения, когдафайл доступен в S3?

Спасибо всем заранее

Пример кода:

$s3Client->upload("somefile.jpg");

// have no idea if this file is available yet, but...
$dataModel->process("https://s3-us-west-mock-us-url.amazonaws.com/somefile.jpg");

1 Ответ

0 голосов
/ 02 февраля 2019

Можете ли вы предположить, что загрузка прошла успешно?Конечно, вы не можете, это операция, которая включает в себя сетевую связь, поэтому задержка всегда присутствует.

Как только загрузка в корзину S3 прошла успешно, вы получите ответ 200 OK, что означает, что вы не 'не нужно использовать SNS или что-то в этом роде, если вы просто хотите дождаться окончания загрузки (просто дождитесь ответа).

Лучшим подходом (если это возможно) было бы фактически использовать события S3 и подписаться наЛямбда-функция для этого события, и пусть он обрабатывает обработку.Таким образом, вам совсем не нужно заботиться об этом в своем приложении и просто предполагать, что об этом позаботится что-то другое (лямбда).

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