HTTP-Cloud Functions-Funktion mit .NET erstellen und bereitstellen

HTTP-Cloud Functions-Funktion mit .NET erstellen und bereitstellen

In dieser Anleitung erfahren Sie, wie Sie mit der .NET-Laufzeitsprache C# eine Cloud Functions-Funktion schreiben. Es gibt zwei Arten von Cloud Functions-Funktionen:

  • Eine HTTP-Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
  • Eine ereignisgesteuerte Funktion, die durch Ereignisse in Ihrer Cloud-Infrastruktur ausgelöst wird, z. B. Nachrichten in einem Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.

Weitere Informationen finden Sie unter HTTP-Funktionen schreiben und Ereignisgesteuerte Funktionen schreiben.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Cloud Functions, Cloud Build, Artifact Registry, Cloud Run und Cloud Logging APIs aktivieren.

    Aktivieren Sie die APIs

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Cloud Functions, Cloud Build, Artifact Registry, Cloud Run und Cloud Logging APIs aktivieren.

    Aktivieren Sie die APIs

  8. Installieren und initialisieren Sie das Google Cloud SDK.
  9. Aktualisieren und installieren Sie gcloud-Komponenten mit dem folgenden Befehl.
    gcloud components update
  10. Bereiten Sie die Entwicklungsumgebung vor.

    Einrichtungsleitfaden für .NET aufrufen

Funktion erstellen

In diesem Abschnitt wird beschrieben, wie Sie eine .NET-Funktion manuell erstellen. Alternativ können Sie die Functions Framework-Vorlagen verwenden, um die Funktion zu erstellen.

So erstellen Sie eine Funktion:

  1. Erstellen Sie in Ihrem lokalen System ein Verzeichnis für den Funktionscode:

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    

    Linux oder MacOS X

    mkdir ~/helloworld
    cd ~/helloworld
    
  2. Erstellen Sie eine Function.cs-Datei im Verzeichnis helloworld mit folgendem Inhalt:

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld;
    
    public class Function : IHttpFunction
    {
        public async Task HandleAsync(HttpContext context)
        {
            await context.Response.WriteAsync("Hello World!");
        }
    }

Abhängigkeiten angeben

Cloud Functions-Funktionen benötigen eine Reihe von Bibliotheken, die als Functions-Framework bezeichnet werden. Führen Sie die folgenden Schritte aus, um das Functions-Framework für Ihren Build verfügbar zu machen:

  1. Wechseln Sie in das Verzeichnis helloworld, das Sie gerade erstellt haben:

     cd ~/helloworld
    
  2. Erstellen Sie eine HelloWorld.csproj-Datei im Verzeichnis helloworld mit folgendem Inhalt:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.1.0" />
      </ItemGroup>
    </Project>

Weitere Informationen zum Bereitstellen anderer Bibliotheken für Ihren Build, entweder über Projektdateien oder innerhalb des Codes durch Abhängigkeitsinjektion, finden Sie unter Anpassung über Functions-Startklassen.

Funktion lokal erstellen und testen

  1. Erstellen Sie die Funktion und führen Sie sie mit dem folgenden Befehl lokal aus:

    dotnet run
    
  2. Testen Sie die Funktion. Rufen Sie dazu http://localhost:8080 in einem Browser auf oder führen Sie curl localhost:8080 in einem anderen Fenster aus. Wenn Sie Cloud Shell verwenden, klicken Sie auf das Symbol Schaltfläche für Webvorschau und wählen Sie Vorschau auf Port 8080 aus, um die Funktionsausgabe aufzurufen.

    Weitere Informationen finden Sie unter Anfragen an lokale Funktionen senden.

Funktion bereitstellen

Führen Sie den Befehl im Verzeichnis helloworld aus, um die Funktion bereitzustellen:

  gcloud functions deploy csharp-http-function \
    --gen2 \
    --entry-point=HelloWorld.Function \
    --runtime=dotnet6 \
    --region=REGION \
    --source=. \
    --trigger-http \
    --allow-unauthenticated

Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitstellen möchten (z. B. us-west1).

csharp-http-function ist der registrierte Name, mit dem die Funktion in der Google Cloud Console identifiziert wird. --entry-point gibt den vollständig qualifizierten Klassennamen (FQN) der Funktion an.

Mit dem optionalen Flag --allow-unauthenticated können Sie die Funktion ohne Authentifizierung aufrufen.

Bereitgestellte Funktion testen

  1. Beachten Sie nach dem Bereitstellen der Funktion das Attribut uri in der Ausgabe des Befehls gcloud functions deploy oder rufen Sie es mit dem folgenden Befehl ab:

    gcloud functions describe csharp-http-function \
      --region=REGION
    

    Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1).

  2. Testen Sie die Funktion. Rufen Sie dazu http://localhost:8080 in einem Browser auf oder führen Sie curl localhost:8080 in einem anderen Fenster aus.

    Weitere Informationen finden Sie unter Anfragen an lokale Funktionen senden.

Logs der Funktion ansehen

Logs mit dem Befehlszeilentool ansehen

Sie können die Logs Ihrer Funktion über die Cloud Logging-UI oder die Google Cloud CLI prüfen.

Wenn Sie mit der gcloud CLI Logs für Ihre Funktion aufrufen möchten, verwenden Sie den Befehl logs read:

  gcloud functions logs read \
    --gen2 \
    --limit=10 \
    --region=REGION \
    csharp-http-function

Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1).

Die Ausgabe sollte so aussehen:

LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.221
LOG: Request finished HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - - - 404 0 - 0.9393ms

LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.220
LOG: Request starting HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - -

Logs mit dem Logging-Dashboard ansehen

Um die Logs für Ihre Funktion mit dem Logging-Dashboard aufzurufen, öffnen Sie die Cloud Functions-Übersichtsseite. Klicken Sie in der Liste auf den Namen Ihrer Funktion und dann auf den Tab Logs.

Funktion mit dem Vorlagenpaket erstellen

Diese Anleitung hat Ihnen beim Erstellen einer einfachen Funktion geholfen. In der Praxis bevorzugen Sie die Verwendung der Functions Framework-Vorlagen zum Erstellen Ihrer Funktionen.

So erstellen und testen Sie eine Funktion mithilfe von Functions Framework-Vorlagen:

  1. Installieren Sie das .NET SDK. Wenn Sie Cloud Shell verwenden, können Sie diesen Schritt überspringen.

  2. Installieren Sie das Vorlagenpaket:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Erstellen Sie ein Verzeichnis für Ihr Projekt und eine leere HTTP-Funktion:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Dadurch werden HelloFunctions.csproj und Function.cs im aktuellen Verzeichnis erstellt. Öffnen Sie Function.cs, um den Code zu prüfen, und geben Sie bei Bedarf eine benutzerdefinierte Nachricht ein.

  4. Folgen Sie optional der vorherigen Anleitung zum lokalen Erstellen und Testen Ihrer Funktion.

  5. Führen Sie den folgenden gcloud deploy-Befehl aus, um die Funktion bereitzustellen:

    gcloud functions deploy HelloFunctions.Function \
      --gen2 \
      --entry-point=HelloWorld.Function \
      --runtime=dotnet6 \
      --region=REGION \
      --source=. \
      --trigger-http \
      --allow-unauthenticated
    

    Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1).

Weitere Informationen zum Functions-Framework finden Sie in der Dokumentation zum Functions-Framework.