1. Übersicht
Diese Reihe von Codelabs (selbstgesteuerte, praktische Tutorials) soll Entwicklern helfen, die verschiedenen Optionen für die Bereitstellung ihrer Anwendungen zu verstehen. In diesem Codelab erfahren Sie, wie Sie die Google Cloud Translation API mit Python verwenden und entweder lokal ausführen oder auf einer serverlosen Compute-Plattform in der Cloud (App Engine, Cloud Functions oder Cloud Run) bereitstellen. Die Beispiel-App im Repository dieses Tutorials kann mit nur geringfügigen Konfigurationsänderungen auf mindestens acht verschiedene Arten bereitgestellt werden:
- Lokaler Flask-Server (Python 2)
- Lokaler Flask-Server (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Python 2 über Docker)
- Cloud Run (Python 3 über Docker)
- Cloud Run (Python 3 über Cloud Buildpacks)
In diesem Codelab geht es darum, diese App auf den oben fettgedruckten Plattformen bereitzustellen.
In diesem Kurs lernen Sie, wie Sie
- Google Cloud APIs verwenden, insbesondere die Cloud Translation API (Advanced/v3)
- Eine einfache Webanwendung lokal ausführen oder auf einer serverlosen Cloud-Rechenplattform bereitstellen
Voraussetzungen
- Ein Google Cloud-Projekt mit einem aktiven Cloud-Rechnungskonto
- Flask ist für die lokale Ausführung installiert oder eine serverlose Cloud-Computing-Plattform ist für cloudbasierte Bereitstellungen aktiviert.
- Grundlegende Python-Kenntnisse
- Grundkenntnisse der grundlegenden Betriebssystembefehle
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit Python bewerten?
Wie würden Sie Ihre Erfahrungen mit Google Cloud-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als
PROJECT_IDangegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Nachdem das Projekt erstellt wurde, wird es „eingefroren“. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
3. Translation API aktivieren
Cloud APIs aktivieren
In diesem Abschnitt erfahren Sie, wie Sie Google-APIs im Allgemeinen aktivieren. Für unsere Beispiel-App aktivieren Sie die Cloud Translation API, Cloud Run und Cloud Artifact Registry.
Einführung
Unabhängig davon, welche Google-API Sie in Ihrer Anwendung verwenden möchten, muss sie aktiviert sein. Im folgenden Beispiel sehen Sie zwei Möglichkeiten, die Cloud Vision API zu aktivieren. Wenn Sie wissen, wie Sie eine Cloud API aktivieren, können Sie auch andere APIs aktivieren, da der Vorgang ähnlich ist.
Option 1: Über Cloud Shell oder die Befehlszeile
Das Aktivieren von APIs über die Cloud Console ist zwar üblicher, aber einige Entwickler bevorzugen es, alles über die Befehlszeile zu erledigen. Dazu müssen Sie den „Dienstnamen“ einer API nachschlagen. Sie sieht aus wie eine URL: SERVICE_NAME.googleapis.com. Sie finden sie in der Tabelle mit unterstützten Produkten oder können sie programmatisch mit der Google Discovery API abfragen.
Mit diesen Informationen können Sie eine API in Cloud Shell (oder in Ihrer lokalen Entwicklungsumgebung mit dem gcloud-Befehlszeilentool) so aktivieren:
gcloud services enable SERVICE_NAME.googleapis.com
Mit diesem Befehl wird beispielsweise die Cloud Vision API aktiviert:
gcloud services enable vision.googleapis.com
Mit diesem Befehl wird App Engine aktiviert:
gcloud services enable appengine.googleapis.com
Sie können auch mehrere APIs mit einer Anfrage aktivieren. Mit dieser Befehlszeile werden beispielsweise Cloud Run, Cloud Artifact Registry und die Cloud Translation API aktiviert:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Option 2: Über die Cloud Console
Sie können die Vision API auch im API Manager aktivieren. Rufen Sie in der Cloud Console den API-Manager auf und wählen Sie Bibliothek aus.

Wenn Sie die Cloud Vision API aktivieren möchten, geben Sie „vision“ in die Suchleiste ein. Alles, was mit dem übereinstimmt, was Sie bisher eingegeben haben, wird angezeigt:

Wählen Sie die API aus, die Sie aktivieren möchten, und klicken Sie auf Aktivieren:

Kosten
Viele Google-APIs können kostenlos verwendet werden, die Nutzung von Google Cloud-Produkten und ‑APIs ist jedoch nicht kostenlos. Wenn Sie Cloud APIs aktivieren, werden Sie möglicherweise aufgefordert, ein aktives Rechnungskonto anzugeben. Es ist jedoch wichtig zu beachten, dass einige Google Cloud-Produkte ein kostenloses Kontingent (täglich/monatlich) haben, das Sie überschreiten müssen, damit Gebühren anfallen. Andernfalls wird Ihre Kreditkarte (oder das angegebene Abrechnungsinstrument) nicht belastet.
Nutzer sollten sich vor der Aktivierung die Preisinformationen für jede API ansehen und insbesondere darauf achten, ob es ein kostenloses Kontingent gibt und wie hoch dieses ist. Wenn Sie die Cloud Vision API aktivieren, sollten Sie die Preisinformationen aufrufen. Cloud Vision hat ein kostenloses Kontingent. Solange Sie die Limits insgesamt (innerhalb eines Monats) nicht überschreiten, sollten keine Gebühren anfallen.
Die Preise und kostenlosen Kontingente variieren je nach Google-API. Beispiele:
- Google Cloud/GCP: Die Abrechnung der einzelnen Produkte erfolgt unterschiedlich. In der Regel wird pro vCPU-Zyklus, Speicherverbrauch, Arbeitsspeichernutzung oder Pay-per-Use abgerechnet. Weitere Informationen finden Sie oben im Abschnitt zu kostenlosen Kontingenten.
- Google Maps – bietet eine Reihe von APIs und Nutzern ein kostenloses monatliches Guthaben von 200$.
- Google Workspace-APIs (ehemals G Suite): Die Nutzung ist kostenlos (bis zu bestimmten Limits), da sie durch eine monatliche Workspace-Abogebühr abgedeckt ist. Es erfolgt also keine direkte Abrechnung für die Nutzung der Gmail-, Google Drive-, Kalender-, Docs-, Sheets- und Präsentationen-APIs.
Die Abrechnung für verschiedene Google-Produkte erfolgt unterschiedlich. Weitere Informationen finden Sie in der Dokumentation Ihrer API.
Zusammenfassung
Nachdem Sie nun wissen, wie Sie Google-APIs im Allgemeinen aktivieren, rufen Sie den API Manager auf und aktivieren Sie die Cloud Translation API, Cloud Run und Cloud Artifact Registry (falls noch nicht geschehen). Sie aktivieren die erste Option, weil sie von unserer Anwendung verwendet wird. Sie aktivieren den letzteren Dienst, da dort unsere Container-Images gespeichert werden, bevor sie bereitgestellt werden, um Ihren Cloud Run-Dienst zu starten. Daher müssen Sie diesen Dienst aktivieren. Wenn Sie sie lieber alle mit dem gcloud-Tool aktivieren möchten, führen Sie stattdessen den folgenden Befehl über das Terminal aus:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Das monatliche Kontingent ist zwar nicht auf der Übersichtsseite für das „Always Free“-Kontingent aufgeführt, aber auf der Preisseite der Translation API wird angegeben, dass alle Nutzer monatlich eine bestimmte Anzahl von übersetzten Zeichen erhalten. Wenn Sie diesen Grenzwert nicht überschreiten, sollten keine Gebühren für die API anfallen. Andere Google Cloud-bezogene Gebühren werden am Ende im Abschnitt „Bereinigen“ behandelt.
4. Beispiel-App-Code abrufen
Klonen Sie den Code im Repository lokal oder in Cloud Shell (mit dem Befehl git clone) oder laden Sie die ZIP-Datei über die grüne Schaltfläche Code herunter, wie im folgenden Screenshot gezeigt:

Erstellen Sie nun eine vollständige Kopie des Ordners, um diese Anleitung durchzuarbeiten, da die Dateien wahrscheinlich gelöscht oder geändert werden müssen. Wenn Sie ein anderes Deployment durchführen möchten, können Sie von vorn beginnen, indem Sie das Original kopieren. So müssen Sie es nicht noch einmal klonen oder herunterladen.
5. Beispiel-App ansehen
Die Beispiel-App ist eine einfache Google Übersetzer-Variante, in der Nutzer aufgefordert werden, Text auf Englisch einzugeben, um die entsprechende Übersetzung ins Spanische zu erhalten. Öffnen Sie jetzt die Datei main.py, damit wir uns ansehen können, wie sie funktioniert. Wenn die auskommentierten Zeilen zur Lizenzierung weggelassen werden, sieht es oben und unten so aus:
from flask import Flask, render_template, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
# . . . [translate() function definition] . . .
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
- Durch die Importe werden Flask-Funktionen, das
google.auth-Modul und die Cloud Translation API-Clientbibliothek eingebunden. - Die globalen Variablen stehen für die Flask-App, die Cloud-Projekt-ID, den Translation API-Client, den übergeordneten „Standortpfad“ für Translation API-Aufrufe sowie die Quell- und Zielsprachen. In diesem Fall sind das Englisch (
en) und Spanisch (es). Sie können diese Werte aber auch in andere von der Cloud Translation API unterstützte Sprachcodes ändern. - Der große
if-Block unten wird im Tutorial zum lokalen Ausführen dieser App verwendet. Er nutzt den Flask-Entwicklungsserver, um unsere App bereitzustellen. Dieser Abschnitt ist auch für die Tutorials zur Cloud Run-Bereitstellung enthalten, falls der Webserver nicht im Container enthalten ist. Sie werden aufgefordert, das Bündeln des Servers im Container zu aktivieren. Falls Sie dies übersehen, wird für den App-Code der Flask-Entwicklungsserver verwendet. (Es handelt sich nicht um ein Problem mit App Engine oder Cloud Functions, da diese auf Quellcode basieren. Das bedeutet, dass Google Cloud einen Standard-Webserver bereitstellt und ausführt.)
In der Mitte von main.py befindet sich das Herzstück der Anwendung, die Funktion translate():
@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
"""
main handler - show form and possibly previous translation
"""
# Flask Request object passed in for Cloud Functions
# (use gcf_request for GCF but flask.request otherwise)
local_request = gcf_request if gcf_request else request
# reset all variables (GET)
text = translated = None
# if there is data to process (POST)
if local_request.method == 'POST':
text = local_request.form['text']
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context & render template
context = {
'orig': {'text': text, 'lc': SOURCE},
'trans': {'text': translated, 'lc': TARGET},
}
return render_template('index.html', **context)
Die primäre Funktion übernimmt die Verarbeitung der Nutzereingabe und ruft die Translation API auf, um die eigentliche Arbeit zu erledigen. Sehen wir uns das mal genauer an:
- Prüfen Sie mit der Variablen
local_request, ob Anfragen von Cloud Functions stammen. Cloud Functions sendet ein eigenes Flask-Anfrageobjekt, während alle anderen (lokal ausgeführt oder in App Engine oder Cloud Run bereitgestellt) das Anfrageobjekt direkt von Flask erhalten. - Setzen Sie die grundlegenden Variablen für das Formular zurück. Das gilt hauptsächlich für GET-Anfragen, da POST-Anfragen Daten enthalten, die diese ersetzen.
- Wenn es sich um einen POST handelt, erfassen Sie den zu übersetzenden Text und erstellen Sie eine JSON-Struktur, die die API-Metadatenanforderung darstellt. Rufen Sie dann die API auf und greifen Sie auf eine frühere Version der API zurück, wenn der Nutzer eine ältere Bibliothek verwendet.
- Unabhängig davon müssen die tatsächlichen Ergebnisse (POST) oder keine Daten (GET) in den Vorlagenkontext formatiert und gerendert werden.
Der visuelle Teil der Anwendung befindet sich in der Vorlagendatei index.html. Es werden alle zuvor übersetzten Ergebnisse angezeigt (ansonsten leer), gefolgt vom Formular, in dem Sie angeben, was übersetzt werden soll:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
6. Docker für die Erstellung von Python 3-Images einrichten
Öffnen Sie jetzt die Datei Dockerfile, die ohne die Lizenzinformationen so aussieht:
#FROM python:3-slim
FROM python:2-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]
Standardmäßig ist Python 2 eingerichtet. Das können Sie ändern, indem Sie die FROM-Zeile von python:2-slim in python:3-slim ändern oder die obere Zeile auskommentieren und die alte FROM-Zeile löschen. Wenn Sie fertig sind, sollte Dockerfile so aussehen:
FROM python:3-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]
7. Dienst bereitstellen
Jetzt können Sie Ihren Übersetzungsdienst in Cloud Run bereitstellen, indem Sie den folgenden Befehl ausführen:
gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Die Ausgabe sollte so aussehen und einige Aufforderungen für die nächsten Schritte enthalten:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Ihre App ist jetzt weltweit verfügbar. Sie sollte unter der URL mit Ihrer Projekt-ID erreichbar sein, wie in der Bereitstellungsausgabe zu sehen:

Übersetzen Sie etwas, um zu sehen, wie es funktioniert.

8. Fazit
Glückwunsch! Sie haben gelernt, wie Sie die Cloud Translation API aktivieren, die erforderlichen Anmeldedaten abrufen und eine einfache Webanwendung in Python 3 Cloud Run bereitstellen.
Bereinigen
Mit der Cloud Translation API können Sie monatlich eine bestimmte Anzahl von Zeichen kostenlos übersetzen. App Engine hat auch ein kostenloses Kontingent, ebenso wie Cloud Functions und Cloud Run. Wenn eines der beiden überschritten wird, fallen Gebühren an. Wenn Sie mit dem nächsten Codelab fortfahren möchten, müssen Sie die App nicht schließen.
Wenn Sie jedoch noch nicht bereit sind, mit dem nächsten Tutorial fortzufahren, oder Bedenken haben, dass das Internet die gerade bereitgestellte App entdeckt, können Sie Ihre App Engine-App deaktivieren, Ihre Cloud-Funktion löschen oder Ihren Cloud Run-Dienst deaktivieren, um Gebühren zu vermeiden. Wenn Sie mit dem nächsten Codelab fortfahren möchten, können Sie es wieder aktivieren. Wenn Sie diese Anwendung oder andere Codelabs nicht mehr verwenden und alles vollständig löschen möchten, können Sie Ihr Projekt beenden.
Außerdem fallen bei der Bereitstellung auf einer serverlosen Computing-Plattform von Google Cloud geringe Build- und Speicherkosten an. Cloud Build und Cloud Storage haben jeweils ein eigenes kostenloses Kontingent. Für mehr Transparenz erstellt Cloud Build Ihr Anwendungs-Image, das dann entweder in der Cloud Container Registry oder in Artifact Registry, dem Nachfolger, gespeichert wird. Das Speichern dieses Bildes verbraucht einen Teil dieses Kontingents, ebenso wie der ausgehende Netzwerktraffic beim Übertragen des Bildes an den Dienst. Möglicherweise leben Sie jedoch in einer Region, in der es kein solches kostenloses Kontingent gibt. Achten Sie daher auf Ihre Speichernutzung, um potenzielle Kosten zu minimieren.
9. Zusätzliche Ressourcen
In den folgenden Abschnitten finden Sie zusätzliches Lesematerial sowie empfohlene Übungen, um Ihr Wissen aus diesem Tutorial zu erweitern.
Zusätzliche Studie
Nachdem Sie nun etwas Erfahrung mit der Translation API gesammelt haben, wollen wir einige zusätzliche Übungen machen, um Ihre Fähigkeiten weiter zu verbessern. Um mit dem Lernpfad fortzufahren, ändern Sie unsere Beispiel-App so, dass sie Folgendes ausführt:
- Führen Sie alle anderen Versionen dieses Codelabs aus, um lokal zu arbeiten oder auf serverlosen Compute-Plattformen von Google Cloud bereitzustellen (siehe README des Repositorys).
- Dieses Tutorial in einer anderen Programmiersprache durcharbeiten
- Ändern Sie die Anwendung, um andere Ausgangs- oder Zielsprachen zu unterstützen.
- Aktualisieren Sie diese Anwendung, um Text in mehr als eine Sprache übersetzen zu können. Ändern Sie die Vorlagendatei so, dass ein Drop-down-Menü mit unterstützten Zielsprachen angezeigt wird.
Weitere Informationen
Google App Engine
- App Engine-Startseite
- App Engine-Dokumentation
- App Engine-Kurzanleitung für Python 3
- Standarddienstkonten für App Engine
- Python 2-Laufzeit für App Engine (Standard)
- Python 3-Laufzeit für App Engine (Standard)
- Unterschiede zwischen den Python 2- und Python 3-Laufzeiten in App Engine (Standard)
- Migrationsleitfaden für App Engine (Standard) von Python 2 zu Python 3
Google Cloud Functions
- Startseite von Cloud Functions
- Cloud Functions-Dokumentation
- Cloud Functions – Schnellstart für Python
- Standarddienstkonten für Cloud Functions
Google Cloud Run
- Cloud Run-Startseite
- Cloud Run-Dokumentation
- Cloud Run-Kurzanleitung für Python
- Standarddienstkonten für Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Ankündigung von Cloud Buildpacks
- Cloud Buildpacks-Repository
- Cloud Artifact Registry-Startseite
- Cloud Artifact Registry-Dokumentation
- Startseite von Cloud Container Registry
- Cloud Container Registry-Dokumentation
Google Cloud Translation und Google ML Kit
- Cloud Translation-Startseite
- Cloud Translation-Dokumentation
- Preise für die Translation API
- Alle Cloud AI/ML-APIs für „Bausteine“
- Google ML Kit (Teilmenge der Cloud AI/ML-APIs für Mobilgeräte)
- Google ML Kit Translation API
Andere Google Cloud-Produkte/-Seiten
- Google Cloud-Support für Python
- Google Cloud-Clientbibliotheken
- Kostenlose Stufe von Google Cloud
- Gesamte Google Cloud-Dokumentation
Python und Flask
Lizenz
Dieses Tutorial ist unter der Creative Commons Attribution 2.0 Generic License lizenziert, während der Quellcode im Repository unter Apache 2 lizenziert ist.