Serverløs udvikling med AWS Lambda · Lektion

Adgang til databaser i en VPC

Lær bedste praksis for at forbinde Lambda-funktioner med relationsdatabaser (f.eks. RDS) og andre datalagre i dit private VPC-netværk.

Lektion 2 af 411 trin

Adgang til databaser i en VPC er en gratis Serverløs udvikling med AWS Lambda-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Serverløs udvikling med AWS Lambda, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Opret forbindelse mellem Lambda og private databaser

Velkommen! I denne lektion lærer du, hvordan du sikkert opretter forbindelse fra dine Lambda-funktioner til databaser, der befinder sig i din private Amazon Virtual Private Cloud (VPC).

Dette er afgørende for serverløse applikationer, der skal interagere med følsomme eller interne datalagre som Amazon RDS eller andre databaser, der ikke er offentligt tilgængelige.

Lambda og din private database

Du har allerede konfigureret din Lambda-funktion til at køre i en VPC (i den foregående lektion). Nu fokuserer vi på, hvordan denne Lambda-funktion kan nå en database, der også befinder sig i den samme VPC.

Denne opsætning sikrer sikker, intern kommunikation og holder din database isoleret fra det offentlige internet.

Sikkerhedsgrupper: Vogterne

Sikkerhedsgrupper er grundlæggende her. Tænk på dem som virtuelle firewalls for dine instanser og ressourcer i en VPC.

  • De styrer både indgående og udgående trafik.
  • Både din Lambda-funktion og din database har tilknyttede sikkerhedsgrupper.
  • Disse grupper skal konfigureres til eksplicit at tillade kommunikation mellem dem.

Indgående regler for databasen

Din databases sikkerhedsgruppe skal have en indgående regel, der tillader forbindelser fra din Lambda-funktion.

  • Type: Custom TCP
  • Portområde: Den specifikke port, som din database lytter på (f.eks. 3306 for MySQL og 5432 for PostgreSQL).
  • Kilde: Dette skal være Security Group ID for din Lambda-funktion.

Det sikrer, at kun din Lambda-funktion kan starte forbindelser til databasen.

Udgående regler for Lambda

Omvendt skal din Lambda-funktions sikkerhedsgruppe have en udgående regel, der tillader den at sende trafik til din database.

  • Type: Custom TCP
  • Portområde: Igen databasens specifikke port (f.eks. 3306).
  • Destination: Dette skal være Security Group ID for din database.

Det gør det muligt for din Lambda-funktion at nå databasen og oprette forbindelse til den.

Undernet og netværkstilgængelighed

Ud over sikkerhedsgrupper skal du sikre, at din Lambda-funktion implementeres i undernet, der har korrekt netværksrouting til de undernet, hvor dine databaseinstanser befinder sig.

  • Typisk placeres både Lambda-funktionen og databasen i private undernet i den samme VPC.
  • AWS håndterer den interne routing i VPC'en, men korrekt tilknytning af undernet er afgørende for tilgængeligheden.

Opret forbindelse fra Lambda-kode

I din Lambda-funktions kode bruger du almindelige databasedrivere og forbindelsesstrenge ligesom i enhver anden applikation.

Du skal bruge disse vigtige oplysninger:

  • Databaseendpoint: (f.eks. your-db.xxxx.rds.amazonaws.com)
  • Port: (f.eks. 3306)
  • Databasenavn
  • Brugernavn
  • Adgangskode

Eksempel på Java-databaseforbindelse

Her er et konceptuelt Java-udsnit, der viser, hvordan en Lambda-funktion kan forsøge at oprette forbindelse til en database. I en rigtig applikation skal du håndtere legitimationsoplysninger sikkert.

Dette eksempel viser den grundlæggende struktur; det kører ikke korrekt uden en aktiv database og angivne miljøvariabler.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {
  public static void main(String[] args) {
    String dbUrl = System.getenv("DB_URL");
    String dbUser = System.getenv("DB_USER");
    String dbPass = System.getenv("DB_PASS");

    if (dbUrl == null || dbUser == null || dbPass == null) {
      System.out.println("Error: DB environment variables not set.");
      return;
    }

    try {
      System.out.println("Attempting to connect to database...");
      Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPass);
      System.out.println("Connection successful!");
      conn.close();
    } catch (SQLException se) {
      System.err.println("Database connection error: " + se.getMessage());
    } catch (Exception e) {
      System.err.println("An unexpected error occurred: " + e.getMessage());
    }
  }
}

Håndter legitimationsoplysninger sikkert

Hardkod aldrig databaselegitimationsoplysninger direkte i din Lambda-kode! Det er en alvorlig sikkerhedsrisiko.

Bedste praksis for håndtering af følsomme oplysninger:

  • AWS Secrets Manager: Den anbefalede måde at gemme, hente og rotere databaselegitimationsoplysninger sikkert på.
  • Miljøvariabler: Egner sig til ikke-følsom konfiguration, men ikke til adgangskoder eller API-nøgler.

Prioritér altid sikkerheden for følsomme data.

Tjek din forståelse

Forestil dig, at din Lambda-funktion (tilknyttet sikkerhedsgruppe SG-A) skal oprette forbindelse til en RDS-database (tilknyttet sikkerhedsgruppe SG-B) på port 3306.

Hvilken indgående regel skal konfigureres på SG-B (databasens sikkerhedsgruppe) for at tillade denne forbindelse?

Opsummering: Databaseadgang i en VPC

Godt klaret! Du har lært det grundlæggende om at oprette forbindelse fra dine Lambda-funktioner til private databaser i din VPC.

  • Både din Lambda-funktion og din database skal være i den samme VPC.
  • Sikkerhedsgrupper er afgørende for at styre trafikstrømmen mellem dem.
  • Konfigurér indgående regler på databasens sikkerhedsgruppe og udgående regler på Lambdas sikkerhedsgruppe.
  • Håndtér altid databaselegitimationsoplysninger sikkert, helst ved hjælp af AWS Secrets Manager.

Denne viden er afgørende for at bygge sikre og robuste serverløse applikationer!

Gratis at komme i gang

Lær Serverløs udvikling med AWS Lambda med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Adgang til databaser i en VPC” gratis?

Ja — hele teksten til “Adgang til databaser i en VPC” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Serverløs udvikling med AWS Lambda-kurset, skal du opgradere til CoddyKit PRO. Serverløs udvikling med AWS Lambda-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Adgang til databaser i en VPC”?

Lær bedste praksis for at forbinde Lambda-funktioner med relationsdatabaser (f.eks. RDS) og andre datalagre i dit private VPC-netværk. Du øver dig i Serverløs udvikling med AWS Lambda med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Serverløs udvikling med AWS Lambda?

Der kræves ingen tidligere erfaring. Serverløs udvikling med AWS Lambda på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Adgang til databaser i en VPC”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Serverløs udvikling med AWS Lambda-lektion?

Ja. Alle Serverløs udvikling med AWS Lambda-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Lambda i en VPC til private ressourcer
  2. Adgang til databaser i en VPC
  3. Bedste praksis for netværkssikkerhed
  4. NAT-gateways og internetadgang fra en VPC
← Tilbage til Serverløs udvikling med AWS Lambda