Hvordan lage og dele Lambda -lag

Hvordan lage og dele Lambda -lag
Lambda Layer er en smart måte å pakke avhengighetene og bibliotekene som forenkler den serverløse distribusjonen. Lag er faktisk en zip -fil som inneholder alle avhengigheter. Det krymper ned størrelsen på distribusjonspakken og gjør distribusjonen din mer robust. Noen ganger er det nødvendig for å bruke multiple lambda -funksjonen for applikasjonen din, og hver lambda -funksjon krever for eksempel noen samme biblioteker, for eksempel forespørsler bibliotek. I så fall må du opprette laget som har forespørselsbiblioteket og feste laget med Lambda -funksjonene dine. I denne bloggen vil vi studere hvordan du lager Lambda -laget og hvordan du bruker det i Lambda -funksjonen din.

Opprette Lambda -lag

AWS gir følgende fire måter å lage lagene i Lambda:

  • AWS -konsoll
  • CloudFormation
  • Lambda API
  • SAM (serverløs applikasjonsmodell)

I denne bloggen vil vi bruke AWS -konsollen til å lage Lambda -laget som inkluderer forespørsler modul. For å lage laget, oppretter du en tom katalog først for å legge til koden for laget.

ubuntu@ubuntu: ~ $ mkdir demo_requests

Gå til den nyopprettede katalogen og installere forespørsler modul.

ubuntu@ubuntu: ~ $ cd demo_requests
ubuntu@ubuntu: ~ $ pip3 installer forespørsler -t .

Denne kommandoen installerer forespørsler bibliotek i denne mappen. For å bruke dette forespørsler Modul som et lag, zip denne mappen først ved å bruke følgende kommando:

ubuntu@ubuntu: ~ $ zip -r demo_requests.Zip Demo_requests

Etter å ha opprettet en zip -fil av modulen, gå til Lambda -konsollen og klikk på Lag Tab fra venstre sidepanel.

Det åpner lambda -lagkonsollen. Du kan legge til laget ditt ved å klikke på Lag lag knapp.

En ny side ser ut til å legge inn detaljene i Lambda -laget. Gi navnet og beskrivelsen av laget. For denne demoen bruker vi demo_layer som navnet på laget.

Nå er det to alternativer for å gi koden til laget - den ene er å laste opp en zip -fil, og den andre er å laste opp koden fra S3 -konsollen. For denne demoen laster vi opp zip -filen som inkluderer forespørsler modul.

Til kompatibel arkitektur alternativer, la den være tom og ikke merke av i noen boks for dette alternativet. Ettersom lagkoden vår inkluderer en forespørsler modul som er en python -modul, er runtime for dette laget Python. Etter å ha lagt inn all nødvendig lagkonfigurasjon, klikker du på skape knapp for å lage laget.

Bruker Lambda -laget i Lambda -funksjonen din

I forrige seksjon opprettet vi et lambda -lag som inkluderer en forespørsler modul. Nå, i denne delen, legger vi til dette lambda -laget i vår lambda -funksjon. For å legge til et Lambda -lag i Lambda -funksjonen, klikker du på Lambda -funksjonen og blar ned til lag seksjon.

Klikk på annonsend et lag knapp for å legge til et nytt lag i lambda -funksjonen din. Det åpner en ny side som ber om Lambda Layer -detaljer. Det er tre typer Lambda -lagkilder:

  • AWS -lag
  • Tilpassede lag
  • Spesifiser en ARN

For å legge et lag til lambda -funksjonen som vi opprettet i vår konto, må vi velge alternativet tilpassede lag som lagkilde. Etter å ha valgt lagkilden, velg et lag du opprettet i forrige seksjon og klikker på Legg til knapp for å legge til laget i lambda -funksjonen.

Nå, etter å ha lagt til laget, trenger du ikke å installere forespørsler modul i lambda -funksjonen når vi importerer forespørsler modul via lambda -laget.

Deling av Lambda -lag

Som standard er Lambda -laget privat og kan bare brukes på AWS -kontoen din. Men du kan administrere tillatelsene til Lambda -laget ditt ved å bruke kommandolinjegrensesnittet for å dele lagene med en annen AWS -konto eller organisasjon. AWS -konsoll har ikke funksjonen i å dele lambda -lagene med andre AWS -kontoer. De ADD-lag-versjon-tillatelse Metoden brukes til å dele lagene ved å bruke kommandolinjegrensesnittet. I de kommende delene av bloggen vil vi se hvordan vi kan dele Lambda -lagene med andre AWS -kontoer eller organisasjoner.

Deling av Lambda -lag til spesifikk AWS -konto

For å dele Lambda -laget, ADD-lag-versjon-tillatelse Metode for kommandolinjegrensesnitt brukes. Du må spesifisere navnet på laget du vil dele uttalelsen-ID, versjonsnummer og AWS-konto-ID som du vil dele laget. Følgende er kommandoen for å dele Lambda -laget med en annen AWS -konto ved å bruke kommandolinjegrensesnittet:

ubuntu@ubuntu: ~ $ aws lambda add-lags-versjon-tillatelse \
--Lagnavn Demo_Layer \
--Handling Lambda: GetLayerVersion \
--uttalelse-id-uttalelse-1 \
--Versjonsnummer 1
--rektor \

Deling av Lambda -lag offentlig

For å dele et Lambda -lag på AWS -kontoen din offentlig for å være tilgjengelig på alle AWS -kontoene, trenger du bare å endre rektor Parameter for kommandoen som brukes i forrige seksjon. I stedet for å spesifisere en AWS -konto -ID, må du bruke en "*" som rektor for å dele Lambda -laget offentlig på tvers av alle AWS -kontoene.

ubuntu@ubuntu: ~ $ aws lambda add-lags-versjon-tillatelse \
--Lagnavn Demo_Layer \
--Statement-ID Statement-2 \
--Handling Lambda: GetLayerVersion \
--rektor * \
--Versjonsnummer 1

Deling av Lambda -lag med alle AWS -kontoer i en organisasjon

Akkurat som en AWS -konto, kan Lambda -lagene også deles med alle AWS -kontoene i en organisasjon. For å dele Lambda -laget med alle kontoer i en organisasjon, må du legge til Organisasjon-ID parameter i ADD-lag-versjon-tillatelse kommando. Her er kommandoen for å dele Lambda -laget til alle AWS -kontoer i en organisasjon:

ubuntu@ubuntu: ~ $ aws lambda add-lags-versjon-tillatelse \
--Lagnavn Demo_Layer \
--uttalelse-id-uttalelse-3 \
--Handling Lambda: GetLayerVersion \
--rektor * \
--Organisasjon-ID \
--Versjonsnummer 1

Konklusjon

I denne bloggen studerte vi hvordan vi lager og deler Lambda -laget for å gjenbruke de små biter av koden vår til forskjellige Lambda -funksjoner. Vi lærte hvordan du oppretter en zip -fil av et Python Requests -bibliotek og opprettet et Lambda -lag ved hjelp av denne zip -filen. Etter å ha opprettet Lambda -laget, la vi dette lambda -laget til vår lambda -funksjon for å øke kode -gjenbrukbarheten. Vi diskuterte også hvordan vi kan dele Lambda -lagene med spesifikke AWS -kontoer og alle kontoer i en organisasjon.