Lambda integreren met AWS-services

Serverless-toepassingen met AWS Lambda

Claudio Canales

Senior DevOps Engineer

De integratielus

  • Event in.
  • Handlerlogica.
  • SDK-call.

Event -> handler -> SDK-loop

Serverless-toepassingen met AWS Lambda

Triggers vs SDK-calls

Trigger

  • Bepaalt wanneer Lambda draait.

SDK-call (in de handler)

  • Leest en schrijft services zoals DynamoDB en S3.

Trigger vs SDK-call

Serverless-toepassingen met AWS Lambda

Een concreet voorbeeld

  • Een bestand komt in S3.
  • Lambda draait.
  • Sla een klein record op in DynamoDB.

S3-upload -> Lambda -> DynamoDB

Serverless-toepassingen met AWS Lambda

Eventpayload: vind wat je nodig hebt

{
  "Records": [{
    "s3": {
      "bucket": {"name": "…"},
      "object": {"key": "…"}
    }
  }]
}

Annotaties bij S3-eventpayload

Serverless-toepassingen met AWS Lambda

Waar de AWS SDK past

  • Je code roept de SDK aan (boto3).
  • De SDK roept AWS-API's aan.
  • IAM is de portier.

Handler -> SDK -> AWS-API

Serverless-toepassingen met AWS Lambda

Execution role = credentials

  • Tijdelijke credentials uit de execution role.
  • Geen access keys in code.
  • Kan de role een API niet aanroepen, dan faalt de SDK-call.

Execution role levert credentials

Serverless-toepassingen met AWS Lambda

Least privilege: scopeer acties + resources

  • Beperkt de impact bij fouten.
  • Geef alleen benodigde acties en resources.
  • Vermijd wildcards tenzij echt nodig.

Least privilege: acties en resources

Serverless-toepassingen met AWS Lambda

DynamoDB: kies de juiste operatie

  • PutItem schrijft.
  • GetItem leest op key.
  • Query vindt gerelateerde items.
  • Kies gerichte operaties boven brede scans.

DynamoDB-operaties

Serverless-toepassingen met AWS Lambda

S3: werk met bucket + key

  • Objecten staan op bucket + key.
  • GetObject haalt content op.
  • PutObject schrijft een nieuw afgeleid bestand.

S3-bucket en key

Serverless-toepassingen met AWS Lambda

Zet configuratie in omgevingsvariabelen

  • Resourcenamen hardcoden is fragiel.
  • Gebruik omgevingsvariabelen.
  • Deploy dezelfde code naar dev en prod.

Configuratie via omgevingsvariabelen

Serverless-toepassingen met AWS Lambda

SDK-code: hou het klein en testbaar

import boto3
ddb = boto3.client("dynamodb")
def handler(event, context):
    ddb.put_item(
        TableName="files",
        Item={"pk": {"S": "1"}},
    )
  • Valideer input, roep de SDK aan, return.
  • Unit-test de pure logica.

Kleine handler met SDK-call

Serverless-toepassingen met AWS Lambda

Ga bewust om met SDK-fouten

  • Permissiefouten komen vaak voor in het begin.
  • Maak bij falen duidelijk waarom.
  • Goede logs maken debuggen veiliger.

Succes- en faalpaden

Serverless-toepassingen met AWS Lambda

Als IAM fout is, lijkt de code oké

AccessDeniedException
required action denied
  • Fix eerst IAM, dan de handlerlogica.

Toegang geweigerd

Serverless-toepassingen met AWS Lambda

Idempotency: veilige retries en duplicaten

  • Je kunt hetzelfde event twee keer zien.
  • Idempotency-keys voorkomen dubbele verwerking.
  • Voorwaardelijke writes maken herhalingen veilig.

Idempotency-keypatroon

Serverless-toepassingen met AWS Lambda

Alles samen (end-to-end)

  • S3-event bevat bucket en key.
  • Handler parseert ze.
  • PutItem schrijft metadata naar DynamoDB.
  • CloudWatch Logs tonen wat er gebeurde.

End-to-end integratiesamenvatting

Serverless-toepassingen met AWS Lambda

Belangrijkste punten

  • Scheid triggers van SDK-calls.
  • Houd permissies strak met de execution role.
  • Maak config draagbaar met env-vars.

Belangrijkste integratiepunten

Serverless-toepassingen met AWS Lambda

Laten we oefenen!

Serverless-toepassingen met AWS Lambda

Preparing Video For Download...