Serverless resources definiëren
Schrijf SAM-templates om Lambda-functies, API Gateway-endpoints, DynamoDB-tabellen en andere serverless componenten te definiëren.
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 altijdAWS::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 hereEen 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: 30Belangrijke Lambda-eigenschappen
Laten we enkele veelgebruikte eigenschappen van AWS::Serverless::Function bekijken:
Handler: Het toegangspunt in je code (bijvoorbeeldfilename.function_name).Runtime: De runtime van de programmeertaal (bijvoorbeeldpython3.9ofnodejs18.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: GETEen 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: 1IAM-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: StringBelangrijke 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::Functionvoor Lambda. - Het integreren van Lambda met API Gateway met
Events. - Het definiëren van
AWS::Serverless::SimpleTablevoor DynamoDB. - Het verlenen van machtigingen met IAM
Policies. - Het gebruiken van de sectie
Outputsom waarden te exporteren.
Vervolgens leer je hoe je deze sjablonen naar AWS implementeert!
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
- Inleiding tot AWS SAM
- Serverless resources definiëren
- SAM-applicaties implementeren
- Lokaal testen en debuggen met SAM CLI