In dieser Anleitung erfahren Sie, wie Sie einen Cloud Run-Dienst über ein Pub/Sub-Push-Abo schreiben, bereitstellen und aufrufen.
gcloud-Standardeinstellungen einrichten
So konfigurieren Sie gcloud mit Standardeinstellungen für den Cloud Run-Dienst:
- Legen Sie ein Standardprojekt fest: - gcloud config set project PROJECT_ID - Ersetzen Sie PROJECT_ID durch den Namen des Projekts, das Sie für diese Anleitung erstellt haben. 
- Konfigurieren Sie gcloud für die von Ihnen ausgewählte Region: - gcloud config set run/region REGION - Ersetzen Sie REGION durch die unterstützte Cloud Run-Region Ihrer Wahl. 
Cloud Run-Standorte
Cloud Run ist regional. Die Infrastruktur, in der die Cloud Run-Dienste ausgeführt werden, befindet sich demnach in einer bestimmten Region. Aufgrund der Verwaltung durch Google sind die Anwendungen in allen Zonen innerhalb dieser Region redundant verfügbar.
Bei der Auswahl der Region, in der Ihre Cloud Run-Dienste ausgeführt werden, ist vorrangig, dass die Anforderungen hinsichtlich Latenz, Verfügbarkeit oder Langlebigkeit erfüllt werden.
Sie können im Allgemeinen die Region auswählen, die Ihren Nutzern am nächsten ist. Sie sollten dabei jedoch auch den Standort der anderen Google Cloud-Produkte berücksichtigen, die der Cloud Run-Dienst verwendet.
Die gemeinsame Nutzung von Google Cloud Produkten an mehreren Standorten kann sich auf die Latenz und die Kosten des Dienstes auswirken.
Cloud Run ist in diesen Regionen verfügbar:
Unterliegt Preisstufe 1
- asia-east1(Taiwan)
- asia-northeast1(Tokio)
- asia-northeast2(Osaka)
- asia-south1(Mumbai, Indien)
- europe-north1(Finnland)- Niedriger CO2-Wert 
- europe-north2(Stockholm)- Niedriger CO2-Ausstoß 
- europe-southwest1(Madrid)- Niedriger CO2-Ausstoß 
- europe-west1(Belgien)- Niedriger CO2-Ausstoß 
- europe-west4(Niederlande)- Niedriger CO2-Ausstoß 
- europe-west8(Mailand)
- europe-west9(Paris)- Niedriger CO2-Ausstoß 
- me-west1(Tel Aviv)
- northamerica-south1(Mexiko)
- us-central1(Iowa)- Niedriger CO2-Ausstoß 
- us-east1(South Carolina)
- us-east4(Northern Virginia)
- us-east5(Columbus)
- us-south1(Dallas)- Niedriger CO2-Ausstoß 
- us-west1(Oregon)- Niedriger CO2-Ausstoß 
Unterliegt Preisstufe 2
- africa-south1(Johannesburg)
- asia-east2(Hongkong)
- asia-northeast3(Seoul, Südkorea)
- asia-southeast1(Singapur)
- asia-southeast2(Jakarta)
- asia-south2(Delhi, Indien)
- australia-southeast1(Sydney)
- australia-southeast2(Melbourne)
- europe-central2(Warschau, Polen)
- europe-west10(Berlin)
- europe-west12(Turin)
- europe-west2(London, Vereinigtes Königreich)- Niedriger CO2-Ausstoß 
- europe-west3(Frankfurt, Deutschland)
- europe-west6(Zürich, Schweiz)- Niedriger CO2-Ausstoß 
- me-central1(Doha)
- me-central2(Dammam)
- northamerica-northeast1(Montreal)- Niedriger CO2-Ausstoß 
- northamerica-northeast2(Toronto)- Niedriger CO2-Ausstoß 
- southamerica-east1(Sao Paulo, Brasilien)- Niedriger CO2-Ausstoß 
- southamerica-west1(Santiago, Chile)- Niedriger CO2-Ausstoß 
- us-west2(Los Angeles)
- us-west3(Salt Lake City)
- us-west4(Las Vegas)
Wenn Sie bereits einen Cloud Run-Dienst erstellt haben, können Sie dessen Region im Cloud Run-Dashboard der Google Cloud Console aufrufen.
Artifact Registry-Standard-Repository erstellen
Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Docker-Container-Images:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Ersetzen Sie:
- REPOSITORY durch einen eindeutigen Namen für das Repository.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
Pub/Sub-Thema erstellen
Der Beispieldienst wird durch Nachrichten ausgelöst, die in einem Pub/Sub-Thema veröffentlicht werden. Daher müssen Sie in Pub/Sub ein Thema erstellen.
gcloud
Verwenden Sie den folgenden Befehl, um ein neues Pub/Sub-Thema zu erstellen:
gcloud pubsub topics create myRunTopic
Sie können myRunTopic verwenden oder durch einen Themennamen ersetzen, der in Ihrem Google Cloud -Projekt eindeutig ist.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie Ihrer vorhandenen main.tf-Datei Folgendes hinzu, um ein Pub/Sub-Thema zu erstellen:
Sie können einen Themennamen verwenden, der in Ihrem Cloud-Projekt eindeutig ist.
Codebeispiel abrufen
So rufen Sie das gewünschte Codebeispiel ab:
- Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer: - Node.js- git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git - Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren. - Python- git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git - Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren. - Go- git clone https://github.com/GoogleCloudPlatform/golang-samples.git - Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren. - Java- git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git - Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren. - C#- git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git - Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren. 
- Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält: - Node.js- cd nodejs-docs-samples/run/pubsub/ - Python- cd python-docs-samples/run/pubsub/ - Go- cd golang-samples/run/pubsub/ - Java- cd java-docs-samples/run/pubsub/ - C#- cd dotnet-docs-samples/run/Run.Samples.Pubsub.MinimalApi/ 
Code ansehen
Der Code dieser Anleitung besteht aus folgenden Elementen:
- Einem Server, der eingehende Anfragen verarbeitet. - Node.js- Für einen einfacheren Test des Dienstes Node.js ist die Serverkonfiguration vom Serverstart getrennt. - Der Node.js-Webserver wird in - app.jseingerichtet.- Der Webserver wird in - index.jsgestartet:- Python- Go- Java- C#
- Ein Handler, der die Pub/Sub-Nachricht verarbeitet und ein Greeting protokolliert. - Node.js- Python- Go- Java- C#- Sie müssen den Dienst so programmieren, dass ein genauer HTTP-Antwortcode zurückgegeben wird. Erfolgscodes wie HTTP - 200oder- 204bestätigen die vollständige Verarbeitung der Pub/Sub-Nachricht. Fehlercodes wie HTTP- 400oder- 500zeigen an, dass der Versand der Nachricht noch einmal versucht wird. Weitere Informationen finden Sie unter Nachrichten mit Push empfangen.
- Einem - Dockerfile, das die Betriebsumgebung für den Dienst definiert. Der Inhalt des- Dockerfilevariiert je nach Sprache.- Node.js- Python- Go- Java- In diesem Beispiel wird Jib verwendet, um Docker-Images mit gängigen Java-Tools zu erstellen. Jib optimiert Container-Builds, ohne dass ein Dockerfile erforderlich ist oder Docker installiert sein muss. Weitere Informationen zum Erstellen von Java-Containern mit Jib - C#
Weitere Informationen dazu, wie Sie den Ursprung von Pub/Sub-Anfragen authentifizieren können, finden Sie unter Mit Pub/Sub integrieren.
Code versenden
Das Versenden von Code erfolgt in drei Schritten: ein Container-Image mit Cloud Build erstellen, in Artifact Registry hochladen und in Cloud Run bereitstellen.
So versenden Sie den Code:
- 
      Erstellen Sie einen Container und veröffentlichen Sie ihn in Artifact Registry. Node.jsgcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Name des Bildes.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden. Pythongcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Name des Bildes.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden. Gogcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Name des Bildes.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden. Java- Verwenden Sie den gcloud CLI Credential Helper, um Docker für das Übertragen per Push in Ihre Artifact Registry zu autorisieren.gcloud auth configure-docker 
- 
               
               Verwenden Sie das Jib-Maven-Plug-in, um den Container zu erstellen und per Push in Artifact Registry zu übertragen.
               
               mvn compile jib:build -D image=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Name des Bildes.Bei Erfolg sollte die Nachricht „BUILD SUCCESS“ angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden. 
 C#gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Name des Bildes.Bei Erfolg sollte eine Bestätigungsmeldung mit der ID, der Erstellungszeit und dem Image-Namen angezeigt werden. Das Image wird in Artifact Registry gespeichert und kann bei Bedarf wiederverwendet werden. 
- 
      Stellen Sie Ihre Anwendung bereit: Befehlszeile- 
                  Stellen Sie die Anwendung mit dem folgenden Befehl bereit: gcloud run deploy pubsub-tutorial --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub --no-allow-unauthenticated - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- REPOSITORY durch den Namen des Artifact Registry-Repositorys.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 pubsubist der Image-Name undpubsub-tutorialder Name des Dienstes. Beachten Sie, dass das Container-Image für den Dienst und die Region bereitgestellt wird, die Sie zuvor unter gcloud einrichten konfiguriert haben.Das Flag --no-allow-unauthenticatedbeschränkt den nicht authentifizierten Zugriff auf den Dienst. Wenn Sie den Dienst privat nutzen, können Sie sich bei der Authentifizierung von Anfragen auf die automatische Pub/Sub-Integration von Cloud Run verlassen. Weitere Informationen zur Konfiguration finden Sie unter In Pub/Sub integrieren. Weitere Informationen zur Authentifizierung auf Grundlage des Identity and Access Management (IAM) finden Sie unter Zugriff mit IAM verwalten.Warten Sie, bis die Bereitstellung abgeschlossen ist. Dies kann ungefähr eine halbe Minute dauern. Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt. Diese URL wird zum Konfigurieren eines Pub/Sub-Abos verwendet. 
- 
                  Wenn Sie eine Codeaktualisierung für den Dienst bereitstellen möchten, wiederholen Sie die vorherigen Schritte. Bei jeder Bereitstellung für einen Dienst wird eine neue Version erstellt und der Traffic wird automatisch verarbeitet, sobald der Dienst bereit ist. 
 TerraformFügen Sie Ihrer vorhandenen .tf-Datei Folgendes hinzu, um einen Cloud Run-Dienst zu erstellen:resource "google_project_service" "cloudrun_api" { service = "run.googleapis.com" disable_on_destroy = false } resource "google_cloud_run_v2_service" "default" { name = "pubsub-tutorial" location = "REGION" template { containers { image = "IMAGE_URL" } } depends_on = [google_project_service.cloudrun_api] } -  Ersetzen Sie IMAGE_URL durch Ihre Bild-URL: REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/pubsub.
- REGION durch die Google Cloud Region, die für das Artifact Registry-Repository verwendet werden soll.
 
- 
                  
In Pub/Sub integrieren
So integrieren Sie den Dienst in Pub/Sub:
gcloud
- Erstellen oder wählen Sie ein Dienstkonto, das die Pub/Sub-Abo-Identität darstellen soll. - gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker" - Sie können - cloud-run-pubsub-invokerverwenden oder durch einen Namen ersetzen, der in Ihrem Google Cloud -Projekt eindeutig ist.
- Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto: - Gewähren Sie dem Aufrufer-Dienstkonto die Berechtigung zum Aufrufen Ihres - pubsub-tutorial-Dienstes:- gcloud run services add-iam-policy-binding pubsub-tutorial \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker - Es kann einige Minuten dauern, bis die IAM-Änderungen übertragen werden. In der Zwischenzeit werden möglicherweise - HTTP 403-Fehler in den Dienstlogs angezeigt.
- Erlauben Sie Pub/Sub, Authentifizierungstokens in Ihrem Projekt zu erstellen: - gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator - Ersetzen Sie: - PROJECT_ID durch Ihre Google Cloud Projekt-ID.
- PROJECT_NUMBER durch Ihre Google Cloud Projektnummer.
 - Die Projekt-ID und die Projektnummer werden im Bereich Projektinformationen in der Google Cloud Console für Ihr Projekt aufgeführt. 
- Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto: - gcloud pubsub subscriptions create myRunSubscription --topic myRunTopic \ --ack-deadline=600 \ --push-endpoint=SERVICE-URL/ \ --push-auth-service-account=cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com - Ersetzen Sie: - myRunTopic durch das zuvor erstellte Thema.
- SERVICE-URL durch die HTTPS-URL, die bei der Bereitstellung des Dienstes angegeben wurde. Diese URL funktioniert sogar dann, wenn Sie auch eine Domainzuordnung hinzugefügt haben.
- PROJECT_ID durch Ihre Google Cloud Projekt-ID.
 - Das Flag - --push-auth-service-accountaktiviert die Pub/Sub-Push-Funktion für die Authentifizierung und Autorisierung.- Ihre Cloud Run-Dienstdomain wird automatisch für die Verwendung mit Pub/Sub-Abos registriert. - Nur für Cloud Run gibt es eine integrierte Authentifizierungsprüfung, die das Token auf seine Gültigkeit untersucht, und eine Autorisierungsprüfung, mit der festgestellt wird, ob das Dienstkonto berechtigt ist, den Cloud Run-Dienst aufzurufen. 
 
Ihr Dienst ist jetzt vollständig in Pub/Sub integriert.
Terraform
- Erstellen oder wählen Sie ein Dienstkonto, das die Pub/Sub-Abo-Identität darstellen soll. 
- Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto: - Gewähren Sie dem Aufrufer-Dienstkonto die Berechtigung zum Aufrufen Ihres - pubsub-tutorial-Dienstes:
- Erlauben Sie Pub/Sub, Authentifizierungstokens in Ihrem Projekt zu erstellen: 
- Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto: 
 
Ihr Dienst ist jetzt vollständig in Pub/Sub integriert.
Testen
So testen Sie die durchgängige Lösung:
- Senden Sie eine Pub/Sub-Nachricht an das Thema: - gcloud pubsub topics publish myRunTopic --message "Runner" - Anstatt über die in dieser Anleitung beschriebene Befehlszeile können Sie Nachrichten auch programmatisch veröffentlichen. Weitere Informationen finden Sie unter Nachrichten veröffentlichen. 
- Rufen Sie die Dienstlogs auf: - Rufen Sie die Google Cloud Console auf.
- Klicken Sie auf den Dienst pubsub-tutorial.
- Wählen Sie den Tab Logs aus. - Es kann einige Momente dauern, bis Logs angezeigt werden. Falls sie nicht sofort angezeigt werden, warten Sie kurz ab und sehen Sie dann noch einmal nach. 
 
- Suchen Sie nach der Nachricht „Hello Runner!“.