Проблема с CloudFront и решение с Bing AI/Chat: мой опыт

Хочу поделиться с вами историей о том, как совсем недавно чат-бот на основе GPT-4, а именно Bing AI/Chat, помог мне быстро понять в чем проблема на продакшен-деплойменте и оперативно ее исправить.
Это была довольно необычная и сложная проблема, с которой я раньше не сталкивался. Но благодаря Bing AI/Chat я смог найти решение всего за 30 минут! Да, за 30 минут! 😎

В этой статье я расскажу вам, как все начиналось, как я искал решение, как Bing AI/Chat мне помог и какие выводы я сделал из этого опыта. Надеюсь, что эта история будет интересна и полезна широкому кругу читателей.

Houston, we have a problem

Все начиналось довольно буднично. Мне нужно было сконфигурировать новое доменное имя для сайта, который уже был в продакшене, но еще не имел красивого доменного имени.


Стек технологий у нас следующий:
• Сайт задеплоен в AWS
• Сайт разработан на React, NextJS, NodeJS

Процедура конфигурации домена достаточно типовая. У нас есть пошаговая инструкция и специальный сервис, который помогает в деплойменте. Этот сервис для продакшен-деплойментов создает AWS CloudFront и затем с его помощью назначает доменное имя.

Мы все сделали довольно быстро, за 30 минут. Но когда мы попробовали открыть сайт на новом домене, мы обнаружили странную и крайне неприятную проблему.

Если я в браузере вводил домен сайта (например, andybor.blogspot.com), то сайт не открывался. Как показали дев-тулы браузера, сайт в таком случае шлет постоянно редирект с кодом 308. Что еще более интересно, если открыть тот же самый сайт, но уже с каким-то путем, например, andybor.blogspot.com/a, то сайт открывался без каких-то проблем.

Это было очень необычное поведение, с которым мы раньше не встречались. И статус код 308 для редиректа я тоже как-то раньше не встречал (все больше 301 или 302).
Бесполезно и говорить 😅 , что локально мы не смогли повторить эту проблему. Идей, что и где поломалось не было от слова совсем.

Поиск решения

Первое, что мы сделали - это поискали в Google. Но это заставило загрустить еще больше. На Stack Overflow нашлась проблема по 308 редиректу, где это было вызвано конфигом для NextJs. Но это был не наш случай.

Тут я вспомнил о Bing AI/Chat. Я недавно записывал видео про этот чат-бот, который умеет помогать в решении разных задач. Я решил попробовать, сможет ли он как-то помочь мне.

К сожалению, у меня не осталось переписки с чат-ботом, поэтому я на словах опишу, как он помог мне понять в чем была проблема и как ее устранить.

Решение проблемы с помощью Bing AI/Chat

Я описал ему в целом проблему. Bing AI тоже поначалу предположил, что это проблема с конфигом для NextJs. Я ему написал, что это не проблема конфига для NextJs, и показал ответ, который возвращал веб-сайт.

Bing AI обратил внимание, что в респонсе используется хидер Refresh = “/”, который, по мнению Bing AI, и приводил к бесконечным редиректам со статусом 308. Это было уже что-то.

Далее я спросил у Bing AI, какой сервис или библиотека в моей конфигурации могла добавлять к респонсу этот хидер. Bing AI написал мне, что так может вести себя AWS CloudFront, если у него значение для параметра для Default root object не совпадает с аналогичным параметром в Origin.

Я проверил параметры CloudFront и Origin для CloudFront. Бинго! Bing AI/Chat оказался на 100% прав. Я обновил значения для Default root object в CloudFront, чтобы оно совпадало с Origin, и сайт наш заработал на новом домене как положено.

На все-про все у меня ушло около 30 минут. 30 минут, Карл! Да, я эту статью уже пишу дольше.

Выводы

Bing AI/Chat - это очень полезный и мощный инструмент для программистов и оперейшен-команд. Он может помочь в решении самых разных задач, как связанных с кодом так и с конфигурацией, деплойментом и т.д.

Надеюсь, что эта статья была интересна и полезна для вас. Если вы хотите узнать больше о Bing AI/Chat, то предлагаю посмотреть мое видео на YouTube канале.

Комментарии

Популярные сообщения из этого блога

Команды docker save/load, docker export/import – в чем отличие, как и когда ими пользоваться

Как узнать, кто заблокировал файл или папку

Как "заглянуть" внутрь запущенного докер-контейнера