HTTP-Cloud Run Functions-Funktion mit .NET (1. Generation) erstellen und bereitstellen

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

  • Eine durch HTTP ausgelöste Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
  • Eine durch ein Ereignis ausgelöste Funktion, mit der Sie Ereignisse aus Ihrer Cloud-Infrastruktur verarbeiten können, z. B. Nachrichten in einem Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  8. Installieren und initialisieren Sie die gcloud CLI.
  9. Aktualisieren und installieren Sie gcloud-Komponenten:
    gcloud components update
  10. Bereiten Sie die Entwicklungsumgebung vor.

    Einrichtungsleitfaden für .NET aufrufen

Funktion erstellen

In diesem Abschnitt wird beschrieben, wie Sie eine neue Funktion manuell erstellen. Alternativ können Sie die Vorlagen verwenden, die vom Vorlagenpaket bereitgestellt werden.

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 Datei mit dem Namen Function.cs und 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!", context.RequestAborted);
        }
    }

    Diese Beispielfunktion gibt die Begrüßung „Hello World!“ aus.

Abhängigkeiten angeben

Im nächsten Schritt werden die Abhängigkeiten eingerichtet: In C# Cloud Run-Funktionen können Sie zwei verschiedene Arten von Abhängigkeiten einrichten:

  • Das Functions Framework zur Verfügung stellen. Das ist die Aufgabe, die Sie in diesem Abschnitt ausführen.
  • Andere Bibliotheken in Form von Projektdateien und innerhalb des Codes durch Abhängigkeitsinjektion zur Verfügung stellen. Weitere Informationen finden Sie unter Anpassung über Functions-Startklassen.

Damit Sie das Functions Framework zur Verfügung stellen können, wechseln Sie zum Verzeichnis helloworld, das Sie oben erstellt haben:

     cd ~/helloworld

Erstellen Sie dann eine Datei mit dem Namen HelloWorld.csproj und 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.2.1" />
  </ItemGroup>
</Project>

Funktion implementieren

Führen Sie den folgenden Befehl im Verzeichnis helloworld aus, um die Funktion mit einem HTTP-Trigger bereitzustellen:

gcloud functions deploy --no-gen2 my-first-function --entry-point HelloWorld.Function --runtime dotnet8 --trigger-http --allow-unauthenticated

Dabei ist my-first-function der registrierte Name, mit dem die Funktion in der Google Cloud Console identifiziert wird, und --entry-point der vollständig qualifizierter Klassennamen (FQN) der Funktion.

So testen Sie die bereitgestellte Funktion

  1. Notieren Sie sich nach der Bereitstellung der Funktion das Attribut von httpsTrigger.url oder suchen Sie es mit diesem Befehl:

    gcloud functions describe my-first-function
    

    Dies sollte so aussehen:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
  2. Rufen Sie diese URL in Ihrem Browser auf: Die Meldung Hello World! sollte angezeigt werden.

Logs ansehen

Logs für Cloud Run Functions-Funktionen können über die Google Cloud CLI und in der Cloud Logging-UI aufgerufen werden.

Befehlszeilentool verwenden

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

gcloud functions logs read my-first-function

Die Ausgabe sollte in etwa so aussehen:

LEVEL  NAME               EXECUTION_ID  TIME_UTC                 LOG
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.791  Function execution started
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.958  Function execution took 168 ms, finished with status code: 200
...

Logging-Dashboard verwenden

Sie können Logs für Cloud Run Functions-Funktionen auch über die Google Cloud Console aufrufen.

Vorlagenpaket verwenden

In den obigen Abschnitten erfahren Sie, wie Sie manuell eine Funktion erstellen. In Zukunft verwenden Sie Vorlagen, um neue Funktionen zu erstellen.

So erstellen und testen Sie eine Funktion mithilfe der Vorlagen:

  1. Installieren Sie das .NET SDK.

  2. Installieren Sie das Vorlagenpaket:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Erstellen Sie dann ein Verzeichnis für Ihr Projekt und verwenden Sie dotnet new, um eine neue HTTP-Funktion zu erstellen:

    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. So erstellen Sie die Funktion lokal:

    dotnet run
    
  5. Sobald der Server ausgeführt wird, wechseln Sie zu http://localhost:8080, um die Funktion aufzurufen. Drücken Sie in der Konsole „Strg + C“, um den Server anzuhalten.

    Diese Funktion zeigt die Nachricht „Hello Functions Framework“ an.

Alternativ können Sie Anfragen mit curl von einem anderen Terminalfenster aus an diese Funktion senden:

curl localhost:8080
# Output: Hello Functions Framework