Puncte:0

AWS Cloudfront returnează răspunsuri diferite pentru interogări identice

drapel cn

Am un API care ar trebui să folosească accept a site-ul web antetul furnizat de client pentru a răspunde diferit în funcție de site-ul web pentru care este solicitată.

Am trecut acest antet pe lista albă în AWS Cloudfront. După înțelegerea mea, acest lucru ar trebui să însemne că Cloudfront îl include în cheia cache.

Când repet apeluri curl identice la punctul meu final, primesc rezultate diferite de la Cloudfront.

Antetele răspunsului indică întotdeauna o accesare în cache de la Cloudfront, dar corpul răspunsului este uneori pentru site-ul web greșit. Cu alte cuvinte, Cloudfront nu pare să includă antetul site-ului web în cheia cache și returnează corpul răspunsului pentru o cheie de cerere diferită.

Iată un exemplu de rezultat din scriptul de mai jos:

$ coada -f unu.txt
23245 - x-cache: Lovitură din cloudfront
56138 - x-cache: Lovitură din cloudfront
56138 - x-cache: Lovitură din cloudfront
56138 - x-cache: Lovitură din cloudfront
23245 - x-cache: Lovitură din cloudfront

Observați că „totalul” este diferit (aceasta este o cheie JSON în răspunsul pe care îl primesc)

Folosesc un script pentru a repeta apelurile, așa că mă aștept ca cererea să fie identică.

De ce Cloudfront returnează uneori răspunsul greșit?

Sunt sigur că originea returnează întotdeauna răspunsul corect pentru antetul site-ului. Am verificat acest lucru rulând scriptul meu împotriva originii fără Cloudfront în fața ei și, de asemenea, am verificat că originea mea nu este lovită atunci când rulez acest script împotriva Cloudfront.

Cum pot depana acest lucru în continuare? M-am gândit că poate aș putea folosi „via” pentru a vedea dacă un anumit nod de margine returnează întotdeauna un răspuns greșit, dar asta nu a funcționat.

#!/bin/bash

fișiere=(„unul-totals.txt” „două-totals.txt”)
pentru i în „${fișiere[@]}”
do
   rm $i >& /dev/null
Terminat

callWebsiteOne () {
    curl --location --request GET „https://my-api.example.com” \
    --header „Autorizare: purtător 123abc” \
    --header 'site: unul' \
    -i > temp.txt
    total=$(cat temp.txt | sed s/[^{]*// | jq -r .total)
    edgenode=$(cat temp.txt | grep prin:)
    echo $total " - " $edgenode >> one-edges.txt
    echo $total >> one-totals.txt
    rm temp.txt
}

callWebsiteTwo () {
    curl --location --request GET „https://my-api.example.com” \
    --header „Autorizare: purtător 123abc” \
    --header 'site: două' \
    -i > temp.txt
    total=$(cat temp.txt | sed s/[^{]*// | jq -r .total)
    edgenode=$(cat temp.txt | grep prin:)
    echo $total " - " $edgenode >> doi.txt
    echo $total >> două-totaluri.txt
    rm temp.txt
}

callRandomWebsite (){    
    aleatoriu=$[RANDOM%4+1]
    caz $aleatoriu în
        1)
            apelațiWebsiteOne
            ;;
        2)
            sunați pe site-ul webDoi
            ;;
    esac
}

pentru valoarea în {1..100}
do
    apelațiRandomWebsite
    dormi 0,25 secunde
Terminat

pentru i în „${fișiere[@]}”
do
    unic=$(sort $i | unic | wc -l)
    total=$(cat $i | wc -l)
    echo $i " are valori unice " $unique " în liniile totale " $total "
Terminat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.