Serverlös backend med AWS Lambda & API Gateway · Lektion

Integrering av Lambda och DynamoDB

Utveckla Lambda-funktioner som interagerar med DynamoDB för CRUD-operationer och bygg datadrivna serverless-backendlösningar.

Lektion 3 av 411 steg

Integrering av Lambda och DynamoDB är en gratis lektion i Serverlös backend med AWS Lambda & API Gateway på CoddyKit. Detta är lektion 3 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 backend med AWS Lambda & API Gateway, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Serverlös backend med AWS Lambda & API Gateway innehåller totalt 4 lektioner.

Lambda och DynamoDB: den kraftfulla kombinationen

Välkommen till integrationen av AWS Lambda med DynamoDB! Den här kombinationen är en grundsten för att bygga kraftfulla serverless-backendlösningar.

AWS Lambda tillhandahåller beräkningskraft för att köra din kod utan att du behöver hantera servrar, medan DynamoDB erbjuder en snabb och flexibel NoSQL-databas som skalas automatiskt.

Tillsammans gör de det möjligt att skapa datadrivna applikationer som effektivt hanterar create-, read-, update- och delete-operationer (CRUD).

Ge Lambda åtkomst till DynamoDB

Innan din Lambda-funktion kan interagera med DynamoDB behöver den behörighet. Detta hanteras genom en IAM Role som är kopplad till din Lambda-funktion.

IAM-rollen måste ha en policy som ger behörighet till specifika DynamoDB-åtgärder, till exempel:

  • dynamodb:PutItem (för att skapa eller uppdatera)
  • dynamodb:GetItem (för att läsa)
  • dynamodb:UpdateItem (för att ändra delar av ett objekt)
  • dynamodb:DeleteItem (för att ta bort objekt)

Följ alltid principen om minsta möjliga behörighet: ge endast de behörigheter som behövs.

Anslut från Lambda med Boto3

I en Python-baserad Lambda-funktion använder du AWS SDK för Python, Boto3, för att interagera med DynamoDB. Först måste du initiera en DynamoDB-klient eller -resurs.

Metoden boto3.resource('dynamodb') föredras ofta eftersom den tillhandahåller ett objektorienterat gränssnitt på högre nivå.

Prova att köra det här exemplet för att se hur klienten initieras:

import boto3
import json

def lambda_handler(event, context):
    # Initialize DynamoDB resource
    dynamodb = boto3.resource('dynamodb')
    table_name = 'my-coddykit-table' # Placeholder
    table = dynamodb.Table(table_name)

    print(f"Connected to table: {table_name}")

    return {
        'statusCode': 200,
        'body': json.dumps('DynamoDB client initialized!')
    }

# For local testing/runnable snippet
if __name__ == '__main__':
    print("Running handler locally...")
    lambda_handler({}, {})

Skapa och ersätta objekt (PutItem)

Metoden put_item() används för att skapa ett nytt objekt eller helt ersätta ett befintligt objekt i en DynamoDB-tabell.

  • Om ett objekt med samma primärnyckel redan finns skriver put_item() över det helt.
  • Om inget objekt med den primärnyckeln finns skapas ett nytt objekt.

Den här operationen är användbar när du vill säkerställa att ett objekt finns med specifika attribut eller när du behöver ersätta alla dess attribut.

PutItem i praktiken

Här är en Lambda-funktion som visar hur du använder put_item() för att lägga till eller uppdatera ett objekt. Vi använder ett platshållarnamn för tabellen och objektinformation från händelsen.

Kör koden för att se den simulerade skapandet av objektet!

import boto3
import json

def lambda_handler(event, context):
    dynamodb = boto3.resource('dynamodb')
    # Use a placeholder table name
    table = dynamodb.Table('my-coddykit-table')

    item_id = event.get('itemId', 'P001')
    item_name = event.get('itemName', 'New Product')

    table.put_item(
        Item={
            'itemId': item_id,
            'itemName': item_name,
            'category': 'Electronics'
        }
    )
    print(f"Added/updated item: {item_id}")
    return {
        'statusCode': 200,
        'body': json.dumps(f'Item {item_id} processed!')
    }

# For local testing/runnable snippet
if __name__ == '__main__':
    mock_event = {'itemId': 'P002', 'itemName': 'Coddy Phone'}
    lambda_handler(mock_event, {})

Läsa objekt (GetItem)

För att hämta ett enskilt objekt från en DynamoDB-tabell använder du metoden get_item(). Den här operationen kräver att du anger objektets fullständiga primärnyckel.

Om tabellen har en enkel primärnyckel (endast en Partition Key) anger du endast det värdet. Om den har en sammansatt primärnyckel (Partition Key och Sort Key) måste du ange båda.

get_item() är mycket effektiv för direkta uppslagningar.

GetItem i praktiken

Den här Lambda-funktionen visar hur du hämtar ett objekt med dess itemId (förutsatt att det är vår primärnyckel). Svaret innehåller objektets attribut om objektet hittas.

Kör det här exemplet för att se hur get_item() fungerar.

import boto3
import json

def lambda_handler(event, context):
    dynamodb = boto3.resource('dynamodb')
    # Use a placeholder table name
    table = dynamodb.Table('my-coddykit-table')

    item_id = event.get('itemId', 'P001') # Assume 'itemId' is the primary key

    response = table.get_item(
        Key={'itemId': item_id}
    )
    item = response.get('Item')

    if item:
        print(f"Found item: {item}")
        return {
            'statusCode': 200,
            'body': json.dumps(item)
        }
    else:
        print(f"Item {item_id} not found.")
        return {
            'statusCode': 404,
            'body': json.dumps(f'Item {item_id} not found.')
        }

# For local testing/runnable snippet
if __name__ == '__main__':
    mock_event = {'itemId': 'P002'} # Try to get an item
    lambda_handler(mock_event, {})

Ändra delar av ett objekt (UpdateItem)

Med metoden update_item() kan du ändra specifika attribut i ett befintligt objekt utan att ersätta hela objektet.

Detta är effektivare än put_item() om du bara behöver ändra några få attribut. Metoden kräver ett UpdateExpression som anger vilka attribut som ska ändras och hur.

Uppdateringsuttryck kan lägga till, ange, ta bort eller radera attribut.

Ta bort objekt (DeleteItem)

För att ta bort ett objekt från en DynamoDB-tabell använder du metoden delete_item(). Precis som med get_item() måste du ange den fullständiga primärnyckeln för objektet du vill ta bort.

När ett objekt har tagits bort kan det inte återställas med den här operationen. Var försiktig när du använder delete_item(), särskilt i produktionsmiljöer.

Snabbkontroll: DynamoDB-operationer

Du behöver skapa en ny användarprofil i din DynamoDB-tabell Users. Om en användare med samma ID redan finns vill du helt skriva över den gamla profilen med de nya uppgifterna. Vilken Boto3-metod ska din Lambda-funktion använda?

Sammanfattning: integration av Lambda och DynamoDB

Bra jobbat! Du har lärt dig hur du integrerar AWS Lambda med DynamoDB för att bygga datadrivna serverless-applikationer.

  • Vi gick igenom vikten av IAM-behörigheter för säker åtkomst.
  • Du såg hur du använder Boto3 SDK för att ansluta från Python Lambda.
  • Vi utforskade de centrala CRUD-operationerna: put_item() (skapa/ersätta), get_item() (läsa), update_item() (ändra) och delete_item() (ta bort).

Den här kunskapen är avgörande för att utveckla robusta serverless-backendlösningar!

Gratis att börja

Lär dig Serverlös backend med AWS Lambda & API Gateway 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 ”Integrering av Lambda och DynamoDB” gratis?

Ja – hela texten till ”Integrering av Lambda och DynamoDB” 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 backend med AWS Lambda & API Gateway, kan Ni uppgradera till CoddyKit PRO. Kursen i Serverlös backend med AWS Lambda & API Gateway innehåller totalt 4 lektioner.

Vad lär jag mig i ”Integrering av Lambda och DynamoDB”?

Utveckla Lambda-funktioner som interagerar med DynamoDB för CRUD-operationer och bygg datadrivna serverless-backendlösningar. Ni övar på Serverlös backend med AWS Lambda & API Gateway 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 backend med AWS Lambda & API Gateway?

Du behöver inga förkunskaper. Utbildningen i Serverlös backend med AWS Lambda & API Gateway 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 3 av 4.

Hur lång tid tar lektionen ”Integrering av Lambda och DynamoDB”?

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 backend med AWS Lambda & API Gateway-lektionen?

Ja. Varje Serverlös backend med AWS Lambda & API Gateway-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. Introduktion till DynamoDB
  2. Utforma DynamoDB-tabeller
  3. Integrering av Lambda och DynamoDB
  4. Frågor med sekundära index: GSI:er och LSI:er
← Tillbaka till Serverlös backend med AWS Lambda & API Gateway