Serverløs udvikling med AWS Lambda · Lektion

Asynkrone Lambda-kald

Få styr på nuancerne ved asynkrone Lambda-kald, og forstå hændelseskilder, gentagelser og fordelene ved langvarige processer eller batchprocesser.

Lektion 1 af 412 trin

Asynkrone Lambda-kald er en gratis Serverløs udvikling med AWS Lambda-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Serverløs udvikling med AWS Lambda, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Hvad er asynkron påkaldelse?

Velkommen! I serverløs arkitektur kan funktioner påkaldes på forskellige måder. En asynkron påkaldelse betyder, at den kaldende part ikke venter på, at funktionen bliver færdig med at køre.

Tænk på det som at sende et brev: Du lægger det i postkassen og venter ikke på, at modtageren læser det. Du stoler på, at det bliver leveret og behandlet senere.

Synkron kontra asynkron: Den vigtigste forskel

Når du påkalder en Lambda-funktion synkront, venter du straks på et svar. Din applikation sættes på pause, indtil Lambda returnerer et resultat eller en fejl.

Ved asynkron påkaldelse placerer Lambda hændelsen i en intern kø og returnerer straks en succesmeddelelse til den kaldende part. Selve funktionskørslen sker i baggrunden.

Sådan fungerer asynkron påkaldelse

Når en hændelse udløser en asynkron Lambda-påkaldelse:

  • Lambda modtager hændelsen fra den kaldende part (f.eks. S3 eller SNS).
  • Den placerer hændelsen i en intern kø.
  • Lambda sender straks et successvar til den kaldende part.
  • Senere henter Lambda hændelsen fra køen og påkalder din funktion.
  • Funktionen behandler hændelsen, og eventuelt output kasseres.

Typer af påkaldelser i praksis

Når du påkalder en Lambda-funktion direkte via AWS SDK eller CLI, angiver du en InvocationType-parameter:

  • RequestResponse: Til synkrone påkaldelser (du venter på et svar).
  • Event: Til asynkrone påkaldelser (send og glem).
  • DryRun: Til validering af parametre uden at påkalde funktionen.

Mange AWS-tjenester (f.eks. S3, SNS og EventBridge) påkalder automatisk Lambda asynkront, når de er konfigureret som udløsere.

Fordele: Afkobling og skalerbarhed

Asynkrone påkaldelser giver betydelige fordele:

  • Afkobling: Den kaldende part er ikke afhængig af funktionens øjeblikkelige svar. Den kan fortsætte sit arbejde uden at vente.
  • Skalerbarhed: Lambda kan bufferlagre hændelser i sin interne kø under trafikspidser, så funktionen ikke overbelastes, og hændelserne til sidst bliver behandlet.
  • Robusthed: Hvis din funktion mislykkes, kan Lambda automatisk prøve påkaldelsen igen.

Ideelt til langvarige opgaver

Asynkron påkaldelse er perfekt til opgaver, der kan tage noget tid at fuldføre, f.eks.:

  • Behandling af store filer, der uploades til S3.
  • Udsendelse af e-mailnotifikationer.
  • Transkodning af videoer.
  • Opdatering af flere databaser.

Klienten behøver ikke vente på disse handlinger, hvilket forbedrer brugeroplevelsen og applikationens reaktionsevne.

Forklaring af asynkrone gentagelser

Som standard prøver Lambda automatisk en asynkront påkaldt funktion to gange igen, hvis den mislykkes, med eksponentiel ventetid mellem forsøgene.

Denne indbyggede gentagelsesmekanisme øger pålideligheden af dine serverløse applikationer ved at håndtere midlertidige fejl uden manuel indgriben.

Konfiguration af gentagelsesadfærd

Du kan tilpasse gentagelsesadfærden for asynkrone påkaldelser:

  • Maksimal hændelsesalder: Hvor længe Lambda skal beholde en hændelse i køen, før den kasseres (standard: 6 timer).
  • Maksimalt antal gentagelsesforsøg: Hvor mange gange Lambda skal prøve funktionen igen (0 til 2 forsøg).

Disse indstillinger hjælper med at styre, hvor længe dit system forsøger at behandle en mislykket hændelse.

Eksempel: Behandling af et uploadet billede

Forestil dig, at en bruger uploader et billede til en S3-bucket. Du vil ændre størrelsen på det og tilføje et vandmærke.

Du kan konfigurere S3-bucketen til at udløse en Lambda-funktion, hver gang et nyt billede uploades. S3 påkalder din Lambda asynkront, hvorefter den behandler billedet. Brugeren behøver ikke vente på, at størrelsesændringen bliver færdig.

Lambda-funktion til asynkron behandling

Her er en simpel Python-Lambda-funktion, der kan påkaldes asynkront. Den simulerer en langvarig opgave.

Ved asynkron påkaldelse venter den kaldende part ikke på, at time.sleep() bliver færdig.

import json
import time

def lambda_handler(event, context):
    print("Received event:", json.dumps(event, indent=2))

    # Simulate a long-running task
    print("Starting long-running task...")
    time.sleep(5)  # Pause for 5 seconds
    print("Task completed!")

    # For async invocations, the return value is usually ignored
    return {
        'statusCode': 200,
        'body': json.dumps('Processing complete!')
    }

Hurtig kontrol af asynkronitet

Du har lært de grundlæggende begreber inden for asynkrone Lambda-påkaldelser.

Hvad er den primære fordel ved at bruge asynkrone Lambda-påkaldelser?

Opsummering: Asynkron styrke

Godt klaret! Du har mestret det grundlæggende i asynkrone Lambda-påkaldelser.

  • De giver kaldende parter mulighed for at sende hændelser uden at vente på et svar.
  • Lambda bruger en intern kø til behandlingen.
  • Fordelene omfatter afkobling, skalerbarhed og håndtering af langvarige opgaver.
  • Indbyggede gentagelsesmekanismer øger pålideligheden.

Dette mønster er grundlæggende, når du bygger robuste og skalerbare hændelsesdrevne serverløse applikationer. Derefter ser vi på, hvordan fejl håndteres effektivt med Dead Letter Queues!

Gratis at komme i gang

Lær Serverløs udvikling med AWS Lambda med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Asynkrone Lambda-kald” gratis?

Ja — hele teksten til “Asynkrone Lambda-kald” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Serverløs udvikling med AWS Lambda-kurset, skal du opgradere til CoddyKit PRO. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Asynkrone Lambda-kald”?

Få styr på nuancerne ved asynkrone Lambda-kald, og forstå hændelseskilder, gentagelser og fordelene ved langvarige processer eller batchprocesser. Du øver dig i Serverløs udvikling med AWS Lambda med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Serverløs udvikling med AWS Lambda?

Der kræves ingen tidligere erfaring. Serverløs udvikling med AWS Lambda på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Asynkrone Lambda-kald”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Serverløs udvikling med AWS Lambda-lektion?

Ja. Alle Serverløs udvikling med AWS Lambda-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Asynkrone Lambda-kald
  2. Dead Letter Queues (DLQ) til fejl
  3. Orkestrering med AWS Step Functions
  4. Fan-out-mønsteret med SNS
← Tilbage til Serverløs udvikling med AWS Lambda