Serverlös utveckling med AWS Lambda · Lektion

Integrera med Amazon EventBridge

Använd Amazon EventBridge för att bygga händelsebussar, dirigera händelser från olika källor och skapa kraftfulla händelsestyrda integrationer i ert AWS-konto.

Lektion 2 av 411 steg

Integrera med Amazon EventBridge är en gratis lektion i Serverlös utveckling med AWS Lambda på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Serverlös utveckling med AWS Lambda, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Serverlös utveckling med AWS Lambda innehåller totalt 4 lektioner.

Vad är Amazon EventBridge?

Välkomna till en djupare genomgång av händelsedrivna arkitekturer! I dag ska vi utforska Amazon EventBridge, en kraftfull tjänst som fungerar som ett centralt nervsystem för era serverlösa applikationer.

EventBridge är en serverlös händelsebuss som gör det enkelt att koppla samman applikationer med hjälp av data från era egna appar, Software-as-a-Service-applikationer (SaaS-applikationer) och AWS-tjänster.

EventBridge: grundläggande begrepp

EventBridge bygger på några centrala begrepp:

  • Händelsebuss: En kanal som tar emot händelser. Det finns en Default Event Bus för händelser från AWS-tjänster, och ni kan skapa Custom Event Buses.
  • Regler: Filter som matchar inkommande händelser utifrån deras innehåll (händelsemönster).
  • Mål: De AWS-tjänster eller slutpunkter som en händelse skickas till när en regel matchar.

Den förvalda händelsebussen

Varje AWS-konto har automatiskt en Default Event Bus. Denna buss tar emot händelser från över 200 AWS-tjänster, till exempel S3, EC2, Lambda och CloudTrail.

Ni behöver inte konfigurera dessa källor; de publicerar automatiskt händelser till den förvalda bussen. Det gör att ni kan reagera på ändringar och aktiviteter i hela er AWS-miljö utan anpassad kod.

Anpassade händelsebussar och källor

Den förvalda bussen hanterar AWS-händelser, men ni kan skapa Custom Event Buses för att hantera händelser från era egna applikationer eller SaaS-leverantörer från tredje part.

Det gör att ni kan centralisera händelseroutningen för hela ert ekosystem. Händelsekällor kan vara:

  • AWS-tjänster: (via Default Bus)
  • SaaS-partner: (till exempel Zendesk, Shopify)
  • Anpassade applikationer: Era egna mikrotjänster eller monoliter.

Skapa händelsemönster (regler)

Regler anger för EventBridge vilka händelser som ska dirigeras vart. Varje regel har ett händelsemönster, en JSON-struktur som definierar vilka kriterier en händelse måste uppfylla för att matcha.

Händelsemönster kan matcha specifika fält eller prefix och även kontrollera om fält finns. De är mycket flexibla för filtrering.

Exempel på händelsemönster

Här är ett exempel på ett händelsemönster som matchar alla PutObject-åtgärder i en S3-bucket:

Detta mönster säkerställer att endast händelser där S3-objekt skapas utlöser regeln.

{
  "source": ["aws.s3"],
  "detail-type": ["AWS API Call via CloudTrail"],
  "detail": {
    "eventSource": ["s3.amazonaws.com"],
    "eventName": ["PutObject"]
  }
}

EventBridge-mål

När en händelse matchar en regel skickar EventBridge den till ett eller flera mål. Målen är de efterföljande tjänster som bearbetar händelsen.

Vanliga mål är:

  • AWS Lambda-funktioner
  • Amazon SQS-köer
  • Amazon SNS-topics
  • AWS Step Functions-tillståndsmaskiner
  • Kinesis-strömmar
  • och många fler!

Lambda som EventBridge-mål

Lambda-funktioner är ett mycket vanligt mål för EventBridge. När en regel matchar en händelse anropar EventBridge er Lambda-funktion och skickar händelsedata som indata.

Det gör att ni kan bygga mycket responsiva, händelsedrivna mikrotjänster som reagerar på ändringar i er AWS-miljö eller i anpassade applikationer.

Hantera EventBridge-händelser i Lambda

Vi ska titta på en Python-Lambda-funktion som är utformad för att ta emot och bearbeta en EventBridge-händelse. Parametern event innehåller hela JSON-nyttolasten för händelsen.

Vi simulerar en S3-PutObject-händelse som demonstration.

import json

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

    source = event.get('source')
    detail_type = event.get('detail-type')

    if source == 'aws.s3' and detail_type == 'AWS API Call via CloudTrail':
        bucket_name = event['detail']['requestParameters']['bucketName']
        object_key = event['detail']['requestParameters']['key']
        print(f"S3 PutObject event detected for bucket: {bucket_name}, key: {object_key}")
    else:
        print(f"Unknown event source: {source}, detail-type: {detail_type}")

    return {
        'statusCode': 200,
        'body': json.dumps('Event processed successfully!')
    }

# Simulate a local invocation for testing
if __name__ == '__main__':
    sample_s3_event = {
        "version": "0",
        "id": "c6183e20-7f51-4091-8656-e23a31c51e0f",
        "detail-type": "AWS API Call via CloudTrail",
        "source": "aws.s3",
        "account": "123456789012",
        "time": "2023-10-27T10:00:00Z",
        "region": "us-east-1",
        "resources": [],
        "detail": {
            "eventSource": "s3.amazonaws.com",
            "eventName": "PutObject",
            "requestParameters": {
                "bucketName": "my-cool-bucket",
                "key": "new-image.jpg"
            }
        }
    }
    print("--- Simulating Lambda with EventBridge event ---")
    lambda_handler(sample_s3_event, None)
    print("--- Simulation complete ---")

Snabbtest om EventBridge

Ni vill utlösa en Lambda-funktion varje gång en ny användare registrerar sig i er anpassade applikation. Applikationen publicerar händelsen UserSignedUp till er anpassade händelsebuss.

Vilket av följande händelsemönster skulle korrekt matcha denna specifika händelse?

Sammanfattning: EventBridge i praktiken

I den här lektionen utforskade vi Amazon EventBridge och dess roll som en central händelsebuss för serverlösa applikationer. Ni har lärt er om:

  • Händelsebussar: Default, Custom och Partner.
  • Regler: Hur händelsemönster används för att filtrera händelser.
  • Mål: Hur matchade händelser skickas till tjänster som Lambda.
  • Hur Lambda integreras för att bearbeta EventBridge-händelser.

EventBridge är centralt för att bygga skalbara, löst kopplade och responsiva händelsedrivna arkitekturer.

Gratis att börja

Lär dig Serverlös utveckling med AWS Lambda med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Integrera med Amazon EventBridge” gratis?

Ja – hela texten till ”Integrera med Amazon EventBridge” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Serverlös utveckling med AWS Lambda, kan Ni uppgradera till CoddyKit PRO. Kursen i Serverlös utveckling med AWS Lambda innehåller totalt 4 lektioner.

Vad lär jag mig i ”Integrera med Amazon EventBridge”?

Använd Amazon EventBridge för att bygga händelsebussar, dirigera händelser från olika källor och skapa kraftfulla händelsestyrda integrationer i ert AWS-konto. Ni övar på Serverlös utveckling med AWS Lambda med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Serverlös utveckling med AWS Lambda?

Du behöver inga förkunskaper. Utbildningen i Serverlös utveckling med AWS Lambda på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Integrera med Amazon EventBridge”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Serverlös utveckling med AWS Lambda-lektionen?

Ja. Varje Serverlös utveckling med AWS Lambda-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Bygga händelsestyrda mikrotjänster
  2. Integrera med Amazon EventBridge
  3. Realtidsbearbetning med Kinesis
  4. Saga-mönstret för distribuerade transaktioner
← Tillbaka till Serverlös utveckling med AWS Lambda