Я работаю над приложением для усиления реакции. Из приложения я опрашиваю S3 bucket
, который, как я ожидаю, будет заполнен через пару минут. Для ясности поток будет:
- Пользователь загружает текстовый файл на
S3
, и приложение получает URL-адрес файла в ответе - Затем приложение отправляет запрос на
aws api-gateway
с S3 bucket
uri, который запускает lambda
, который затем вызывает aws textract
, что, в свою очередь, запускает секунду lambda
, которая записывает в S3 bucket
. Первый lambda
возвращает в приложение jobId. - Затем приложение запрашивает
S3 bucket
, чтобы получить файл ответов с помощью jobId и отобразить этот файл пользователю.
Первоначально при опросе сегмента я использовал URL-адрес корзины результатов в своем вызове API. Это прекрасно работает при локальном запуске приложения, так как URL-адрес корзины использует протокол http
, возвращая status code 404
до тех пор, пока файл не будет создан.
Затем я создал дистрибутив cloudfront
для приложения и запрос опроса возвращает ошибку: xhr.js:178 Mixed Content: The page at '<>my cloudfront url>' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '<my endpoint>'. This request has been blocked; the content must be served over HTTPS.
, что имеет смысл.
Однако изменение поведения протокола средства просмотра в распределении облачного фронта приложения с Redirect HTTP to HTTPS
на HTTP and HTTPS
, похоже, не сработало.
Поэтому я подумал, что мог бы создать второй дистрибутив облачного фронта для корзины результатов S3
, так как он использует https
. Тем не менее, когда я сейчас запускаю вызов API, я получаю 403 status code
и больше не 404
. Поэтому я попытался настроить пользовательский ответ об ошибке, сопоставив ошибку 403
с 404
. Я долго ждал, так как облачный фронт может занять некоторое время, но, похоже, это ничего не меняет. Изменяя код в моем приложении, можно ожидать, что 403
вместо 404
сработает, и через некоторое время, как только файл будет записан с результатами S3 bucket
, я получаю файл и отображаю его в приложении. Но я не хочу ожидать 403
, поскольку это совершенно неправильный код для чего-то, что не существует.
У меня есть несколько вопросов здесь:
- Is это правильный подход (с распределением
cloudfront
для результатов S3 bucket
)? - Почему я получу
403
при использовании URL-адреса cloudfront
вместо 404
, который я получал, когда используя S3
url результатов? - Если точка 1 является правильным подходом, что мне делать, чтобы исправить точку 2?