AWS Lambda Basisprojekt: Docker-Image erstellen - AWS Toolkit mit Amazon Q

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS Lambda Basisprojekt: Docker-Image erstellen

Sie können das Toolkit for Visual Studio verwenden, um Ihre AWS Lambda Funktion als Docker-Image bereitzustellen. Mit Docker haben Sie mehr Kontrolle über Ihre Laufzeit. Sie können beispielsweise benutzerdefinierte Laufzeiten wie .NET 8.0 wählen. Sie stellen Ihr Docker-Image auf die gleiche Weise bereit wie jedes andere Container-Image. Dieses Tutorial ist Tutorial: Basic Lambda Project sehr ähnlich, mit zwei Unterschieden:

  • Ein Dockerfile ist im Projekt enthalten.

  • Eine alternative Veröffentlichungskonfiguration wird ausgewählt.

Informationen zu Lambda-Container-Images finden Sie unter Lambda Deployment Packages im AWS Lambda Developer Guide.

Weitere Informationen zur Arbeit mit Lambda AWS Toolkit for Visual Studio finden Sie im AWS Toolkit for Visual Studio Thema Verwenden der AWS Lambda Vorlagen in diesem Benutzerhandbuch.

Erstellen Sie ein Visual Studio-.NET-Core-Lambda-Projekt

Sie können Lambda Visual Studio-Vorlagen und -Blueprints verwenden, um Ihre Projektinitialisierung zu beschleunigen. Lambda-Blueprints enthalten vorgefertigte Funktionen, die die Erstellung einer flexiblen Projektgrundlage vereinfachen.

So erstellen Sie ein Visual Studio-.NET Core Lambda-Projekt
  1. Erweitern Sie in Visual Studio das Menü Datei, erweitern Sie Neu und wählen Sie dann Projekt aus.

  2. Stellen Sie im Dialogfeld „Neues Projekt“ die Dropdown-Felder Sprache, Plattform und Projekttyp auf „Alle“ ein und geben Sie dann aws lambda in das Suchfeld ein. Wählen Sie die AWS Vorlage Lambda Project (.NET Core — C#).

  3. Geben Sie AWSLambdaDocker im Feld Projektname den Speicherort Ihrer Datei ein und wählen Sie dann Erstellen aus.

  4. Wählen Sie auf der Seite „Blueprint auswählen“ den Blueprint .NET 8 (Container Image) aus, und klicken Sie dann auf Fertig stellen, um das Visual Studio-Projekt zu erstellen. Sie können jetzt die Struktur und den Code des Projekts überprüfen.

Projektdateien überprüfen

In den folgenden Abschnitten werden die drei Projektdateien untersucht, die mit dem.NET 8-Blueprint (Container Image) erstellt wurden:

  1. Dockerfile

  2. aws-lambda-tools-defaults.json

  3. Function.cs

1. Dockerfile

A Dockerfile führt drei Hauptaktionen aus:

  • FROM: Legt das Basis-Image fest, das für dieses Image verwendet werden soll. Dieses Basisimage stellt .NET Runtime, Lambda Runtime und ein Shell-Skript bereit, das einen Einstiegspunkt für den Lambda.NET-Prozess bereitstellt.

  • WORKDIR: Legt das interne Arbeitsverzeichnis des Images fest als. /var/task

  • COPY: Kopiert die während des Build-Prozesses generierten Dateien von ihrem lokalen Speicherort in das Arbeitsverzeichnis des Images.

Die folgenden optionalen Dockerfile Aktionen können Sie angeben:

  • ENTRYPOINT: Das Basis-Image enthält bereits ein. Dabei handelt es sich um den StartvorgangENTRYPOINT, der ausgeführt wird, wenn das Image gestartet wird. Wenn Sie Ihren eigenen angeben möchten, überschreiben Sie diesen Basiseinstiegspunkt.

  • CMD: Gibt an, AWS welchen benutzerdefinierten Code Sie ausführen möchten. Es erwartet einen vollständig qualifizierten Namen für Ihre benutzerdefinierte Methode. Diese Zeile muss entweder direkt in das Dockerfile aufgenommen werden oder kann während des Veröffentlichungsvorgangs angegeben werden.

    # Example of alternative way to specify the Lambda target method rather than during the publish process. CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]

Das Folgende ist ein Beispiel für ein Dockerfile, das mit dem.NET 8-Blueprint (Container Image) erstellt wurde.

FROM public.ecr.aws/lambda/dotnet:8 WORKDIR /var/task # This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. # The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built # with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project # will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir` # set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish". # # Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image. # For more information on this approach checkout the project's README.md file. COPY "bin/Release/lambda-publish" .

2. aws-lambda-tools-defaults.json

Die aws-lambda-tools-defaults.json Datei wird verwendet, um Standardwerte für den Toolkit for Visual Studio Studio-Bereitstellungsassistenten und .NET Core CLI anzugeben. In der folgenden Liste werden Felder beschrieben, die Sie in Ihrer aws-lambda-tools-defaults.json Datei festlegen können.

  • profile: legt Ihr AWS Profil fest.

  • region: legt die AWS Region fest, in der Ihre Ressourcen gespeichert werden.

  • configuration: legt die Konfiguration fest, die für die Veröffentlichung Ihrer Funktion verwendet wurde.

  • package-type: legt den Typ des Bereitstellungspakets auf ein Container-Image oder ein ZIP-Dateiarchiv fest.

  • function-memory-size: legt die Speicherzuweisung für Ihre Funktion in MB fest.

  • function-timeout: Timeout ist die maximale Zeit in Sekunden, die eine Lambda-Funktion ausführen kann. Sie können dies in Schritten von 1 Sekunde bis zu einem Maximalwert von 15 Minuten anpassen.

  • docker-host-build-output-dir: legt das Ausgabeverzeichnis des Build-Prozesses fest, das den Anweisungen in der entspricht. Dockerfile

  • image-command: ist ein vollständig qualifizierter Name für Ihre Methode, der Code, für den die Lambda-Funktion ausgeführt werden soll. Die Syntax lautet:. {Assembly}::{Namespace}.{ClassName}::{MethodName} Weitere Informationen finden Sie unter Handler-Signaturen. Wenn image-command Sie diese Einstellung festlegen, wird dieser Wert später im Veröffentlichungsassistenten von Visual Studio vorab aufgefüllt.

Im Folgenden finden Sie ein Beispiel für eine aws-lambda-tools-defaults JSON-Datei, die mit dem.NET 8-Blueprint (Container Image) erstellt wurde.

{ "Information": [ "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.", "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.", "dotnet lambda help", "All the command line options for the Lambda command can be specified in this file." ], "profile": "default", "region": "us-west-2", "configuration": "Release", "package-type": "image", "function-memory-size": 512, "function-timeout": 30, "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler", "docker-host-build-output-dir": "./bin/Release/lambda-publish" }

3. Function.cs

Die Function.cs Datei definiert die C#-Funktionen, die als Lambda-Funktionen verfügbar gemacht werden sollen. Das FunctionHandler ist die Lambda-Funktionalität, die ausgeführt wird, wenn die Lambda-Funktion ausgeführt wird. FunctionHandlerRuft in diesem Projekt den ToUpper() Eingabetext auf.

Auf Lambda veröffentlichen

Docker-Images, die durch den Build-Prozess generiert werden, werden in Amazon Elastic Container Registry (Amazon ECR) hochgeladen. Amazon ECR ist eine vollständig verwaltete Docker-Container-Registry, die Sie zum Speichern, Verwalten und Bereitstellen von Docker-Container-Images verwenden. Amazon ECR hostet das Image, auf das Lambda dann verweist, um die programmierte Lambda-Funktionalität bereitzustellen, wenn es aufgerufen wird.

Um Ihre Funktion auf Lambda zu veröffentlichen
  1. Öffnen Sie im Solution Explorer das Kontextmenü für das Projekt (klicken Sie mit der rechten Maustaste darauf) und wählen Sie dann Veröffentlichen, AWS Lambda um das Fenster Lambda-Funktion hochladen zu öffnen.

  2. Gehen Sie auf der Seite Lambda-Funktion hochladen wie folgt vor:

    Upload-Bildschirm für die Veröffentlichung der bildbasierten Lambda-Funktion auf AWS
    1. Als Pakettyp Image wurde automatisch als Pakettyp ausgewählt, da der Veröffentlichungsassistent eine Dockerfile in Ihrem Projekt erkannt hat.

    2. Geben Sie unter Funktionsname einen Anzeigenamen für Ihre Lambda-Instanz ein. Dieser Name ist der Referenzname, der sowohl im AWS Explorer in Visual Studio als auch im angezeigt wird AWS Management Console.

    3. Geben Sie unter Beschreibung den Text ein, der zusammen mit Ihrer Instanz im angezeigt werden soll AWS Management Console.

    4. Geben Sie für Image Command einen vollqualifizierten Pfad zu der Methode ein, die die Lambda-Funktion ausführen soll: AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler

      Anmerkung

      Jeder hier eingegebene Methodenname überschreibt alle CMD-Anweisungen in der Dockerfile. Die Eingabe von Image Command ist nur optional, WENN Sie eine Anweisung CMD zum Starten der Lambda-Funktion Dockerfile enthalten.

    5. Geben Sie für Image Repo den Namen einer neuen oder vorhandenen Amazon Elastic Container Registry ein. Das Docker-Image, das der Build-Prozess erstellt, wird in diese Registry hochgeladen. Die Lambda-Definition, die veröffentlicht wird, wird auf dieses Amazon ECR-Image verweisen.

    6. Geben Sie für Image-Tag ein Docker-Tag ein, das mit Ihrem Image im Repository verknüpft werden soll.

    7. Wählen Sie Weiter aus.

  3. Wählen Sie auf der Seite mit den erweiterten Funktionsdetails unter Rollenname eine Rolle aus, die Ihrem Konto zugeordnet ist. Die Rolle wird verwendet, um temporäre Anmeldeinformationen für alle Amazon Web Services Services-Aufrufe bereitzustellen, die durch den Code in der Funktion ausgeführt werden. Wenn Sie noch keine Rolle haben, wählen Sie Neue Rolle basierend auf AWS verwalteter Richtlinie und wählen Sie dann AWSLambdaBasicExecutionRole.

    Anmerkung

    Ihr Konto muss über die Berechtigung zum Ausführen der ListPolicies IAM-Aktion verfügen. Andernfalls ist die Liste mit den Rollennamen leer.

  4. Wählen Sie Hochladen, um den Upload- und Veröffentlichungsvorgang zu starten.

    Anmerkung

    Die Seite mit den Upload-Funktionen wird angezeigt, während die Funktion hochgeladen wird. Der Veröffentlichungsprozess erstellt dann das Image auf der Grundlage der Konfigurationsparameter, erstellt bei Bedarf das Amazon ECR-Repository, lädt das Image in das Repository hoch und erstellt das Lambda, das auf dieses Repository mit diesem Image verweist.

    Nachdem die Funktion hochgeladen wurde, wird die Funktionsseite geöffnet und die Konfiguration Ihrer neuen Lambda-Funktion wird angezeigt.

  5. Um die Lambda-Funktion manuell aufzurufen, geben Sie auf der Registerkarte Testfunktion den Text in das hello image based lambda Freitexteingabefeld für die Anforderung ein und wählen Sie dann Aufrufen. Ihr in Großbuchstaben konvertierter Text wird als Antwort angezeigt.

    Die Registerkarte Testfunktion der veröffentlichten Funktionsansichtsseite enthält eine Schaltfläche zum manuellen Aufrufen der Lambda-Methode.
  6. Um das Repository anzuzeigen, wählen Sie im AWS Explorer unter Amazon Elastic Container Service die Option Repositories aus.

    Sie können die Ansicht Function: jederzeit erneut öffnen, indem Sie im AWS Explorer unter dem Knoten auf Ihre bereitgestellte Instance doppelklicken. AWS Lambda

    Anmerkung

    Wenn Ihr AWS Explorer-Fenster nicht geöffnet ist, können Sie es über Ansicht -> Explorer andocken AWS

  7. Beachten Sie zusätzliche bildspezifische Konfigurationsoptionen auf der Registerkarte Konfiguration. Diese Registerkarte bietet eine Möglichkeit, die, und ENTRYPOINTCMD, WORKDIR die möglicherweise in der Dockerfile angegeben wurden, zu überschreiben. Beschreibung ist die Beschreibung, die Sie (falls vorhanden) beim Hochladen/Veröffentlichen eingegeben haben.

Aufräumen

Wenn Sie mit diesem Beispiel nicht weiterentwickeln möchten, denken Sie daran, die bereitgestellte Funktion und das ECR-Image zu löschen, damit Ihnen nicht genutzte Ressourcen in Ihrem Konto in Rechnung gestellt werden.

  • Funktionen können gelöscht werden, indem Sie mit der rechten Maustaste auf Ihre bereitgestellte Instanz klicken, die sich im AWS Explorer unter dem Knoten befindet. AWS Lambda

  • Repositorys können im AWS Explorer unter dem Amazon Elastic Container Service -> Repositories gelöscht werden.

Nächste Schritte

Informationen zum Erstellen und Testen von Lambda-Images finden Sie unter Using Container Images with Lambda.

Informationen zur Bereitstellung von Container-Images, zu Berechtigungen und zum Überschreiben von Konfigurationseinstellungen finden Sie unter Funktionen konfigurieren.