Definering av serverløse ressurser
Skriv SAM-maler for å definere Lambda-funksjoner, API Gateway-endepunkter, DynamoDB-tabeller og andre serverløse komponenter.
Definering av serverløse ressurser er en gratis leksjon i Serverløs backend med AWS Lambda & API Gateway på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Serverløs backend med AWS Lambda & API Gateway, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Serverløs backend med AWS Lambda & API Gateway inneholder totalt 4 leksjoner.
Hva er SAM-maler
AWS Serverless Application Model (SAM)-maler er en kraftig måte å definere serverløse applikasjoner på ved hjelp av Infrastructure as Code (IaC).
I stedet for å konfigurere ressurser manuelt i AWS-konsollen beskriver du dem i en YAML- eller JSON-fil. Dette gjør distribusjonene repeterbare, versjonskontrollerte og enklere å administrere.
SAM-malens oppbygning
En SAM-mal har en tydelig struktur. De viktigste delene er:
AWSTemplateFormatVersion: Angir versjonen av malformatet.Transform: Skal alltid væreAWS::Serverless-2016-10-31for SAM.Description: En kort beskrivelse av applikasjonen.Resources: Her definerer du alle AWS-komponentene dine.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: My First SAM App
Resources:
# Your serverless resources go hereDefinere en serverløs funksjon
Kjernen i mange serverløse applikasjoner er AWS Lambda-funksjonen. I SAM deklarerer du en Lambda-funksjon ved hjelp av ressurstypen AWS::Serverless::Function.
Du må angi handleren, kjøretiden og hvor koden ligger.
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: app.lambda_handler
Runtime: python3.9
CodeUri: s3://my-bucket/my-app.zip
MemorySize: 128
Timeout: 30Viktige Lambda-egenskaper
La oss gå gjennom noen vanlige egenskaper for AWS::Serverless::Function:
Handler: Startpunktet i koden (for eksempelfilename.function_name).Runtime: Kjøretidsmiljøet for programmeringsspråket (for eksempelpython3.9,nodejs18.x).CodeUri: Banen til distribusjonspakken for funksjonen (lokalt eller i S3).MemorySize: Mengden RAM som er tildelt funksjonen (MB).Timeout: Maksimal kjøretid (sekunder).
API Gateway som hendelseskilde
For å gjøre Lambda-funksjonen tilgjengelig via et HTTP-endepunkt integrerer du den med Amazon API Gateway. I SAM gjør du dette ved å legge til en Events-egenskap i funksjonen.
HttpApi-typen foretrekkes ofte på grunn av enkelheten og kostnadseffektiviteten.
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: GETDefinere en DynamoDB-tabell
For å lagre data kan du definere en DynamoDB-tabell direkte i SAM-malen. SAM tilbyr den praktiske ressurstypen AWS::Serverless::SimpleTable.
Dette oppretter en grunnleggende DynamoDB-tabell med en primærnøkkel. For mer avanserte konfigurasjoner kan du bruke AWS::DynamoDB::Table.
Resources:
MyDataTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1IAM-tillatelser for ressurser
Lambda-funksjonene dine trenger ofte tillatelse til å samhandle med andre AWS-tjenester, for eksempel DynamoDB. Du gir disse tillatelsene ved hjelp av IAM-policyer (Identity and Access Management).
SAM lar deg knytte policyer direkte til kjøringsrollen for Lambda-funksjonen ved hjelp av egenskapen 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: StringEksportere viktige verdier
Etter at du har distribuert den serverløse applikasjonen, trenger du ofte å vite API-ets endepunkt-URL eller navnet på DynamoDB-tabellen.
Outputs-seksjonen i SAM-malen lar deg eksportere disse verdiene, slik at de blir lett tilgjengelige etter distribusjonen.
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"En komplett serverløs mal
Her er en mer komplett SAM-mal som definerer et HTTP API-endepunkt, en Lambda-funksjon som håndterer forespørsler, og en DynamoDB-tabell for datalagring.
Legg merke til hvordan ulike ressurstyper deklareres og kobles sammen.
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"Sjekk av SAM-malen
Hvilke av de følgende er gyldige seksjoner på øverste nivå i en SAM-mal?
Oppsummering: Definere serverløse ressurser
I denne leksjonen lærte du hvordan du definerer ulike serverløse ressurser i en SAM-mal. Vi gikk gjennom:
- Den grunnleggende strukturen til en SAM-mal.
- Deklarering av
AWS::Serverless::Functionfor Lambda. - Integrering av Lambda med API Gateway ved hjelp av
Events. - Definering av
AWS::Serverless::SimpleTablefor DynamoDB. - Tildeling av tillatelser med IAM-
Policies. - Bruk av
Outputs-seksjonen til å eksportere verdier.
Deretter skal vi lære hvordan disse malene distribueres til AWS!
Lær deg Serverløs backend med AWS Lambda & API Gateway med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Definering av serverløse ressurser» gratis?
Ja – hele teksten i «Definering av serverløse ressurser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Serverløs backend med AWS Lambda & API Gateway-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Serverløs backend med AWS Lambda & API Gateway inneholder totalt 4 leksjoner.
Hva lærer jeg i «Definering av serverløse ressurser»?
Skriv SAM-maler for å definere Lambda-funksjoner, API Gateway-endepunkter, DynamoDB-tabeller og andre serverløse komponenter. Du øver på Serverløs backend med AWS Lambda & API Gateway med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Serverløs backend med AWS Lambda & API Gateway?
Ingen tidligere erfaring er nødvendig. Serverløs backend med AWS Lambda & API Gateway på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Definering av serverløse ressurser»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Serverløs backend med AWS Lambda & API Gateway-leksjonen?
Ja. Alle Serverløs backend med AWS Lambda & API Gateway-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Introduksjon til AWS SAM
- Definering av serverløse ressurser
- Distribusjon av SAM-applikasjoner
- Lokal testing og feilsøking med SAM CLI