Рейтинг:0

AWS Cloudfront возвращает разные ответы на одинаковые запросы

флаг cn

У меня есть API, который должен использовать accept a Веб-сайт заголовок, предоставленный клиентом, чтобы отвечать по-разному в зависимости от того, для какого веб-сайта запрашивается.

Я внес этот заголовок в белый список в AWS Cloudfront. Насколько я понимаю, это должно означать, что Cloudfront включает его в ключ кеша.

Когда я повторяю одинаковые вызовы curl на свою конечную точку, я получаю разные результаты от Cloudfront.

Заголовки ответов всегда указывают на попадание в кэш из Cloudfront, но тело ответа иногда относится не к тому веб-сайту. Другими словами, Cloudfront не включает заголовок веб-сайта в ключ кеша и возвращает текст ответа для другого ключа запроса.

Вот пример вывода скрипта ниже:

$ хвост -f one.txt
23245 - x-cache: попадание из облака
56138 - x-cache: попадание из облака
56138 - x-cache: попадание из облака
56138 - x-cache: попадание из облака
23245 - x-cache: попадание из облака

Обратите внимание, что «всего» отличается (это ключ JSON в ответе, который я получаю)

Я использую скрипт для повторения вызовов, поэтому я ожидаю, что запрос будет идентичным.

Почему Cloudfront иногда возвращает неверный ответ?

Я уверен, что источник всегда возвращает правильный ответ для заголовка веб-сайта. Я проверил это, запустив свой скрипт в источнике без Cloudfront перед ним, и я также убедился, что мой источник не срабатывает, когда я запускаю этот скрипт в Cloudfront.

Как я могу отладить это дальше? Я подумал, что, возможно, я мог бы использовать «через», чтобы увидеть, всегда ли один конкретный пограничный узел возвращает неправильный ответ, но это не сработало.

#!/бин/баш

files=("один итог.txt" "два итога.txt")
для i в "${files[@]}"
делать
   rm $i >& /dev/null
сделано

callWebsiteOne () {
    curl --location --request ПОЛУЧИТЬ 'https://my-api.example.com' \
    --header 'Авторизация: Bearer 123abc' \
    --header 'веб-сайт: один' \
    -i > temp.txt
    total=$(cat temp.txt | sed s/[^{]*// | jq -r .total)
    edgenode=$(cat temp.txt | grep через:)
    echo $total "-" $edgenode >> one-edges.txt
    echo $total >> один-totals.txt
    rm temp.txt
}

callWebsiteTwo () {
    curl --location --request ПОЛУЧИТЬ 'https://my-api.example.com' \
    --header 'Авторизация: Bearer 123abc' \
    --header 'веб-сайт: два' \
    -i > temp.txt
    total=$(cat temp.txt | sed s/[^{]*// | jq -r .total)
    edgenode=$(cat temp.txt | grep через:)
    echo $total "-" $edgenode >> two.txt
    echo $total >> два-totals.txt
    rm temp.txt
}

callRandomWebsite (){    
    случайный=$[СЛУЧАЙНЫЙ%4+1]
    случай $ случайный в
        1)
            callWebsiteOne
            ;;
        2)
            callВеб-сайтДва
            ;;
    эсак
}

для значения в {1..100}
делать
    callRandomВеб-сайт
    сон 0,25 с
сделано

для i в "${files[@]}"
делать
    уникальный=$(сортировка $i | uniq | wc -l)
    всего=$(кот $i | wc -l)
    echo $i " имеет " $unique " уникальные значения в " $total " общее количество строк"
сделано

Ответить или комментировать

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