Serverloze backend met AWS Lambda en API Gateway · Les

Serverless resources definiëren

Schrijf SAM-templates om Lambda-functies, API Gateway-endpoints, DynamoDB-tabellen en andere serverless componenten te definiëren.

Les 2 van 411 stappen

Serverless resources definiëren is een gratis Serverloze backend met AWS Lambda en API Gateway-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Serverloze backend met AWS Lambda en API Gateway. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Serverloze backend met AWS Lambda en API Gateway bevat in totaal 4 lessen.

Wat zijn SAM-sjablonen?

SAM-sjablonen (AWS Serverless Application Model) zijn een krachtige manier om je serverless-applicaties te definiëren met infrastructuur als code (IaC).

In plaats van resources handmatig in de AWS-console te configureren, beschrijf je ze in een YAML- of JSON-bestand. Hierdoor zijn je implementaties herhaalbaar, onder versiebeheer te plaatsen en eenvoudiger te beheren.

Anatomie van een SAM-sjabloon

Een SAM-sjabloon heeft een duidelijke structuur. De belangrijkste onderdelen zijn:

  • AWSTemplateFormatVersion: Hiermee geef je de versie van de sjabloonindeling op.
  • Transform: Voor SAM is dit altijd AWS::Serverless-2016-10-31.
  • Description: Een korte beschrijving van je applicatie.
  • Resources: Hier definieer je al je AWS-componenten.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: My First SAM App

Resources:
  # Your serverless resources go here

Een serverless-functie definiëren

De kern van veel serverless-applicaties is de AWS Lambda-functie. In SAM declareer je een Lambda-functie met het resourcetype AWS::Serverless::Function.

Je moet de handler, runtime en locatie van de code opgeven.

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      CodeUri: s3://my-bucket/my-app.zip
      MemorySize: 128
      Timeout: 30

Belangrijke Lambda-eigenschappen

Laten we enkele veelgebruikte eigenschappen van AWS::Serverless::Function bekijken:

  • Handler: Het toegangspunt in je code (bijvoorbeeld filename.function_name).
  • Runtime: De runtime van de programmeertaal (bijvoorbeeld python3.9 of nodejs18.x).
  • CodeUri: Het pad naar het implementatiepakket van je functie (lokaal of in S3).
  • MemorySize: De hoeveelheid RAM die aan de functie wordt toegewezen (MB).
  • Timeout: De maximale uitvoeringstijd (seconden).

API Gateway als gebeurtenisbron

Om je Lambda-functie via een HTTP-eindpunt toegankelijk te maken, integreer je deze met Amazon API Gateway. In SAM doe je dit door een eigenschap Events aan je functie toe te voegen.

Het type HttpApi heeft vaak de voorkeur vanwege de eenvoud en kostenefficiëntie.

Resources:
  MyApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      CodeUri: s3://my-bucket/api-app.zip
      Events:
        MyApiEvent:
          Type: HttpApi
          Properties:
            Path: /hello
            Method: GET

Een DynamoDB-tabel definiëren

Voor permanente gegevensopslag kun je rechtstreeks in je SAM-sjabloon een DynamoDB-tabel definiëren. SAM biedt hiervoor het handige resourcetype AWS::Serverless::SimpleTable.

Hiermee wordt een eenvoudige DynamoDB-tabel met een primaire sleutel aangemaakt. Voor geavanceerdere configuraties kun je AWS::DynamoDB::Table gebruiken.

Resources:
  MyDataTable:
    Type: AWS::Serverless::SimpleTable
    Properties:
      PrimaryKey:
        Name: id
        Type: String
      ProvisionedThroughput:
        ReadCapacityUnits: 1
        WriteCapacityUnits: 1

IAM-machtigingen voor resources

Je Lambda-functies hebben vaak toestemming nodig om met andere AWS-services te werken, zoals DynamoDB. Je verleent deze machtigingen met IAM-beleidsregels (Identity and Access Management).

Met SAM kun je beleidsregels rechtstreeks aan de uitvoeringsrol van je Lambda-functie koppelen via de eigenschap Policies.

Resources:
  MyLambdaWithDbAccess:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      CodeUri: s3://my-bucket/db-app.zip
      Policies:
        - DynamoDBReadWriteAccess:
            TableName: !Ref MyDataTable # Grants access to MyDataTable
      Events:
        MyApiEvent:
          Type: HttpApi
          Properties:
            Path: /items
            Method: GET
  MyDataTable:
    Type: AWS::Serverless::SimpleTable
    Properties:
      PrimaryKey:
        Name: id
        Type: String

Belangrijke waarden exporteren

Na het implementeren van je serverless-applicatie moet je vaak de URL van het API-eindpunt of de naam van je DynamoDB-tabel weten.

Met de sectie Outputs in je SAM-sjabloon kun je deze waarden exporteren, zodat je er na de implementatie eenvoudig toegang toe hebt.

Outputs:
  ApiUrl:
    Description: "API Gateway endpoint URL for Prod stage for Hello World function"
    Value: !Sub "https://${ServerlessHttpApi}.execute-api.${AWS::Region}.amazonaws.com/hello"

Een volledig serverless-sjabloon

Hier is een uitgebreider SAM-sjabloon waarin een HTTP-API-eindpunt, een Lambda-functie voor het afhandelen van aanvragen en een DynamoDB-tabel voor gegevensopslag worden gedefinieerd.

Let op hoe verschillende resourcetypen worden gedeclareerd en aan elkaar worden gekoppeld.

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: A complete serverless API with Lambda and DynamoDB

Resources:
  MyApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      CodeUri: s3://my-bucket/full-app.zip
      Policies:
        - DynamoDBReadWriteAccess:
            TableName: !Ref MyItemsTable
      Events:
        MyApiEvent:
          Type: HttpApi
          Properties:
            Path: /items
            Method: GET

  MyItemsTable:
    Type: AWS::Serverless::SimpleTable
    Properties:
      PrimaryKey:
        Name: itemId
        Type: String

Outputs:
  ApiEndpoint:
    Description: "API Gateway endpoint URL"
    Value: !Sub "https://${ServerlessHttpApi}.execute-api.${AWS::Region}.amazonaws.com/items"

Controle van het SAM-sjabloon

Welke van de volgende zijn geldige secties op het hoogste niveau in een SAM-sjabloon?

Samenvatting: serverless-resources definiëren

In deze les heb je geleerd hoe je verschillende serverless-resources in een SAM-sjabloon definieert. We hebben behandeld:

  • De basisstructuur van een SAM-sjabloon.
  • Het declareren van AWS::Serverless::Function voor Lambda.
  • Het integreren van Lambda met API Gateway met Events.
  • Het definiëren van AWS::Serverless::SimpleTable voor DynamoDB.
  • Het verlenen van machtigingen met IAM Policies.
  • Het gebruiken van de sectie Outputs om waarden te exporteren.

Vervolgens leer je hoe je deze sjablonen naar AWS implementeert!

Gratis beginnen

Leer Serverloze backend met AWS Lambda en API Gateway met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Serverless resources definiëren” gratis?

Ja — de volledige tekst van “Serverless resources definiëren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Serverloze backend met AWS Lambda en API Gateway wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Serverloze backend met AWS Lambda en API Gateway bevat in totaal 4 lessen.

Wat leer ik in “Serverless resources definiëren”?

Schrijf SAM-templates om Lambda-functies, API Gateway-endpoints, DynamoDB-tabellen en andere serverless componenten te definiëren. Je oefent met Serverloze backend met AWS Lambda en API Gateway door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Serverloze backend met AWS Lambda en API Gateway te beginnen?

Ervaring vooraf is niet nodig. Serverloze backend met AWS Lambda en API Gateway op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Serverless resources definiëren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Serverloze backend met AWS Lambda en API Gateway?

Ja. Elke les over Serverloze backend met AWS Lambda en API Gateway bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Inleiding tot AWS SAM
  2. Serverless resources definiëren
  3. SAM-applicaties implementeren
  4. Lokaal testen en debuggen met SAM CLI
← Terug naar Serverloze backend met AWS Lambda en API Gateway