قالب وردپرس درنا توس
Home / Tips og triks / Hvordan håndtere forskjellige versjoner av Lambda-funksjoner – CloudSavvy IT

Hvordan håndtere forskjellige versjoner av Lambda-funksjoner – CloudSavvy IT



  lambda-logo

Lambda-funksjoner er en veldig nyttig oppføring for AWS-datatjenester. Siden de egentlig bare er en funksjon av skyen, er sporing av forskjellige versjoner og utrulling av oppdateringer avgjørende for å jobbe med dem effektivt.

$ LATEST Tracks Recent Updates

Når du gjør en endring i en Lambda-funksjon, gjenspeiles endringene automatisk i en versjon kalt $ LATEST. Dette sporer de siste oppdateringene og er standardversjonen for de fleste Lambda-funksjoner. Endringer fra Lambda redigeringsside, Cloud9 IDE og zip-opplasting fra CLI oppdaterer alle denne versjonen.

På grunn av dette skal $ LATEST-versjonen ikke brukes i produksjonen, da noen oppdateringer til den nye funksjonstestingfunksjonen vil påvirke produksjonstrafikken din. Å bruke CodeDeploy er heller ingen enkel måte å starte oppdateringer over tid hvis du bruker $ LATEST.

I stedet anbefaler vi at du oppretter nye versjoner for hver utgave og et "produksjons" -alias som peker på det. $ LATEST kan brukes til utvikling, med et eget alias som også peker på det.

Å legge til en ny versjon (og flytte trafikk til den)

Å jobbe med versjoner er ganske enkelt. Velg funksjonen din fra Lambda Management Console og klikk på rullegardinmenyen "Versjon:". Dette lar deg veksle mellom versjoner og se på versjonene som er i bruk.

 Lambda versjoner meny

For å publisere en ny versjon, må du bytte til $ LATEST versjon og klikke på "Publiser ny versjon" fra rullegardinmenyen "Handlinger".

 lambda new version

Nye versjoner er ganske arkaiske med et inkrementelt heltall, uten måte å bruke standardformatet major.minor. Patch format som brukes for de fleste programvareversjoner. Hvis du virkelig trenger dette formatet, anbefaler vi å bruke CodePipeline med SAM-distribusjoner og spore Lambda-versjonene dine på Git.

Denne nye versjonen kan brukes i andre tjenester, for eksempel API Gateway. Du trenger imidlertid ikke å oppdatere alle tjenestene som bruker Lambda-funksjonen hver gang selve funksjonen oppdateres. I stedet bør du opprette et Alias, som peker på et bestemt versjonsnummer og kan settes som API Gateway-endepunktet. På denne måten, når du publiserer en ny versjon, trenger du ganske enkelt å oppdatere aliaset for å bytte over alt.

Du kan lage aliaser fra den samme "Handlinger" -menyen. Gi den et navn, for eksempel "Produksjon", og velg en versjon du vil peke på.

 lambda aliaser

Aliaser kan også gradvis flytte trafikk til en ny versjon. Mens du kan stille inn dette manuelt, blir det mest brukt for CodeDeploy-distribusjoner, der nye versjoner av funksjonene dine gradvis kan distribueres, f.eks. 10% var hvert femte minutt. På denne måten kan du fange bugs tidlig og returnere dem før de påvirker alle.

SAM Deployments Legg til nye versjoner automatisk

Manuelt å lage versjoner er nyttig, men hvis du administrerer mange funksjoner, vil du sannsynligvis bruke SAM-distribusjoner i stedet. Lambda-funksjoner distribuert med SAM-maler legger automatisk til en ny versjon (og oppdaterer $ LATEST).

Kombinert med Git for versjonskontroll og AWSs CodePipeline CI / CD-tjeneste, gjør det versjonsstyring for Lambda-funksjoner mye enklere. Når en endring skyves til utgivelsesgrenen i kildekontrollen din, aktiveres CodePipeline automatisk og oppdaterer funksjonene dine. Hvis du jobber med et språk som må kompileres (eller transkriberes i tilfelle TypeScript), kan du også sende funksjonskoden din til CodeBuild for å håndtere den scenen også.

SAM distribusjon er en utvidelse av CloudFormation, så implementeringer gjort med SAM vil lage en ny CloudFormation stack. Når du trykker på oppdateringer, gjenkjenner CloudFormation at det er en stakkoppdatering, i stedet for en ny stabel, og vil erstatte den gjeldende funksjonsversjonen med den oppdaterte.


Source link