AWS Solutions Architect · Oppitunti

Lambda Layers ja käyttöönottopaketit

Kokoatte jaetut riippuvuudet uudelleenkäytettäviksi Lambda Layers -kerroksiksi ja hallitsette suurten suoritusympäristöjen käyttöönottopaketteja.

Oppitunti 3/413 vaihetta

Lambda Layers ja käyttöönottopaketit on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.

Lambda-funktioiden riippuvuusongelma

Lambdan käyttöönottopakettien on oltava itsenäisiä: kaikki riippuvuudet, kuten kirjastot, SDK:t ja binäärit, on sisällytettävä ZIP-tiedostoon. Tämä kasvattaa paketin nopeasti suureksi: Pythonilla toteutettu datatiedefunktio, joka käyttää NumPya, Pandasia ja SciPyä, voi ylittää 200 Mt purettuna. Jokainen funktion koodin päivitys edellyttää koko paketin, myös muuttumattomien kirjastojen, lataamista uudelleen. Lambda Layers ratkaisee tämän erottamalla jaetut riippuvuudet funktion koodista.

Mikä Lambda-kerros on

Lambda-kerros on ZIP-arkisto, joka sisältää kirjastoja, mukautettuja suoritusympäristöjä, dataa tai määritystiedostoja. Kerrokset tallennetaan erillään funktion koodista ja liitetään funktion suoritusympäristöön polkuun /opt. Useat funktiot voivat käyttää samaa kerrosta – kun kerros päivitetään kerran, kaikki sitä käyttävät funktiot hyötyvät päivityksestä. Kullakin Lambda-funktiolla voi olla enintään 5 kerrosta, ja niiden yhteenlaskettu purkamaton koko saa olla enintään 250 Mt.

Kerrokset luominen ja julkaiseminen

Luo kerros paketoimalla riippuvuudet suoritusympäristölle sopivaan hakemistorakenteeseen (esimerkiksi Pythonille python/lib/python3.12/site-packages/), pakkaamalla ne ZIP-tiedostoksi ja julkaisemalla paketti. Julkaisemisen jälkeen kerros saa version ARN-tunnisteen. Viittaa tähän ARN-tunnisteeseen, kun liität kerroksen funktioon. Aina kun päivität kerrosta, luodaan uusi versio. Funktiot käyttävät edelleen sitä versiota, jonka kanssa ne määritettiin, kunnes päivität version erikseen.

# Build layer for Python
mkdir -p layer/python
pip install pandas numpy -t layer/python/
cd layer && zip -r ../my-data-layer.zip python/

# Publish the layer
aws lambda publish-layer-version \
  --layer-name 'DataScienceLayer' \
  --zip-file fileb://my-data-layer.zip \
  --compatible-runtimes python3.12 python3.11

Kerrosten liittäminen funktioon

Lisää kerrokset funktioon käyttämällä --layers-parametria funktion luonnin tai päivityksen yhteydessä. Lambda liittää kaikki liitetyt kerrokset polkuun /opt ennen funktion käynnistymistä. Polun /opt/python alla olevat Python-paketit lisätään automaattisesti Pythonin hakupolulle, ja polun /opt/nodejs/node_modules alla olevat Node.js-moduulit löytyvät automaattisesti. Funktiosi koodi voi käyttää kerrosten paketteja komennoilla import tai require aivan kuin ne olisi asennettu paikallisesti.

aws lambda update-function-configuration \
  --function-name 'DataProcessor' \
  --layers \
    'arn:aws:lambda:us-east-1:123456789012:layer:DataScienceLayer:3' \
    'arn:aws:lambda:us-east-1:123456789012:layer:UtilsLayer:1'

AWS:n tarjoamat julkiset kerrokset

AWS julkaisee virallisia kerroksia, joita voit käyttää ilman oman kerroksen rakentamista. Esimerkkejä ovat AWS Lambda Powertools -kerros (rakenteinen lokikirjaus, jäljitys ja ominaisuusliput), tietokantaohjainten kerrokset sekä AWS Parameters and Secrets Lambda Extension -kerros, joka tallentaa SSM:n ja Secrets Managerin arvot paikallisesti välimuistiin. Myös kolmannen osapuolen toimittajat, kuten Datadog ja New Relic, julkaisevat julkisia kerroksia valvonta-agenteilleen. Tarkista saatavilla olevat julkiset kerrokset Serverless Application Repository -palvelusta ja Lambdan konsolista.

Lambda-laajennukset kerrosten kautta

Lambda-laajennukset toimivat erillisinä prosesseina funktion koodin rinnalla samassa suoritusympäristössä. Ne liittyvät Lambdan elinkaaren tapahtumiin (init, invoke, shutdown) ja suorittavat esimerkiksi telemetrian keräystä, tietoturvatarkistuksia tai määritysten välimuistitusta. Laajennukset jaetaan Lambda-kerroksina. AWS tarjoaa CloudWatch Lambda Insights -laajennuksen ja AWS AppConfig -laajennuksen, ja toimittajat tarjoavat mukautettuja valvonta-agentteja laajennuksina.

Käyttöönottopaketin muodot: ZIP ja säilö

Lambda tukee kahta käyttöönottomuotoa:

  • ZIP (enintään 50 Mt pakattuna ja 250 Mt purettuna): nopea lähetys, tukee kerroksia ja toimii kaikilla suoritusympäristöillä.
  • Säilökuva (enintään 10 Gt): tallennetaan Amazon ECR:ään, käyttää tavallisia Docker-työkaluja, ei tue kerroksia ja sopii erittäin suurille riippuvuuksille, kuten koneoppimismalleille ja suurille binääritiedostoille.

Säilökuvien on toteutettava Lambda Runtime Interface (käyttämällä AWS:n tarjoamia peruskuvia), jotta Lambda tietää, miten käsittelijä kutsutaan.

# Dockerfile for a Lambda container image
FROM public.ecr.aws/lambda/python:3.12
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ['app.lambda_handler']

Säilökuvan työnkulku

Lambda-säilökuvan rakentaminen ja käyttöönotto noudattavat tavallista säilöjen työnkulkua: rakenna kuva komennolla docker build, työnnä se palveluun Amazon ECR ja viittaa kuvan URI:in Lambda-funktion luonnin tai päivityksen yhteydessä. Säilökuvat ovat muuttumattomia – jokainen kuvatunniste vastaa tiettyä funktion versiota. Lambda tallentaa säilökuvat välimuistiin infrastruktuurissaan, joten ensimmäisen jälkeen tapahtuvat kylmäkäynnistykset ovat nopeampia.

# Build and push to ECR
docker build -t my-lambda-function .
aws ecr get-login-password | docker login --username AWS \
  --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker tag my-lambda-function \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest

Versiot ja aliakset

Lambdan versiot ovat muuttumattomia tilannekuvia funktion koodista ja määrityksistä. Aina kun julkaiset version, Lambda lukitsee käyttöönottopaketin, ympäristömuuttujat ja kerrokset. Aliakset ovat nimettyjä viittauksia tiettyihin versioihin – prod voi esimerkiksi viitata versioon 5 ja staging versioon 6. Voit käyttää myös painotettuja aliaksia ohjaamaan osan liikenteestä uuteen versioon kanarianjulkaisua varten (esimerkiksi 10 % versioon v6 ja 90 % versioon v5).

# Publish a version and create/update an alias
aws lambda publish-version --function-name 'DataProcessor'
# Returns version number, e.g., "Version": "7"

aws lambda update-alias \
  --function-name 'DataProcessor' \
  --name 'prod' \
  --function-version '7' \
  --routing-config 'AdditionalVersionWeights={"6": 0.1}'

Kerrosten versiointi ja käytöstä poistaminen

Myös kerroksilla on versiot. Kun julkaiset uuden kerrosversion, nykyiset funktiot käyttävät edelleen niille määritettyä versiota, kunnes päivität ne. Näin voit päivittää jaetun kerroksen turvallisesti rikkomatta kaikkia funktioita samanaikaisesti – ota uusi versio käyttöön vaiheittain. Poista vanhat kerrosversiot lopulta käytöstä tallennustilan ja ylläpitotyön vähentämiseksi. Lambda säilyttää kerrosversiot, vaikka poistaisit ne konsolista, kunnes yksikään funktio ei enää viittaa niihin.

Kerrosten ja säilökuvien välillä valitseminen

Käytä kerroksia, kun kaikkien tiedostojen purettu yhteiskoko mahtuu alle 250 Mt:uun, haluat jakaa riippuvuuksia useiden funktioiden kesken ja haluat nopean kehityssyklin (päivitä kerros kerran, jolloin kaikki funktiot hyötyvät). Käytä säilökuvia, kun riippuvuudet ylittävät 250 Mt, tarvitset mukautettuja käyttöjärjestelmätason paketteja, käytössäsi on valmiiksi Docker-työnkulkuja tai haluat paketoida suuria aineistoja, kuten koneoppimismalleja tai viitetietokantoja. Säilökuvat eivät ole yhteensopivia Lambda-kerrosten kanssa, mutta ne tarjoavat enemmän joustavuutta.

Pikatarkistus

Testaa tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteiden ymmärtämistäsi.

Oppitunnin yhteenveto

Tässä oppitunnissa opit, että Lambda-kerrokset paketoivat jaetut riippuvuudet erilleen funktion koodista, mikä pienentää paketin kokoa ja mahdollistaa uudelleenkäytön useissa funktioissa; säilökuvat (enintään 10 Gt ECR:n kautta) ovat oikea valinta, kun riippuvuudet ylittävät 250 Mt:n ZIP-rajoituksen tai Docker-työnkulut ovat jo käytössä; ja versiointi ja aliakset mahdollistavat muuttumattomat julkaisut sekä kanarianjulkaisut painotetulla liikenteen jakamisella. Seuraavaksi tutustumme Lambda@Edgeen ja tapahtumapohjaisiin malleihin.

Aloita maksutta

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 ”Lambda Layers ja käyttöönottopaketit” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “Lambda Layers ja käyttöönottopaketit”. 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 ”Lambda Layers ja käyttöönottopaketit”?

Kokoatte jaetut riippuvuudet uudelleenkäytettäviksi Lambda Layers -kerroksiksi ja hallitsette suurten suoritusympäristöjen käyttöönottopaketteja. 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 3/4.

Kuinka kauan ”Lambda Layers ja käyttöönottopaketit”-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

  1. Lambda-funktiot: suoritusympäristöt, triggerit ja käsittelijät
  2. Samanaikaisuus, rajoittaminen ja varattu samanaikaisuus
  3. Lambda Layers ja käyttöönottopaketit
  4. Lambda@Edge ja tapahtumapohjaiset mallit
← Takaisin: AWS Solutions Architect