Serverløs utvikling med AWS Lambda · leksjon

AWS Serverless Application Model (SAM)

Lær å definere, utvikle og distribuere serverless-applikasjoner med AWS SAM, et rammeverk med åpen kildekode for utvikling på AWS

Leksjon 1 av 411 trinn

AWS Serverless Application Model (SAM) er en gratis leksjon i Serverløs utvikling med AWS Lambda på CoddyKit. Dette er leksjon 1 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 utvikling med AWS Lambda, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.

Forenkle serverløs utvikling med AWS SAM

AWS Serverless Application Model (SAM) er et rammeverk med åpen kildekode som forenkler utvikling og distribusjon av serverløse applikasjoner på AWS.

Det utvider AWS CloudFormation og gir Dem en egen, enklere syntaks for å definere serverløse ressurser som Lambda-funksjoner, API Gateways og DynamoDB-tabeller. SAM hjelper Dem med å administrere hele den serverløse applikasjonen som én enhet.

SAM-mal: Oppskriften

Kjernen i alle SAM-applikasjoner er filen template.yaml. Denne YAML- (eller JSON-)filen fungerer som en oppskrift og beskriver alle de serverløse ressursene som utgjør applikasjonen.

SAM-maler er i hovedsak AWS CloudFormation-maler, men de inneholder en viktig Transform-egenskap som aktiverer SAMs forenklede syntaks for serverløse ressurser.

SAM-malens oppbygning

La oss se på de viktigste delene De finner i en template.yaml-fil:

  • AWSTemplateFormatVersion: Standardversjonen for CloudFormation.
  • Transform: AWS::Serverless-2016-10-31: Dette er avgjørende! Det forteller CloudFormation at SAMs forenklede syntaks skal brukes.
  • Description: En kort beskrivelse av applikasjonen.
  • Resources: Her definerer De alle de serverløse komponentene, for eksempel Lambda-funksjoner, API-er og databaser.

Definere en serverløs funksjon

I SAM definerer De en Lambda-funksjon ved hjelp av ressurstypen AWS::Serverless::Function. De angir viktige egenskaper som kjøremiljø, startpunkt (handler), minne og hvordan funksjonen utløses.

  • Type: AWS::Serverless::Function: Identifiserer ressursen som en Lambda-funksjon.
  • Handler: Funksjonen i koden som AWS Lambda kaller for å starte kjøringen (for eksempel app.lambda_handler).
  • Runtime: Programmeringsspråkmiljøet (for eksempel python3.9 eller nodejs16.x).
  • CodeUri: Den lokale banen til funksjonens kildekode.
  • Events: Angir hvordan funksjonen kalles (for eksempel et API Gateway-endepunkt).

Vår «Hello World»-handler for Lambda

Her er en enkel Python-funksjon for Lambda. Dette er koden som kjøres når den serverløse funksjonen kalles. Den returnerer bare meldingen «Hello from Lambda!».

import json

def lambda_handler(event, context):
    # Log the event for debugging purposes
    print("Received event: " + json.dumps(event))

    # Basic response for API Gateway
    response = {
        "statusCode": 200,
        "body": json.dumps("Hello from Lambda!")
    }
    return response

SAM-mal for funksjonen vår

La oss nå definere «Hello World»-Lambda-funksjonen vår i en template.yaml-fil. Vi setter den opp slik at den utløses av en GET-forespørsel til API Gateway på banen /hello.

Denne malen forutsetter at Python-koden Deres (app.py) ligger i en mappe kalt hello_world/ ved siden av denne template.yaml-filen.

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: A simple "Hello World" serverless application.

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.lambda_handler
      Runtime: python3.9
      CodeUri: hello_world/
      MemorySize: 128
      Timeout: 30
      Events:
        HelloWorldApi:
          Type: Api
          Properties:
            Path: /hello
            Method: GET

SAM CLI: Verktøyet for distribusjon

AWS SAM Command Line Interface (CLI) er hovedverktøyet Deres for utvikling og distribusjon av SAM-applikasjoner. Det tilbyr kommandoer for å initialisere prosjekter, bygge avhengigheter, teste lokalt og distribuere applikasjonen til AWS.

  • sam init: Start et nytt serverløst prosjekt.
  • sam build: Pakk applikasjonskoden og avhengighetene.
  • sam deploy: Distribuer applikasjonen til AWS CloudFormation.

Bygge SAM-applikasjonen Deres

Før De kan distribuere applikasjonen, må De «bygge» den. Kommandoen sam build samler inn koden, pakker eventuelle avhengigheter (for eksempel Python-pakker) og klargjør alt i en pakke som kan distribueres.

Kommandoen oppretter en .aws-sam-mappe som inneholder de behandlede artefaktene.

sam build

Distribuere SAM-applikasjonen Deres

Når applikasjonen er bygget, bruker De sam deploy til å sende den til AWS. Kommandoen oppretter eller oppdaterer en CloudFormation-stack basert på SAM-malen og klargjør alle nødvendige ressurser.

De må angi et unikt stack-navn og en S3-bøtte for kodeartefakter. Argumentet --capabilities CAPABILITY_IAM bekrefter at malen oppretter IAM-roller.

sam deploy --stack-name my-hello-app \
           --s3-bucket your-unique-s3-bucket-name \
           --capabilities CAPABILITY_IAM \
           --region us-east-1

Rask kontroll: Komponenter i en SAM-mal

Hvilke av de følgende er nødvendige komponenter eller deler i en vanlig AWS SAM-mal (template.yaml)?

Oppsummering: SAM-reisen Deres begynner!

De har nettopp lært grunnleggende AWS SAM!

  • SAM forenkler utvikling og distribusjon av serverløse applikasjoner ved hjelp av en CloudFormation-basert mal.
  • Viktige komponenter er template.yaml med egenskapen Transform og delen Resources.
  • SAM CLI tilbyr kommandoer som sam init, sam build og sam deploy for å administrere applikasjonene Deres.

Med SAM kan De effektivt definere, bygge og distribuere komplekse serverløse arkitekturer, noe som gjør det til et kraftig verktøy for serverløs utvikling.

Gratis å komme i gang

Lær deg Serverløs utvikling med AWS Lambda 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 «AWS Serverless Application Model (SAM)» gratis?

Ja – hele teksten i «AWS Serverless Application Model (SAM)» 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 utvikling med AWS Lambda-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Serverløs utvikling med AWS Lambda inneholder totalt 4 leksjoner.

Hva lærer jeg i «AWS Serverless Application Model (SAM)»?

Lær å definere, utvikle og distribuere serverless-applikasjoner med AWS SAM, et rammeverk med åpen kildekode for utvikling på AWS Du øver på Serverløs utvikling med AWS Lambda 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 utvikling med AWS Lambda?

Ingen tidligere erfaring er nødvendig. Serverløs utvikling med AWS Lambda 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 1 av 4.

Hvor lang tid tar leksjonen «AWS Serverless Application Model (SAM)»?

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 utvikling med AWS Lambda-leksjonen?

Ja. Alle Serverløs utvikling med AWS Lambda-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

  1. AWS Serverless Application Model (SAM)
  2. Introduksjon til Serverless Framework
  3. CI/CD for serverless-apper
  4. Lokal testing med SAM CLI
← Tilbake til Serverløs utvikling med AWS Lambda