Rajoittaminen, välimuisti ja käyttösuunnitelmat
Suojaatte taustapalvelut burst- ja vakiotilan rajoitusarvoilla, otatte vastausten välimuistinnin käyttöön ja luotte kumppaneille API-avaimilla varustettuja käyttösuunnitelmia.
Rajoittaminen, välimuisti ja käyttösuunnitelmat on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
Miksi rajoittaminen on välttämätöntä
Ilman rajoittamista yksi virheellisesti toimiva asiakas tai liikennepiikki voisi kuormittaa taustajärjestelmäsi liikaa, esimerkiksi Lambdan samanaikaisuuden, RDS-yhteydet tai taustalla olevat API:t. API Gatewayn rajoittaminen määrittää sekunnissa sallittujen pyyntöjen määrän ja sallii lyhytaikaiset piikit vakiintuneen nopeuden yläpuolella. Rajoitetut pyynnöt saavat heti vastauksen 429 Too Many Requests ilman, että pyyntö saavuttaa taustajärjestelmän, mikä suojaa taustalla olevia resursseja ylikuormitukselta.
Tilikohtainen ja vai hekohtainen rajoittaminen
Rajoittamista voidaan käyttää useilla tasoilla. Tilikohtainen raja on 10 000 pyyntöä sekunnissa (RPS), ja purskeen koko on 5 000 pyyntöä (pehmeä raja, jota voidaan suurentaa). Vaihetasolla voit määrittää oletusarvoisen rajoitusnopeuden (RPS) ja purskerajan, jotka koskevat kaikkia vaiheen metodeja. Metoditasolla voit ohittaa vaiheen oletusarvot tietyissä päätepisteissä, esimerkiksi antaa paljon lukeville GET-päätepisteille suuremman nopeusrajan kuin paljon kirjoittaville POST-päätepisteille.
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 -algoritmi
API Gatewayn rajoittaminen käyttää token bucket -algoritmia. Tunnisteita kertyy säiliöön enintään purskerajaan asti, joka määrittää hetkellisen enimmäiskapasiteetin. Jokainen pyyntö kuluttaa yhden tunnisteen. Tunnisteet täyttyvät uudelleen nopeusrajan (vakiintuneen RPS-arvon) mukaisesti. Jos säiliö on tyhjä, pyyntöjä rajoitetaan. Esimerkki: burst=5000, rate=1000 RPS. Alussa voidaan käsitellä 5 000 samanaikaista pyyntöä, ja säiliö täyttyy uudelleen 1 000 tunnisteen sekuntinopeudella. Tämä mahdollistaa lyhyiden liikennepiikkien vastaanottamisen ja pitää samalla pitkän aikavälin nopeusrajat voimassa.
API Gatewayn vastausvälimuisti
Vastausvälimuisti (käytettävissä REST APIn vaiheissa) tallentaa taustajärjestelmien vastaukset API Gatewayn hallinnoimaan välimuistiin, jolloin samanlaiset pyynnöt voidaan palvella välimuistista ilman taustajärjestelmän kutsumista. Tämä vähentää taustajärjestelmän kuormaa, pienentää viivettä ja voi vähentää huomattavasti Lambda-kutsujen kustannuksia paljon luettavissa API-rajapinnoissa. Välimuistiavaimena käytetään pyyntöä (metodia, polkua sekä määrityksen mukaisia kyselymerkkijonoja ja otsakkeita). Välimuistin TTL voidaan määrittää välille 0–3600 sekuntia (oletusarvo on 300 sekuntia).
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'Välimuistiavaimen mukauttaminen
Oletusarvoisesti välimuistiavain on koko pyynnön URL-osoite. Voitte mukauttaa sitä, mitkä osat vaikuttavat välimuistiavaimeen: sisällyttäkää tietyt kyselymerkkijonon parametrit (esimerkiksi pageSize ja filter), mutta jättäkää merkityksettömät parametrit (kuten aikaleima) pois. Voitte myös sisällyttää tietyt otsakkeet välimuistiavaimeen. Jättäkää arkaluonteiset otsakkeet pois välimuistiavaimesta, jotta yksityiset tiedot eivät päädy jaettuihin välimuistimerkintöihin. Säätäkää välimuistiavainta niin, että välimuistiosumien määrä on mahdollisimman suuri ja eri loogiset pyynnöt saavat silti eri välimuistivastaukset.
Välimuistin mitätöinti
Asiakkaat voivat mitätöidä tietyn pyynnön välimuistin sisällyttämällä pyyntöön Cache-Control: max-age=0 -otsakkeen. Voitte myös tyhjentää koko vaiheen välimuistin konsolista tai API:n kautta. Määrittäkää, saavatko asiakkaat mitätöidä välimuistin. Rajoittakaa tämä tuotannossa, jotta asiakkaat eivät voi tarkoituksellisesti ohittaa välimuistia. Voitte myöntää tyhjennykseen tarvittavat oikeudet valikoivasti liittämällä resurssikäytännön tai käyttämällä Lambda-valtuuttajaa, joka tarkistaa, onko kutsujalla oikeus tyhjentää välimuisti.
# Flush entire stage cache
aws apigateway flush-stage-cache \
--rest-api-id 'abc123' \
--stage-name 'prod'Käyttösuunnitelmat: asiakaskohtaiset nopeusrajat
Usage Plan määrittää API-asiakasryhmälle pyyntöjen rajoitus- ja kiintiörajat. Liittäkää API-vaihe käyttösuunnitelmaan ja liittäkää sen jälkeen API keys kyseiseen suunnitelmaan. Kukin API-avain valvoo suunnitelman rajoja itsenäisesti. Käyttösuunnitelmien avulla voitte tarjota eritasoisen käytön: Free-suunnitelma voi sallia 100 pyyntöä minuutissa ja 10 000 pyyntöä päivässä, Pro-suunnitelma 1 000 pyyntöä minuutissa ja 100 000 pyyntöä päivässä. Tämä on malli kaupallistettaville API-rajapinnoille ja kumppani-integraatioille, joissa eri asiakkaat tarvitsevat erilaiset nopeusrajat.
# 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-avaimet ja asiakkaan tunnistaminen
API keys ovat läpinäkymättömiä merkkijonotunnisteita, jotka asiakkaat sisällyttävät pyynnön x-api-key-otsakkeeseen. API Gateway vahvistaa avaimen ja yhdistää pyynnön vastaavaan käyttösuunnitelmaan. API-avaimet EIVÄT ole suojausmekanismi – ne tunnistavat asiakkaat ainoastaan pyyntöjen rajoittamista ja kiintiöitä varten. Käyttäkää turvallisuuden varmistamiseksi API-avainten kanssa aina asianmukaista valtuutusta (IAM, Lambda-valtuuttaja tai Cognito). API-avaimiin, joita ei ole liitetty käyttösuunnitelmaan, ei sovelleta pyyntöjen rajoitusrajoja.
# 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_KEYKäyttösuunnitelmien kiintiörajat
Sekuntikohtaisten rajoitusnopeuksien lisäksi käyttösuunnitelmat tukevat kiintiörajoja: tietyn ajanjakson (DAY, WEEK tai MONTH) aikana sallittujen pyyntöjen enimmäismäärää. Kun asiakas käyttää kiintiönsä loppuun, seuraavat pyynnöt palauttavat vastauksen 429, kunnes kiintiö nollautuu. Kiintiörajat ovat hyödyllisiä ilmaistason käytön valvonnassa, API:n väärinkäytön estämisessä ja API:n käytön sovittamisessa laskutukseen. Kiintiölaskurit ovat lopulta yhdenmukaisia, joten asiakas voi ylittää kiintiönsä hieman ennen estämistä.
CloudWatch-mittarit pyyntöjen rajoittamiseen ja välimuistiin
Seuratkaa API Gatewayn toimintakuntoa seuraavilla CloudWatch-mittareilla:
- Count: API-kutsujen kokonaismäärä
- 4XXError: asiakasvirheet, mukaan lukien 429-rajoitukset
- 5XXError: taustajärjestelmän virheet
- Latency: pyynnön kokonaiskesto
- IntegrationLatency: taustajärjestelmän vastausta odotettu aika
- CacheHitCount / CacheMissCount: välimuistin tehokkuus
Asettakaa hälytykset 4XXError-arvon piikeille, jotta havaitsette rajoitusongelmat ennen kuin ne vaikuttavat käyttäjiin, sekä CacheMissCount-arvolle välimuistin määritysongelmien tunnistamiseksi.
Milloin välimuisti kannattaa ottaa käyttöön ja milloin pyyntöjä rajoittaa
Käyttäkää välimuistia lukupainotteisissa API-rajapinnoissa, joissa vastaukset muuttuvat harvoin, kuten tuoteluettelohauissa, viitetiedoissa ja staattisissa määrityksissä. Välimuistista on haittaa käyttäjäkohtaisille tai erittäin dynaamisille tiedoille. Käyttäkää pyyntöjen rajoittamista aina, myös sisäisissä API-rajapinnoissa, jotta taustajärjestelmät eivät ylikuormitu. Yhdistäkää molemmat: tallentakaa yleiset tiedot välimuistiin taustajärjestelmän kuormituksen vähentämiseksi ja rajoittakaa pyyntöjä tehokkaasti, jotta yksittäinen asiakas ei hallitse koko API-rajapintaa. SAA-C03-kokeessa välimuisti vähentää kustannuksia ja viivettä, kun taas pyyntöjen rajoittaminen varmistaa käytettävyyden.
Pikatarkistus
Testatkaa, miten hyvin hallitsette tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteet.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että Throttling eli pyyntöjen rajoittaminen tili-, vaihe- ja menetelmätasoilla suojaa taustajärjestelmiä token bucket -algoritmilla, jossa nopeus- ja purskerajat voidaan määrittää; Response Caching tallentaa taustajärjestelmän vastaukset määritettäväksi TTL-ajaksi vähentäen taustajärjestelmän kuormitusta ja lukupainotteisten päätepisteiden viivettä; ja Usage Plans with API Keys valvoo asiakaskohtaisia nopeusrajoja ja kiintiöitä mahdollistaen kumppani- ja julkisten API-rajapintojen eritasoisen käytönhallinnan. Seuraavaksi tutustumme ECS-klustereihin, tehtävämäärittelyihin ja palveluihin konttipohjaisia kuormia varten.
Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Rajoittaminen, välimuisti ja käyttösuunnitelmat” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “Rajoittaminen, välimuisti ja käyttösuunnitelmat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Rajoittaminen, välimuisti ja käyttösuunnitelmat”?
Suojaatte taustapalvelut burst- ja vakiotilan rajoitusarvoilla, otatte vastausten välimuistinnin käyttöön ja luotte kumppaneille API-avaimilla varustettuja käyttösuunnitelmia. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Rajoittaminen, välimuisti ja käyttösuunnitelmat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?
Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- REST API, HTTP API ja WebSocket API
- Integraatiot: Lambda, HTTP ja Mock
- Valtuutus: IAM, Lambda Authorizers ja Cognito
- Rajoittaminen, välimuisti ja käyttösuunnitelmat