AWS Solutions Architect · leksjon

Begrensning, caching og bruksplaner

Beskytt backend-systemer med grenser for toppbelastning og normal belastning, aktiver caching av svar og opprett bruksplaner med API-nøkler for partnere.

Leksjon 4 av 413 trinn

Begrensning, caching og bruksplaner er en gratis leksjon i AWS Solutions Architect på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AWS Solutions Architect, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AWS Solutions Architect inneholder totalt 4 leksjoner.

Hvorfor begrensning av forespørselsfrekvens er avgjørende

Uten begrensning av forespørselsfrekvens kan én klient som oppfører seg feil, eller en trafikkøkning, overbelaste backend-tjenestene Deres – Lambda-samtidighet, RDS-tilkoblinger eller nedstrøms-API-er. Begrensning av forespørselsfrekvens i API Gateway begrenser antallet forespørsler per sekund og tillater korte topper over den stabile frekvensen. Forespørsler som begrenses, mottar umiddelbart svaret 429 Too Many Requests, uten at forespørselen når backend. Dette beskytter nedstrømsressurser mot overbelastning.

Begrensning på konto- og stage-nivå

Begrensning av forespørselsfrekvens fungerer på flere nivåer. Grensen på kontonivå er 10 000 forespørsler per sekund (RPS), med en topp på 5 000 forespørsler (myk grense som kan økes). På stage-nivå kan De angi en standardfrekvens (RPS) og en grense for topper som gjelder for alle metoder i staget. På metodenivå kan De overstyre standardverdiene for bestemte endepunkter – for eksempel gi et lesetungt GET-endepunkt en høyere grense enn et skrivetungt POST-endepunkt.

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/*/*/throttling/rateLimit,value=1000' \
    'op=replace,path=/*/*/throttling/burstLimit,value=2000'

Token bucket-algoritmen

API Gateway bruker en token bucket-algoritme for å begrense forespørselsfrekvensen. Token samles opp i en bøtte, opptil toppgrensen (maksimal kapasitet for samtidige topper). Hver forespørsel bruker ett token. Token fylles på med frekvensgrensen (stabil RPS). Hvis bøtten er tom, begrenses forespørslene. Eksempel: burst=5000, rate=1000 RPS. I starten kan De håndtere 5000 samtidige forespørsler, og bøtten fylles på med 1000 token per sekund. Dette gjør det mulig å absorbere korte trafikktopper samtidig som langsiktige frekvensgrenser håndheves.

Svarbufring i API Gateway

Svarbufring (tilgjengelig for REST API-stager) lagrer backend-svar i en hurtigbuffer som administreres av API Gateway, slik at identiske forespørsler kan besvares fra hurtigbufferen uten å kontakte backend. Dette reduserer belastningen på backend, senker ventetiden og kan redusere kostnadene for Lambda-kall betydelig for lesetunge API-er. Hurtigbufferen bruker forespørselen som nøkkel (metode, bane, spørringsstrenger og headere, avhengig av konfigurasjonen). TTL-en for hurtigbufferen kan konfigureres fra 0 til 3600 sekunder (standard er 300 sekunder).

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/cacheClusterEnabled,value=true' \
    'op=replace,path=/cacheClusterSize,value=0.5' \
    'op=replace,path=/*/*/caching/ttlInSeconds,value=300'

Tilpasning av cache-nøkkel

Som standard er cache-nøkkelen hele URL-en for forespørselen. De kan tilpasse hvilke elementer som inngår i cache-nøkkelen: inkluder bestemte parametere i query-strengen (for eksempel pageSize og filter), men utelat irrelevante parametere (for eksempel tidsstempel). De kan også inkludere bestemte headere i cache-nøkkelen. Utelat sensitive headere fra cache-nøkkelen for å hindre at private data påvirker delte cache-oppføringer. Bruk justering av cache-nøkkelen for å maksimere treffraten i cachen, samtidig som ulike logiske forespørsler får ulike bufrede svar.

Ugyldiggjøring av cache

Klienter kan ugyldiggjøre cachen for en bestemt forespørsel ved å inkludere headeren Cache-Control: max-age=0. De kan også tømme hele stage-cachen fra konsollen eller API-et. Konfigurer om klienter skal ha lov til å ugyldiggjøre cachen – begrens dette i produksjon for å hindre at klienter bevisst omgår caching. For å gi utvalgte klienter tillatelse til å tømme cachen kan De knytte til en ressurspolicy eller bruke en Lambda-authorizer som kontrollerer om den som foretar kallet, har tillatelse til å tømme cachen.

# Flush entire stage cache
aws apigateway flush-stage-cache \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

Bruksplaner: hastighetsgrenser per klient

En Usage Plan definerer begrensninger for throttling og kvoter for en gruppe API-klienter. Knytt en API-stage til en bruksplan, og knytt deretter API keys til planen. Hver API-nøkkel håndhever planens begrensninger uavhengig av de andre. Med bruksplaner kan De tilby tilgang på ulike nivåer: en Free-plan med 100 RPM/10 000 forespørsler per dag og en Pro-plan med 1 000 RPM/100 000 forespørsler per dag. Dette er modellen for API-er som skal tjene penger, og for partnerintegrasjoner der ulike klienter trenger ulike hastighetsgrenser.

# Create a usage plan
aws apigateway create-usage-plan \
  --name 'ProTier' \
  --throttle 'rateLimit=1000,burstLimit=2000' \
  --quota 'limit=100000,period=DAY' \
  --api-stages 'apiId=abc123,stage=prod'

API-nøkler og klientidentifikasjon

API keys er ugjennomsiktige tekstbaserte tokens som klienter inkluderer i forespørselsheaderen x-api-key. API Gateway validerer nøkkelen og knytter forespørselen til den tilsvarende bruksplanen. API-nøkler er IKKE en sikkerhetsmekanisme – de identifiserer bare klienter for throttling og kvoteberegning. Av sikkerhetshensyn må De alltid kombinere API-nøkler med riktig autorisasjon (IAM, Lambda-authorizer eller Cognito). API-nøkler som ikke er knyttet til en bruksplan, får ganske enkelt ikke anvendt throttle-begrensninger.

# Create an API key and associate with usage plan
aws apigateway create-api-key \
  --name 'PartnerABC-Key' \
  --enabled

aws apigateway create-usage-plan-key \
  --usage-plan-id 'uvw321' \
  --key-id 'xyz789' \
  --key-type API_KEY

Kvotebegrensninger i bruksplaner

I tillegg til throttle-rater per sekund støtter bruksplaner kvotebegrensninger: et maksimalt antall forespørsler i løpet av en tidsperiode (DAY, WEEK eller MONTH). Når en klient har brukt opp kvoten sin, returnerer påfølgende forespørsler 429 frem til kvoten tilbakestilles. Kvotebegrensninger er nyttige for håndheving av gratisnivåer, forebygging av misbruk av API-et og tilpasning av API-forbruket til faktureringen. Kv多tellerne er eventual consistent, så en klient kan overskride kvoten litt før den blir blokkert.

CloudWatch-målinger for throttling og caching

Overvåk helsen til API Gateway med disse CloudWatch-målingene:

  • Count: totalt antall API-kall
  • 4XXError: klientfeil, inkludert 429-throttling
  • 5XXError: backend-feil
  • Latency: forespørselstid fra ende til ende
  • IntegrationLatency: tid brukt på å vente på backend
  • CacheHitCount / CacheMissCount: hvor effektiv cachen er

Sett opp alarmer for topper i 4XXError for å oppdage throttle-problemer før de påvirker brukerne, og for CacheMissCount for å identifisere problemer med cache-konfigurasjonen.

Når bør caching aktiveres fremfor throttling

Bruk caching for API-er med mange leseoperasjoner, der svarene endres sjelden – for eksempel oppslag i produktkataloger, referansedata og statiske konfigurasjoner. Caching er uheldig for brukerspesifikke eller svært dynamiske data. Bruk throttling alltid – også for interne API-er – for å beskytte backend-tjenester mot overbelastning. Kombiner begge deler: bufre vanlige data for å redusere belastningen på backend, og bruk stram throttling for å hindre at én enkelt klient dominerer API-et. Til SAA-C03-eksamenen bør De huske at caching reduserer kostnader og ventetid, mens throttling sikrer tilgjengelighet.

Hurtigsjekk

Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at Throttling på konto-, stage- og metodenivå beskytter backend-systemer ved hjelp av en token bucket-algoritme med konfigurerbare rate- og burst-grenser, at Response Caching lagrer backend-svar i konfigurerbare TTL-perioder for å redusere backend-belastning og ventetid for endepunkter med mange leseoperasjoner, og at Usage Plans with API Keys håndhever throttle-rater og kvoter per klient, slik at De kan tilby tilgang på ulike nivåer for partner- og offentlige API-er. Neste tema er ECS-klynger, oppgavedefinisjoner og tjenester for containeriserte arbeidsbelastninger.

Gratis å komme i gang

Lær deg AWS Solutions Architect med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Begrensning, caching og bruksplaner» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AWS Solutions Architect, inkludert «Begrensning, caching og bruksplaner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AWS Solutions Architect inneholder totalt 4 leksjoner.

Hva lærer jeg i «Begrensning, caching og bruksplaner»?

Beskytt backend-systemer med grenser for toppbelastning og normal belastning, aktiver caching av svar og opprett bruksplaner med API-nøkler for partnere. Du øver på AWS Solutions Architect med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AWS Solutions Architect?

Ingen tidligere erfaring er nødvendig. AWS Solutions Architect på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Begrensning, caching og bruksplaner»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AWS Solutions Architect-leksjonen?

Ja. Alle AWS Solutions Architect-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. REST API vs HTTP API vs WebSocket API
  2. Integrasjoner: Lambda, HTTP og Mock
  3. Autorisasjon: IAM, Lambda-authorizers og Cognito
  4. Begrensning, caching og bruksplaner
← Tilbake til AWS Solutions Architect