Einfache Bereitstellung von "Google Übersetzer" app in Python 2 App Engine

1. Übersicht

Diese Reihe von Codelabs (Tutorials zum Selbststudium, praxisorientierte Anleitungen) zielt darauf ab, Entwicklern die verschiedenen Optionen bei der Bereitstellung ihrer Anwendungen näherzubringen. In diesem Codelab erfahren Sie, wie Sie die Google Cloud Translation API mit Python verwenden und entweder lokal ausführen oder auf einer serverlosen Cloud-Computing-Plattform (App Engine, Cloud Functions oder Cloud Run) bereitstellen. Die Beispiel-App aus dem Repository dieser Anleitung kann mit nur geringfügigen Konfigurationsänderungen (mindestens) acht verschiedene Möglichkeiten bereitgestellt werden:

  1. Lokaler Flask-Server (Python 2)
  2. Lokaler Flask-Server (Python 3)
  3. App Engine (Python 2)
  4. App Engine (Python 3)
  5. Cloud Functions (Python 3)
  6. Cloud Run (Python 2 über Docker)
  7. Cloud Run (Python 3 über Docker)
  8. Cloud Run (Python 3 über Cloud Buildpacks)

In diesem Codelab geht es vorrangig um die Bereitstellung der App auf den oben fettgedruckten Plattformen.

Du lernst, wie du

Voraussetzungen

  • Ein Google Cloud-Projekt mit einem aktiven Cloud-Rechnungskonto
  • Für die lokale Ausführung installierter Flask oder eine serverlose Cloud-Computing-Plattform, die für cloudbasierte Bereitstellungen aktiviert ist
  • Grundlegende Python-Kenntnisse
  • Erfahrung mit grundlegenden Betriebssystembefehlen

Umfrage

Wie möchten Sie diese Anleitung nutzen?

<ph type="x-smartling-placeholder"></ph> Lies sie dir durch und absolviere die Übungen Schreibgeschützt

Wie würden Sie Ihre Erfahrung mit Python bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Mittel Kompetent

Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud-Diensten bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Mittel Kompetent

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als PROJECT_ID identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.

3. Translation API aktivieren

Für unsere Beispiel-App aktivieren Sie stattdessen die Cloud Translation API und den App Engine-Dienst, wie unten beschrieben.

Cloud APIs aktivieren

Einführung

Unabhängig davon, welche Google API Sie in Ihrer Anwendung verwenden möchten, müssen sie aktiviert sein. Das folgende Beispiel zeigt zwei Möglichkeiten, die Cloud Vision API zu aktivieren. Nachdem Sie gelernt haben, wie Sie eine Cloud API aktivieren, können Sie 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 suchen. Es sieht aus wie eine URL: SERVICE_NAME.googleapis.com. Sie finden diese Produkte im Diagramm der unterstützten Produkte. Alternativ können Sie sie mit der Google Discovery API programmatisch abfragen.

Ausgerüstet mit diesen Informationen können Sie eine API mithilfe von Cloud Shell (oder Ihrer lokalen Entwicklungsumgebung mit dem installierten gcloud-Befehlszeilentool) aktivieren:

gcloud services enable SERVICE_NAME.googleapis.com

Dieser Befehl aktiviert beispielsweise die Cloud Vision API:

gcloud services enable vision.googleapis.com

Dieser Befehl aktiviert App Engine:

gcloud services enable appengine.googleapis.com

Sie können auch mehrere APIs mit einer Anfrage aktivieren. Mit der folgenden 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.

fb0f1d315f122d4a.png

Wenn Sie die Cloud Vision API aktivieren möchten, geben Sie „vision“ ein. in die Suchleiste ein. Daraufhin wird alles angezeigt, was mit Ihrer Eingabe übereinstimmt:

2275786a24f8f204.png

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

2556f923b628e31.png

Kosten

Viele Google APIs können kostenlos genutzt werden. Die Nutzung von Google Cloud-Produkten und APIs sind nicht kostenlos. Beim Aktivieren von Cloud APIs werden Sie möglicherweise nach einem aktiven Rechnungskonto gefragt. Beachten Sie jedoch, dass bei einigen Google Cloud-Produkten ein "Immer kostenlos"- Stufe (täglich/monatlich), die Sie überschreiten müssen, damit Gebühren anfallen. Andernfalls wird deine Kreditkarte (oder das angegebene Zahlungsmittel) nicht belastet.

Nutzer sollten vor der Aktivierung die Preisinformationen für eine API konsultieren, insbesondere wenn sie wissen möchten, ob es eine kostenlose Stufe hat und falls ja, um welche es sich handelt. Wenn Sie die Cloud Vision API aktivieren, sehen Sie sich die Preisinformationen an. Für Cloud Vision gibt es ein kostenloses Kontingent. Solange Sie innerhalb eines Monats innerhalb der Limits bleiben, fallen keine Kosten an.

Die Preise und kostenlosen Stufen variieren je nach Google APIs. Beispiele:

Verschiedene Google-Produkte werden unterschiedlich abgerechnet. Informationen hierzu finden Sie in der Dokumentation Ihrer API.

Zusammenfassung

Sie wissen nun, wie Sie Google APIs im Allgemeinen aktivieren. Gehen Sie nun zum API Manager und aktivieren Sie sowohl die Cloud Translation API als auch den App Engine-Dienst (falls noch nicht geschehen). Wenn Sie es lieber von der Befehlszeile aus tun möchten, geben Sie stattdessen diesen Befehl ein:

gcloud services enable appengine.googleapis.com translate.googleapis.com

Das monatliche Kontingent ist zwar nicht in der Spalte "Immer kostenlos" insgesamt Stufenübersicht sehen Sie auf der Preisseite der Translation API, dass alle Nutzer monatlich eine feste Anzahl übersetzter Zeichen erhalten. Über die API werden Ihnen keine Kosten berechnet, wenn Sie unter diesem Grenzwert bleiben. Falls weitere Gebühren im Zusammenhang mit Google Cloud anfallen, werden diese am Ende im Abschnitt „Bereinigen“ erläutert. .

4. Beispielcode der App abrufen

Klonen Sie den Code lokal im Repository 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:

5cd6110c4414cf65.png

Da Sie nun über alles verfügen, erstellen Sie für diese spezielle Anleitung eine vollständige Kopie des Ordners, da Sie wahrscheinlich die Dateien löschen oder ändern müssen. Wenn Sie eine andere Bereitstellung vornehmen 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. Demo der Beispiel-App

Die Beispiel-App ist eine einfache Ableitung von Google Übersetzer, die Nutzer auffordert, Text auf Englisch einzugeben und eine entsprechende Übersetzung des Textes auf Spanisch zu erhalten. Öffnen Sie jetzt die Datei main.py, um zu sehen, wie es funktioniert. Ohne die kommentierten Zeilen zur Lizenzierung sieht der Text 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)))
  1. Die Importe umfassen die Flask-Funktionalität, das google.auth-Modul und die Cloud Translation API-Clientbibliothek.
  2. Die globalen Variablen stehen für die Flask-Anwendung, die Cloud-Projekt-ID, den Translation API-Client und den übergeordneten „Standortpfad“. für Aufrufe der Translation API sowie für die Ausgangs- und Zielsprachen. In diesem Fall sind es Englisch (en) und Spanisch (es), aber Sie können diese Werte in andere Sprachcodes ändern, die von der Cloud Translation API unterstützt werden.
  3. Der große if-Block am unteren Rand wird in der Anleitung zum lokalen Ausführen dieser Anwendung verwendet. Er nutzt den Flask-Entwicklungsserver, um unsere Anwendung bereitzustellen. Dieser Abschnitt bezieht sich auch hier auf die Anleitungen zur Cloud Run-Bereitstellung für den Fall, dass der Webserver nicht im Container enthalten ist. Sie werden aufgefordert, die Bündelung des Servers im Container zu aktivieren. Falls Sie dies jedoch übersehen, greift der Anwendungscode auf den Flask-Entwicklungsserver zurück. Bei App Engine und Cloud Functions handelt es sich nicht um ein Problem, da es sich um quellbasierte Plattformen handelt, d. h., Google Cloud stellt einen Standard-Webserver bereit und führt ihn aus.

Schließlich befindet sich in der Mitte von main.py das Herz 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 Nutzereingabe und ruft für den Großteil der Arbeit die Translation API auf. Sehen wir uns das einmal genauer an:

  1. Prüfen Sie mithilfe der Variable local_request, ob Anfragen von Cloud Functions stammen. Cloud Functions sendet ein eigenes Flask-Anfrageobjekt, während alle anderen, die lokal ausgeführt werden oder in App Engine oder Cloud Run bereitgestellt werden, das Anfrageobjekt direkt von Flask erhalten.
  2. Die grundlegenden Variablen für das Formular zurücksetzen Dies gilt hauptsächlich für GET-Anfragen, da POST-Anfragen Daten enthalten, die diese ersetzen.
  3. Wenn es sich um einen POST handelt, übernehmen 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.
  4. Unabhängig davon sollten Sie die tatsächlichen Ergebnisse (POST) oder keine Daten (GET) in den Vorlagenkontext formatieren und rendern.

Der visuelle Teil der Anwendung befindet sich in der Vorlagendatei index.html. Es werden alle zuvor übersetzten Ergebnisse (andernfalls leer) angezeigt, gefolgt von dem Formular, in dem nach etwas zu übersetzen ist:

<!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. Lokale Pakete/Abhängigkeiten installieren (in lib)

Wie bereits erwähnt, verwendet die Beispielanwendung das Mikro-Web-Framework Flask und die Google Cloud Translation API-Clientbibliothek für Python. Installieren und aktualisieren Sie pip und dieses Paketpaar mit diesem pip- oder pip3-Befehl:

pip install -t lib -r requirements.txt

Nachdem Sie den obigen Kommentar ausgeführt haben, sehen Sie die Installationsausgabe, die ungefähr so aussehen könnte:

$ pip install -t lib -r requirements.txt
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting flask>=1.1.2
  Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB)
Collecting google-cloud-translate>=2.0.1
  Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB)
Collecting click<8.0,>=5.1
  Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting Jinja2<3.0,>=2.10.1
  Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
Collecting Werkzeug<2.0,>=0.15
  Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting itsdangerous<2.0,>=0.24
  Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0
  Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB)
     |████████████████████████████████| 93 kB 2.1 MB/s
Collecting google-cloud-core<2.0dev,>=1.1.0
  Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB)
Collecting protobuf>=3.12.0
  Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB)
     |████████████████████████████████| 958 kB 21.6 MB/s
Collecting futures>=3.2.0; python_version < "3.2"
  Using cached futures-3.3.0-py2-none-any.whl (16 kB)
Collecting six>=1.13.0
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting packaging>=14.3
  Using cached packaging-20.9-py2.py3-none-any.whl (40 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting requests<3.0.0dev,>=2.18.0
  Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting google-auth<2.0dev,>=1.25.0
  Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB)
Collecting pytz
  Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting setuptools>=40.3.0
  Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB)
Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc"
  Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB)
Collecting pyparsing>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting chardet<5,>=3.0.2
  Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting certifi>=2017.4.17
  Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB)
     |████████████████████████████████| 145 kB 61.1 MB/s
Collecting pyasn1-modules>=0.2.1
  Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting rsa<4.6; python_version < "3.6"
  Using cached rsa-4.5-py2.py3-none-any.whl (36 kB)
Collecting cachetools<5.0,>=2.0.0
  Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB)
Collecting enum34>=1.0.4; python_version < "3.4"
  Using cached enum34-1.1.10-py2-none-any.whl (11 kB)
Collecting pyasn1<0.5.0,>=0.4.6
  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate
ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
matplotlib 1.3.1 requires nose, which is not installed.
matplotlib 1.3.1 requires tornado, which is not installed.
Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5

7. Dienst bereitstellen

Führen Sie den folgenden Befehl aus, um den Übersetzungsdienst in Python 2 App Engine bereitzustellen:

gcloud app deploy

Die Ausgabe sollte so aussehen und einige Aufforderungen für die nächsten Schritte enthalten:

$ gcloud app deploy
Services to deploy:

descriptor:      [/private/tmp/nebulous-serverless-python/app.yaml]
source:          [/private/tmp/nebulous-serverless-python]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [20210422t161025]
target url:      [https://PROJECT_ID.appspot.com]


Do you want to continue (Y/n)?

Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 1290 files to Google Cloud Storage                       ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.appspot.com]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s default

To view your application in the web browser run:
  $ gcloud app browse

Da Ihre Anwendung jetzt weltweit verfügbar ist, sollten Sie sie unter der URL (die Ihre Projekt-ID enthält) erreichen können, die Sie in der Bereitstellungsausgabe angegeben haben:

da28f951c33a2c3d.png

Übersetzen Sie etwas, damit es funktioniert!

d911984d15dd5ef9.png

8. Fazit

Glückwunsch! Sie haben gelernt, wie Sie die Cloud Translation API aktivieren, die erforderlichen Anmeldedaten abrufen und eine einfache Webanwendung in Python 2 App Engine bereitstellen. Weitere Informationen zu dieser Bereitstellung finden Sie in dieser Tabelle im Repository.

Bereinigen

Mit der Cloud Translation API können Sie eine feste Anzahl übersetzter Zeichen pro Monat kostenlos ausführen. Für App Engine gibt es außerdem ein kostenloses Kontingent. Das gilt auch für Cloud Functions und Cloud Run. Wenn einer der beiden Werte überschritten wird, fallen Kosten an. Wenn Sie mit dem nächsten Codelab fortfahren möchten, müssen Sie Ihre App nicht beenden.

Wenn Sie jedoch noch nicht mit der nächsten Anleitung fortfahren möchten oder Bedenken haben, dass die gerade bereitgestellte App im Internet gefunden wird, deaktivieren Sie Ihre App Engine-Anwendung, löschen Sie die Cloud Functions-Funktion oder deaktivieren Sie den Cloud Run-Dienst, um Gebühren zu vermeiden. Wenn Sie bereit sind, mit dem nächsten Codelab fortzufahren, können Sie es wieder aktivieren. Wenn Sie jedoch nicht mit dieser Anwendung oder anderen Codelabs fortfahren und alles vollständig löschen möchten, können Sie Ihr Projekt beenden.

Die Bereitstellung auf einer serverlosen Computing-Plattform von Google Cloud verursacht außerdem geringfügige Build- und Speicherkosten. Für Cloud Build und Cloud Storage gibt es ein eigenes kostenloses Kontingent. Für mehr Transparenz erstellt Cloud Build Ihr Anwendungs-Image, das dann entweder in der Cloud Container Registry oder der Artifact Registry, der jeweils aktuellen Version, gespeichert wird. Die Speicherung dieses Images verbraucht einen Teil dieses Kontingents, ebenso wie der ausgehende Netzwerktraffic bei der Übertragung des Images an den Dienst. Möglicherweise leben Sie in einer Region, in der es keine solche kostenlose Stufe 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 zu erweitern, das Sie nach Abschluss dieses Tutorials gewonnen haben.

Weitere Studie

Sie haben sich nun mit der Translation API vertraut gemacht. Als Nächstes sehen wir uns an, wie Sie Ihre Fähigkeiten in den nächsten Übungen weiterentwickeln können. Um mit dem Lernpfad fortzufahren, passen Sie unsere Beispiel-App so an:

  1. Führen Sie alle anderen Versionen dieses Codelabs zur lokalen Ausführung oder Bereitstellung auf serverlosen Computing-Plattformen von Google Cloud durch (siehe Infodatei zum Repository).
  2. Schließen Sie diese Anleitung mit einer anderen Programmiersprache ab.
  3. Ändern Sie diese Anwendung, sodass andere Ausgangs- und Zielsprachen unterstützt werden.
  4. Aktualisieren Sie diese Anwendung, um Text in mehr als eine Sprache übersetzen zu können. Ändern Sie die Vorlagendatei so, dass sie ein Pulldown-Menü mit unterstützten Zielsprachen enthält.

Weitere Informationen

Google App Engine

Google Cloud Functions

Google Cloud Run

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation und Google ML Kit

Andere Google Cloud-Produkte/-Seiten

Python und Flask

Lizenz

Diese Anleitung ist unter einer Creative-Commons-Lizenz „Namensnennung 2.0“ und der Quellcode im Repository unter „Apache 2“ lizenziert.