Bereitstellen von C#-Lambda-Funktionen mit AWS SAM
Das AWS Serverless Application Model (AWS SAM) ist ein Toolkit, das den Prozess der Erstellung und Ausführung von Serverless-Anwendungen auf AWS optimiert. Sie definieren die Ressourcen für Ihre Anwendung in einer YAML- oder JSON-Vorlage und verwenden die AWS SAM-Befehlszeilenschnittstelle (AWS SAM CLI), um Ihre Anwendungen zu erstellen, zu verpacken und bereitzustellen. Wenn Sie eine Lambda-Funktion aus einer AWS SAM-Vorlage erstellen, erstellt AWS SAM automatisch ein ZIP-Bereitstellungspaket oder ein Container-Image mit Ihrem Funktionscode und allen von Ihnen angegebenen Abhängigkeiten. AWS SAM setzt dann Ihre Funktion mit Hilfe eines CloudFormation-Stacks ein. Weitere Informationen zur Verwendung von AWS SAM für die Erstellung und Bereitstellung von Lambda-Funktionen finden Sie unter Erste Schritte mit AWS SAM im AWS Serverless Application Model-Entwicklerhandbuch.
Die folgenden Schritte zeigen Ihnen, wie Sie eine .NET Hello World-Beispielanwendung mit AWS SAM herunterladen, erstellen und bereitstellen können. Diese Beispielanwendung verwendet eine Lambda-Funktion und einen Amazon API Gateway-Endpunkt, um ein grundlegendes API-Backend zu implementieren. Wenn Sie eine HTTP GET-Anforderung an Ihren API Gateway-Endpunkt senden, ruft API Gateway Ihre Lambda-Funktion auf. Die Funktion gibt eine „Hello World“ -Meldung zusammen mit der IP-Adresse der Lambda-Funktionsinstance zurück, die Ihre Anfrage verarbeitet.
Wenn Sie Ihre Anwendung mithilfe von AWS SAM erstellen und bereitstellen, verwendet die AWS SAM-CLI hinter den Kulissen den Befehl dotnet lambda package, um die einzelnen Lambda-Funktions-Codebündel zu verpacken.
Voraussetzungen
- .NET 8-SDK
-
Installieren Sie das .NET 8
-SDK und Runtime. - AWS SAM-CLI-Version 1.39 oder höher
-
Wie Sie die neueste Version der AWS SAM-CLI installieren können, erfahren Sie unter Installation der AWS SAM-CLI.
Bereitstellen einer AWS SAM-Beispielanwendung
-
Initialisieren Sie die Anwendung mit der Hello World-.NET-Vorlage mit dem folgenden Befehl.
sam init --app-template hello-world --name sam-app \ --package-type Zip --runtime dotnet8Mit diesem Befehl werden die folgenden Dateien und Verzeichnisse in Ihrem Projektverzeichnis erstellt.
└── sam-app ├── README.md ├── events │ └── event.json ├── omnisharp.json ├── samconfig.toml ├── src │ └── HelloWorld │ ├── Function.cs │ ├── HelloWorld.csproj │ └── aws-lambda-tools-defaults.json ├── template.yaml └── test └── HelloWorld.Test ├── FunctionTest.cs └── HelloWorld.Tests.csproj -
Navigieren Sie in das Verzeichnis, das die
template.yaml fileenthält. Diese Datei ist eine Vorlage, die die AWS-Ressourcen für Ihre Anwendung definiert, einschließlich Ihrer Lambda-Funktion und einer API-Gateway-API.cd sam-app -
Um den Quellcode Ihrer Anwendung zu erstellen, führen Sie folgenden Befehl aus.
sam build -
Führen Sie den folgenden Befehl aus, um Ihre Anwendung auf AWS bereitzustellen.
sam deploy --guidedDieser Befehl packt Ihre Anwendung und stellt sie mit der folgenden Reihe von Eingabeaufforderungen bereit. Um die Standardoptionen zu übernehmen, drücken Sie die Eingabetaste.
Anmerkung
Für HelloWorldFunction ist möglicherweise keine Autorisierung definiert. Ist das in Ordnung?, stellen Sie sicher, dass Sie
yeingeben.-
Stack-Name: Der Name des Stacks, der in CloudFormation bereitgestellt werden soll. Dieser Name muss für Ihr AWS-Konto und AWS-Region eindeutig sein.
-
AWS-Region: Die AWS-Region, in der Sie Ihre Anwendung bereitstellen möchten.
-
Änderungen vor der Bereitstellung bestätigen: Wählen Sie Ja, um alle Änderungssätze manuell zu überprüfen, bevor AWS SAM die Anwendungsänderungen bereitstellt. Wenn Sie nein wählen, werden Anwendungsänderungen automatisch von der AWS SAM CLI bereitgestellt.
-
Erlauben Sie die Erstellung von SAM-CLI-IAM-Rollen: Viele AWS SAM-Vorlagen, einschließlich der Hello world-Vorlage in diesem Beispiel, erstellen AWS Identity and Access Management (IAM)-Rollen, um Ihren Lambda-Funktionen die Berechtigung zum Zugriff auf andere AWS-Services zu geben. Wählen Sie Ja, um die Berechtigung zur Bereitstellung eines CloudFormation-Stacks zu erteilen, der IAM-Rollen erstellt oder ändert.
-
Rollback deaktivieren: Wenn AWS SAM bei der Erstellung oder Bereitstellung Ihres Stacks auf einen Fehler stößt, wird der Stack standardmäßig auf die vorherige Version zurückgesetzt. Wählen Sie Nein, um diese Standardeinstellung zu akzeptieren.
-
HelloWorldFunction hat möglicherweise keine Berechtigung definiert, ist dies in Ordnung: Geben Sie
yein. -
Argumente in samconfig.toml speichern: Wählen Sie Ja, um Ihre Konfigurationsauswahl zu speichern. In Zukunft können Sie
sam deployohne Parameter erneut ausführen, um Änderungen an Ihrer Anwendung vorzunehmen.
-
-
Wenn die Bereitstellung Ihrer Anwendung abgeschlossen ist, gibt die CLI den Amazon Resource Name (ARN) der Hello World Lambda-Funktion und die für sie erstellte IAM-Rolle zurück. Sie zeigt auch den Endpunkt Ihrer API-Gateway-API an. Um Ihre Anwendung zu testen, öffnen Sie den Endpunkt in einem Browser. Es wird eine Antwort ähnlich der folgenden angezeigt.
{"message":"hello world","location":"34.244.135.203"} -
Um Ihre Ressourcen zu löschen, führen Sie den folgenden Befehl aus. Beachten Sie, dass der von Ihnen erstellte API-Endpunkt ein öffentlicher Endpunkt ist, auf den über das Internet zugegriffen werden kann. Es wird empfohlen, dass Sie diesen Endpunkt nach dem Testen löschen.
sam delete
Nächste Schritte
Weitere Informationen über die Verwendung von AWS SAM zur Erstellung und Bereitstellung von Lambda-Funktionen mit .NET finden Sie in den folgenden Ressourcen: