Wie verwende ich Ebenen, um die neueste Version des AWS SDK für JavaScript in meine Node.js-Lambda-Funktion zu integrieren?

Lesedauer: 5 Minute
0

Die AWS-Lambda-Laufzeitumgebung verfügt nicht über alle Funktionen aus der neuesten Version eines AWS SDK. Ich möchte die neueste Version des AWS SDK für JavaScript in meine Node.js-Lambda-Funktion integrieren.

Kurzbeschreibung

Um die neueste Version eines AWS SDK in das Bereitstellungspaket der Lambda-Funktion zu integrieren, erstelle eine Lambda-Ebene. Füge dann die Ebene zu der Funktion hinzu.

Hinweis: Für Node.js, Version 16 und früher, enthält die Lambda Node.js-Laufzeit das AWS SDK für JavaScript Version 2. Für Node.js, Version 18 und höher, enthält die Lambda Node.js-Laufzeit das AWS SDK für JavaScript Version 3. Weitere Informationen findest du unter AWS SDK für JavaScript-Dokumentation.

Eine vollständige Liste der Laufzeiten und der von Lambda verwendeten AWS-SDK-Versionen findest du unter Lambda-Laufzeiten.

Hinweis: Die folgende Auflösung erhöht die Größe des Bereitstellungspakets der Funktion. Informationen zu Lambda-Speicherkontingenten finden Sie unter Lambda-Kontingente.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

(Optional) Bestätigen der von der Funktion verwendeten AWS-SDK-Version

Führe die folgenden Schritte aus:

Hinweis: Verwende diese Methode nur für Node.js Version 16 und früher.

  1. Erstelle eine Funktion in der Lambda-Konsole.

  2. Aktualisieren Sie den Code der Funktion, um die Version des AWS SDK zurückzugeben, die die Funktion beim Aufrufen der Funktion verwendet:

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. Rufe die Funktion auf.

  4. Vergleiche die Version des AWS SDK, die die Funktion zurückgegeben hat, mit der neuesten Version des AWS SDK in der AWS-SDK-Dokumentation.

Installieren und Verpacken der neuesten Version des AWS SDK

Hinweis: Bereitstellungspakete müssen mit der von dir verwendeten Lambda-Laufzeit kompatibel sein. Es ist eine bewährte Methode, für die Laufzeit dasselbe Betriebssystem (OS) zu verwenden, das in den Lambda-Laufzeiten angegeben ist.

Führe in einer Lambda-kompatiblen Entwicklungsumgebung die folgenden Schritte aus:

  1. Führe den folgenden Befehl aus, um ein Verzeichnis zu erstellen:

    mkdir -p aws-sdk-layer/nodejs
  2. Verwende den folgenden Befehl, um zum Verzeichnis zu wechseln:

    cd aws-sdk-layer/nodejs
  3. Installiere das AWS SDK für die Node.js-Laufzeitversion:
    Node.js 16 und früher (AWS SDK Version 2)
    Um die neueste Version von AWS-SDK-Version 2 zu installieren, verwende eine mit Amazon Linux 2 kompatible Instance, um den folgenden Befehl auszuführen:

    npm install aws-sdk

    Weitere Informationen findest du unter Tutorial: Einrichten von Node.js auf einer Amazon-EC2-Instance.
    Hinweis: Es ist eine bewährte Methode, bei der Entwicklung von Lambda-Ressourcen eine Amazon-Linux-2-Umgebung zu verwenden.
    -oder-
    Wenn du ein Windows- oder macOS-Betriebssystem für die Entwicklung verwendest, verwende Docker, um den folgenden Befehl auszuführen:

    docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"

    Hinweis: Bevor du den Befehl ausführst, stelle sicher, dass du die neueste Version von Docker auf der Docker-Website verwendest.

    Node.js 18 und höher (AWS SDK Version 3)
    Informationen zur Installation der neuesten Version von AWS SDK-Version 3 findest du unter Installieren des SDK für JavaScript.

  4. Erstelle eine .zip-Datei, um sie auf die Lambda-Ebene hochzuladen:

    zip -r ../package.zip ../
  5. (Optional) Überprüfe die Version des AWS SDK, die du installiert hast:

    cat package-lock.json

    Beispielausgabe:

    {  "requires": true,    "lockfileVersion": 1,  
      "dependencies": {  
        "aws-sdk": {  
          "version": "2.888.0",  
    ...

Verwenden der AWS CLI oder Lambda-Konsole, um eine Lambda-Ebene zu erstellen und sie zu der Funktion hinzuzufügen

AWS CLI

  1. Um eine neue Lambda-Ebene zu erstellen, die die neueste Version des AWS SDK enthält, führe den folgenden Befehl publish-layer-version aus:

    aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region

    Hinweis: Ersetze node_sdk durch den Namen der Ebene und My layer durch eine Beschreibung der Ebene. Ersetze außerdem den Wert compatible-runtimes durch die von dir verwendete Laufzeit und region durch die AWS-Region, in der sich die Funktion und die Ebene befinden.

  2. Kopiere in der Ausgabe den Wert LayerVersionArn, um ihn im nächsten Schritt zu verwenden.

  3. Um die Ebene zu der Funktion hinzuzufügen, führe den folgenden Befehl update-function-configuration aus:

    aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region

    Hinweis: Ersetze my-function durch den Namen der Funktion, arn:aws:lambda:us-east- 2:123456789012:layer:node_sdk:1 durch den Wert LayerVersionArn aus der Ausgabe und region durch die Region.

Weitere Informationen findest du unter Lambda-Abhängigkeiten mit Ebenen verwalten.

Lambda-Konsole

Gehe wie folgt vor, um einen Lambda-Layer zu erstellen und ihn der Funktion in der Lambda-Konsole hinzuzufügen:

  1. Öffne die Seite Ebenen in der Lambda-Konsole.
  2. Wähle Ebene erstellen.
  3. Gib unter Name einen Namen für die neue Ebene ein.
  4. Wähle .zip-Datei hochladen und wähle dann den Namen der .zip-Datei des Bereitstellungspakets.
  5. Wähle Erstellen.
  6. Öffne die Seite Funktionen in der Lambda-Konsole und wähle dann den Namen der Funktion, zu der du die Ebene hinzufügen möchtest.
  7. Wähle unter Ebenen die Option Ebene hinzufügen.
  8. Wähle für Ebene auswählen die Option Benutzerdefinierte Ebenen.
  9. Wähle die Dropdown-Liste Benutzerdefinierte Ebenen und wähle dann die benutzerdefinierte Ebene.
  10. Wähle Hinzufügen.

(Optional) Setup testen

Führe die Schritte im Abschnitt (Optional) Bestätige die AWS-SDK-Version, die die Funktion verwendet, um die Funktion aufzurufen. Die Funktion gibt die Version des AWS SDK zurück, die sie verwendet.

Ähnliche Informationen

Bewährte Methoden für die Arbeit mit AWS-Lambda-Funktionen

Wie erstelle ich ein Lambda-Bereitstellungspaket für Node.js?

Wie kann ich eine Ebene für meine Lambda-Python-Funktion erstellen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat