In dieser Anleitung erfahren Sie, wie Sie einen Übersetzungsworkflow erstellen, der auf Sie – den Human in the Loop – und Ihre Eingabe wartet, und der eine Firestore-Datenbank, zwei Cloud Run-Funktionen, die Cloud Translation API und eine Webseite verbindet, die das Firebase SDK nutzt, um in Echtzeit eine Aktualisierung durchzuführen.
Mit Workflows können Sie einen Callback-Endpunkt (oder Webhook) unterstützen, der darauf wartet, dass HTTP-Anfragen an diesem Endpunkt ankommen, und die Ausführung des Workflows zu einem späteren Zeitpunkt fortsetzt. In diesem Fall wartet der Workflow auf die Ablehnung oder Validierung der Übersetzung eines Textes, aber es könnte auch ein externer Prozess sein. Weitere Informationen finden Sie unter Mit Callbacks warten.
Architektur
In dieser Anleitung wird eine Webanwendung erstellt, die Folgendes ermöglicht:
- Geben Sie auf der Übersetzungswebseite den Text ein, der vom Englischen ins Französische übersetzt werden soll. Klicken Sie auf Übersetzen.
- Über die Webseite wird eine Cloud Run-Funktion aufgerufen, die die Ausführung des Workflows startet. Der zu übersetzende Text wird als Parameter sowohl an die Funktion als auch an den Workflow übergeben.
- Der Text wird in einer Cloud Firestore-Datenbank gespeichert. Die Cloud Translation API wird aufgerufen. Die zurückgegebene Übersetzung wird in der Datenbank gespeichert. Die Webanwendung wird mit Firebase Hosting bereitgestellt und in Echtzeit aktualisiert, um den übersetzten Text anzuzeigen.
- Im Schritt
create_callback
des Workflows wird eine Callback-Endpunkt-URL erstellt, die auch in der Firestore-Datenbank gespeichert wird. Auf der Webseite werden jetzt sowohl die Schaltfläche Validieren als auch Ablehnen angezeigt. - Der Workflow wird jetzt pausiert und wartet auf eine explizite HTTP-POST-Anfrage an die URL des Callback-Endpunkts.
- Sie können entscheiden, ob Sie die Übersetzung validieren oder ablehnen möchten. Wenn Sie auf eine Schaltfläche klicken, wird eine zweite Cloud Run-Funktion aufgerufen, die wiederum den vom Workflow erstellten Callback-Endpunkt aufruft und den Genehmigungsstatus übergibt.
Der Workflow wird fortgesetzt und der Genehmigungsstatus
true
oderfalse
wird in der Firestore-Datenbank gespeichert.
Dieses Diagramm bietet eine Übersicht über den Prozess:
Ziele
- Webanwendung bereitstellen
- Firestore-Datenbank zum Speichern von Übersetzungsanfragen erstellen
- Cloud Run-Funktionen zum Ausführen des Workflows bereitstellen
- Workflow zur Orchestrierung des gesamten Prozesses bereitstellen und ausführen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Vorbereitung
Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud-Umgebung entwickeln.
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the App Engine, Cloud Build, Cloud Run functions, Firestore, Translation, and Workflows APIs:
gcloud services enable appengine.googleapis.com
cloudbuild.googleapis.com cloudfunctions.googleapis.com firestore.googleapis.com translate.googleapis.com workflows.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the App Engine, Cloud Build, Cloud Run functions, Firestore, Translation, and Workflows APIs:
gcloud services enable appengine.googleapis.com
cloudbuild.googleapis.com cloudfunctions.googleapis.com firestore.googleapis.com translate.googleapis.com workflows.googleapis.com - Aktualisieren Sie die Google Cloud CLI-Komponenten:
gcloud components update
- Melden Sie sich mit Ihrem -Konto an:
gcloud auth login
- Legen Sie die Projekt-ID und den Standardspeicherort fest, die in dieser Anleitung verwendet werden:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID export REGION=REGION gcloud config set workflows/location ${REGION}
Ersetzen Sie Folgendes:
PROJECT_ID
ist Ihre Google Cloud-Projekt-ID. Sie finden Ihre Projekt-ID auf der Willkommensseite der Google Cloud Console.REGION
: den unterstützten Workflows-Speicherort Ihrer Wahl.
Erste Cloud Run-Funktion bereitstellen
Diese Cloud Run-Funktion startet die Ausführung des Workflows. Der zu übersetzende Text wird als Parameter sowohl an die Funktion als auch an den Workflow übergeben.
Erstellen Sie ein Verzeichnis namens
callback-translation
mit den UnterverzeichnisseninvokeTranslationWorkflow
,translationCallbackCall
undpublic
:mkdir -p ~/callback-translation/{invokeTranslationWorkflow,translationCallbackCall,public}
Wechseln Sie in das Verzeichnis
invokeTranslationWorkflow
:cd ~/callback-translation/invokeTranslationWorkflow
Erstellen Sie eine Textdatei mit dem Dateinamen
index.js
, die den folgenden Node.js-Code enthält:Erstellen Sie eine Textdatei mit dem Dateinamen
package.json
, die die folgendennpm
-Metadaten enthält:Stellen Sie die Funktion mit einem HTTP-Trigger bereit und lassen Sie nicht authentifizierten Zugriff zu:
gcloud functions deploy invokeTranslationWorkflow \ --region=${REGION} \ --runtime nodejs14 \ --entry-point=invokeTranslationWorkflow \ --set-env-vars PROJECT_ID=${GOOGLE_CLOUD_PROJECT},CLOUD_REGION=${REGION},WORKFLOW_NAME=translation_validation \ --trigger-http \ --allow-unauthenticated
Die Bereitstellung der Funktion kann einige Minuten dauern. Alternativ können Sie die Funktion über die Cloud Run Functions-Oberfläche in der Google Cloud Console bereitstellen.
Nachdem die Funktion bereitgestellt wurde, können Sie das Attribut
httpsTrigger.url
bestätigen:gcloud functions describe invokeTranslationWorkflow
Notieren Sie sich die zurückgegebene URL, damit Sie sie in einem späteren Schritt verwenden können.
Zweite Cloud Run-Funktion bereitstellen
Diese Cloud Run-Funktion stellt eine HTTP-POST-Anfrage an den vom Workflow erstellten Callback-Endpunkt und übergibt einen Genehmigungsstatus, der angibt, ob die Übersetzung validiert oder abgelehnt wurde.
Wechseln Sie in das Verzeichnis
translationCallbackCall
:cd ../translationCallbackCall
Erstellen Sie eine Textdatei mit dem Dateinamen
index.js
, die den folgenden Node.js-Code enthält:Erstellen Sie eine Textdatei mit dem Dateinamen
package.json
, die die folgendennpm
-Metadaten enthält:Stellen Sie die Funktion mit einem HTTP-Trigger bereit und lassen Sie nicht authentifizierten Zugriff zu:
gcloud functions deploy translationCallbackCall \ --region=${REGION} \ --runtime nodejs14 \ --entry-point=translationCallbackCall \ --trigger-http \ --allow-unauthenticated
Die Bereitstellung der Funktion kann einige Minuten dauern. Alternativ können Sie die Funktion über die Cloud Run Functions-Oberfläche in der Google Cloud Console bereitstellen.
Nachdem die Funktion bereitgestellt wurde, können Sie das Attribut
httpsTrigger.url
bestätigen:gcloud functions describe translationCallbackCall
Notieren Sie sich die zurückgegebene URL, damit Sie sie in einem späteren Schritt verwenden können.
Workflow bereitstellen
Ein Workflow besteht aus einer Reihe von Schritten, die mit der Workflows-Syntax beschrieben werden. Diese kann entweder im YAML- oder JSON-Format geschrieben werden. Dies ist die Definition des Workflows. Nachdem Sie einen Workflow erstellt haben, stellen Sie ihn bereit, um ihn für die Ausführung verfügbar zu machen.
Wechseln Sie in das Verzeichnis
callback-translation
:cd ..
Erstellen Sie eine Textdatei mit dem Dateinamen
translation-validation.yaml
und folgendem Inhalt:Nachdem Sie den Workflow erstellt haben, können Sie ihn bereitstellen, aber nicht den Workflow ausführen:
gcloud workflows deploy translation_validation --source=translation-validation.yaml
Webanwendung erstellen
Erstellen Sie eine Webanwendung, die eine Cloud Functions-Funktion aufruft, die die Ausführung des Workflows startet. Die Webseite wird in Echtzeit aktualisiert, um das Ergebnis der Übersetzungsanfrage anzuzeigen.
Wechseln Sie in das Verzeichnis
public
:cd public
Erstellen Sie eine Textdatei mit dem Dateinamen
index.html
, die das folgende HTML-Markup enthält. In einem späteren Schritt ändern Sie die Dateiindex.html
und fügen die Firebase SDK-Skripts hinzu.Erstellen Sie eine Textdatei mit dem Dateinamen
script.js
, die den folgenden JavaScript-Code enthält:Bearbeiten Sie die Datei
script.js
und ersetzen Sie die PlatzhalterUPDATE_ME
durch die zuvor notierten Cloud Run-Funktions-URLs.Ersetzen Sie in der Methode
translateBtn.addEventListener
const fnUrl = UPDATE_ME;
durch:
const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/invokeTranslationWorkflow";
Ersetzen Sie in der Funktion
callCallbackUrl
const fnUrl = UPDATE_ME;
durch:
const fnUrl = "https://REGION-PROJECT_ID.cloudfunctions.net/translationCallbackCall";
Erstellen Sie eine Textdatei mit dem Dateinamen
style.css
, die die folgenden kaskadierenden Stile enthält:
Firebase zu meiner Web-App hinzufügen
In dieser Anleitung werden die HTML-Seite, das JavaScript-Script und das CSS-Stylesheet mit Firebase Hosting als statische Assets bereitgestellt. Sie können aber auch an anderer Stelle gehostet und zu Testzwecken lokal auf Ihrem eigenen Computer bereitgestellt werden.
Firebase-Projekt erstellen
Bevor Sie Firebase zu Ihrer Anwendung hinzufügen können, müssen Sie ein Firebase-Projekt erstellen, um eine Verbindung zu Ihrer Anwendung herzustellen.
-
Klicken Sie in der Firebase Console auf Projekt erstellen und wählen Sie Ihr vorhandenes Google Cloud-Projekt aus dem Drop-down-Menü aus, um Firebase-Ressourcen zu diesem Projekt hinzuzufügen.
-
Klicken Sie auf Weiter, bis Sie die Option zum Hinzufügen von Firebase sehen.
-
Überspringen Sie die Einrichtung von Google Analytics für Ihr Projekt.
-
Klicken Sie auf Firebase hinzufügen.
Firebase stellt automatisch Ressourcen für Ihr Firebase-Projekt bereit. Nach Abschluss des Vorgangs werden Sie zur Übersichtsseite für Ihr Projekt in der Firebase Console weitergeleitet.
App bei Firebase registrieren
Nachdem Sie ein Firebase-Projekt haben, können Sie Ihre Webanwendung hinzufügen.
Klicken Sie in der Mitte der Projektübersicht auf das Symbol Web (</>), um den Einrichtungsworkflow zu starten.
Geben Sie einen Alias für die Anwendung ein.
Dieser ist nur in der Firebase Console sichtbar.
Überspringen Sie die Einrichtung von Firebase Hosting.
Klicken Sie auf App registrieren und fahren Sie mit der Konsole fort.
Cloud Firestore aktivieren
Die Webanwendung verwendet Cloud Firestore, um Daten zu empfangen und zu speichern. Sie müssen Cloud Firestore aktivieren.
Klicken Sie im Abschnitt Build in der Firebase Console auf Firestore-Datenbank.
Möglicherweise müssen Sie zuerst den linken Navigationsbereich erweitern, um den Abschnitt Build einzublenden.
Klicken Sie im Cloud Firestore-Bereich auf Datenbank erstellen.
Wählen Sie Im Testmodus starten mit einer Sicherheitsregel wie der folgenden aus:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write; } } }
Klicken Sie auf Weiter, nachdem Sie den Haftungsausschluss zu den Sicherheitsregeln gelesen haben.
Legen Sie den Speicherort für Cloud Firestore-Daten fest. Sie können die Standardeinstellung übernehmen oder eine Region in Ihrer Nähe auswählen.
Klicken Sie auf Aktivieren, um Firestore bereitzustellen.
Firebase SDK hinzufügen und Firebase initialisieren
Firebase stellt JavaScript-Bibliotheken für die meisten Firebase-Produkte bereit. Bevor Sie Firebase Hosting verwenden, müssen Sie die Firebase SDKs Ihrer Webanwendung hinzufügen.
- Zum Initialisieren von Firebase in Ihrer Anwendung müssen Sie die Firebase-Projektkonfiguration Ihrer Anwendung angeben.
- Rufen Sie in der Firebase Console die Projekteinstellungen auf.
- Wählen Sie im Bereich Meine Apps Ihre App aus.
- Wenn Sie Firebase SDK-Bibliotheken aus dem CDN laden möchten, wählen Sie im Bereich SDK-Einrichtung und -Konfiguration die Option CDN aus.
- Kopieren Sie das Snippet in die Datei
index.html
unter dem<body>
-Tag und ersetzen Sie die Platzhalterwerte fürXXXX
.
Installieren Sie das Firebase JavaScript SDK.
Wenn Sie noch keine
package.json
-Datei haben, erstellen Sie eine mit dem folgenden Befehl im Verzeichniscallback-translation
:npm init
Installieren Sie das npm-Paket
firebase
und speichern Sie es in derpackage.json
-Datei:npm install --save firebase
Projekt initialisieren und bereitstellen
Sie müssen Ihr Projekt initialisieren, um Ihre lokalen Projektdateien mit Ihrem Firebase-Projekt zu verbinden. Sie können dann Ihre Webanwendung bereitstellen.
Führen Sie im Verzeichnis
callback-translation
den folgenden Befehl aus:firebase init
Wählen Sie die Option
Configure files for Firebase Hosting and (optionally) set up GitHub Action deploys
aus.Verwenden Sie ein vorhandenes Projekt und geben Sie Ihre Projekt-ID ein.
Übernehmen Sie
public
als standardmäßiges öffentliches Stammverzeichnis.Konfigurieren Sie eine einseitige App.
Überspringen Sie die Einrichtung automatischer Builds und Bereitstellungen mit GitHub.
Geben Sie bei der Eingabeaufforderung
File public/index.html already exists. Overwrite?
Nein ein.Wechseln Sie in das Verzeichnis
public
:cd public
Führen Sie im Verzeichnis
public
den folgenden Befehl aus, um das Projekt auf Ihrer Website bereitzustellen:firebase deploy --only hosting
Webanwendung lokal testen
Mit Firebase Hosting können Sie Änderungen lokal ansehen und testen und mit emulierten Backend-Projektressourcen interagieren. Wenn Sie firebase serve
verwenden, interagiert Ihre Anwendung mit einem emulierten Backend für Ihre Hosting-Inhalte und Ihre Konfiguration, aber Ihr echtes Backend tut dies für alle anderen Projektressourcen. Für diese Anleitung können Sie firebase serve
verwenden. Dies wird jedoch nicht empfohlen, wenn Sie umfangreichere Tests durchführen.
Führen Sie im Verzeichnis
public
den folgenden Befehl aus:firebase serve
Öffnen Sie Ihre Webanwendung unter der zurückgegebenen lokalen URL (in der Regel
http://localhost:5000
).Geben Sie Text in Englisch ein und klicken Sie dann auf Übersetzen.
Eine Übersetzung des Textes auf Französisch sollte angezeigt werden.
Sie können jetzt auf Validieren oder Ablehnen klicken.
In der Firestore-Datenbank können Sie den Inhalt prüfen. Diese sollten in etwa so aussehen:
approved: true callback: "https://workflowexecutions.googleapis.com/v1/projects/26811016474/locations/us-central1/workflows/translation_validation/executions/68bfce75-5f62-445f-9cd5-eda23e6fa693/callbacks/72851c97-6bb2-45e3-9816-1e3dcc610662_1a16697f-6d90-478d-9736-33190bbe222b" text: "The quick brown fox jumps over the lazy dog." translation: "Le renard brun rapide saute par-dessus le chien paresseux."
Der Status
approved
lautettrue
oderfalse
, je nachdem, ob Sie die Übersetzung validieren oder ablehnen.
Das war's auch schon! Sie haben einen Human-in-the-Loop-Workflow erstellt, der Workflow-Callbacks verwendet.
Bereinigen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Anleitungsressourcen löschen
Entfernen Sie die gcloud CLI-Standardkonfiguration, die Sie während der Einrichtung der Anleitung hinzugefügt haben:
gcloud config unset workflows/location
Löschen Sie den in dieser Anleitung erstellten Workflow:
gcloud workflows delete WORKFLOW_NAME
Löschen Sie die Cloud Run-Funktionen, die Sie in dieser Anleitung erstellt haben:
gcloud functions delete FUNCTION_NAME
Sie können Cloud Run-Funktionen auch über die Google Cloud Console löschen.