Regions-ID
REGION_ID ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.
Wenn Sie die Bildverarbeitung in Ihren vorhandenen App Engine-Anwendungen modernisieren möchten, können Sie einen containerisierten Bildtransformationsdienst in Cloud Run bereitstellen und Ihre App Engine Images service Aufrufe dorthin weiterleiten.
Für diese Migration sind keine größeren Änderungen am Bildverarbeitungscode oder am Hosting Ihrer App Engine-Anwendung in Cloud Run erforderlich. Stattdessen fängt das App Engine-Dienste-SDK beim Konfigurieren Ihrer Anwendung Ihre App Engine Images-Dienstaufrufe ab und leitet sie an den Cloud Run-Dienst weiter. Der Dienst verarbeitet die Bilder mit einer Open-Source-Pillow Engine über gRPC und gibt die Ergebnisse an Ihre App Engine Anwendung zurück. Bei dieser Einrichtung wird das Legacy-Backend des App Engine Images-Dienstes durch eine moderne, cloudnative Lösung ersetzt.
Beschränkungen
Wenn Sie den benutzerdefinierten Bildverarbeitungsdienst verwenden, können Sie keine Bereitstellungs-URLs generieren. App Engine löst eine Laufzeitausnahme aus, wenn Sie die Methode
get_serving_url()aufrufen. Diese Einschränkung verhindert, dass das Legacy-Backend zum Speichern und Bereitstellen von Bildern verwendet wird.Zum Bereitstellen von Bildern empfehlen wir, sie entweder direkt über eine Cloud Storage-URL bereitzustellen oder je nach Anwendungsanforderungen einen Cloud Storage-Bucket zu verwenden, der von Cloud CDN unterstützt wird.
Vorhandene URLs, die Sie mit Legacy-Aufrufen der Methode
get_serving_url()erstellt haben, stellen weiterhin Bilder bereit.Wenn Sie die Version Ihres App Engine-Dienste-SDK aktualisieren, leitet App Engine App Engine-Aufrufe nicht automatisch an den Cloud Run-Dienst weiter. Das neue Verhalten wird erst angewendet, nachdem Sie die Umgebungsvariablen für die Migration
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEundAPPENGINE_IMAGES_SERVICE_ENDPOINTkonfiguriert haben.
Hinweis
Achten Sie darauf, dass Sie Zugriff auf den App Engine-Quellcode haben.
Aktivieren Sie die Cloud Run Admin API und die Artifact Registry API:
Erforderliche Rollen
Sie können entweder ein neues Dienstkonto erstellen oder dasselbe nutzerverwaltete Dienstkonto in Cloud Run verwenden, das Sie für App Engine verwenden. Sie oder Ihr Administrator müssen dem Bereitstellerkonto und dem Cloud Build-Dienstkonto die folgenden IAM-Rollen zuweisen.
Klicken, um die erforderlichen Rollen für das Bereitstellerkonto aufzurufen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Bereitstellen aus der Quelle benötigen:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) für Ihr Projekt - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) für Ihr Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Cloud Run-Dienstidentität
Klicken, um die erforderlichen Rollen für das Cloud Build-Dienstkonto aufzurufen
Cloud Build verwendet automatisch das
Compute Engine-Standarddienstkonto als Standard-Cloud Build-Dienstkonto, um Ihren Quellcode und Ihre
Cloud Run-Ressource zu erstellen, es sei denn, Sie überschreiben dieses Verhalten. Damit
Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto in Ihrem Projekt die Rolle
Cloud Run Builder
(roles/run.builder) zuzuweisen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ersetzen Sie PROJECT_NUMBER durch Ihre Google Cloud
Projektnummer und PROJECT_ID durch Ihre Google Cloud
Projekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer,
siehe Projekte erstellen
und verwalten.
Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mit Google Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.
Migrationsprozess
Diese Migration umfasst die folgenden Schritte:
- Stellen Sie den Bildtransformationsdienst in Cloud Run bereit, um die Dienst-URL zu erhalten.
- Konfigurieren Sie Ihre App Engine-Quelldateien mit Ihrer Cloud Run-Dienst-URL und den Routing-Flags und stellen Sie dann Ihre App Engine-Anwendung bereit oder stellen Sie sie noch einmal bereit.
- Testen Sie Ihre Anwendung, um die Bildverarbeitungsfunktion zu prüfen.
Bildtransformationsdienst in Cloud Run bereitstellen
So stellen Sie den Bildtransformationsdienst bereit und konfigurieren den Zugriff auf Cloud Storage:
Stellen Sie den vordefinierten Container des Bildtransformationsdienstes im Cloud Run-Dienst bereit. Achten Sie darauf, dass Sie die Bereitstellung mit erzwungener Authentifizierung (
--no-allow-unauthenticated) durchführen. Das App Engine-Dienste-SDK verarbeitet die Authentifizierung bei Aufrufen dieses Dienstes:gcloud run deploy image-processing-service \ --image=us-central1-docker.pkg.dev/gae-bundled-services-images/image-processing-service-staging/image-processing-service:public-image-d476f7ef9d1b \ --no-allow-unauthenticated \ --region=REGIONErsetzen Sie REGION durch die Region, in der Sie den Cloud Run-Dienst bereitstellen. Wir empfehlen, den Dienst in derselben Region wie Ihren App Engine-Dienst bereitzustellen.
Notieren Sie sich die Dienst-URL Ihres bereitgestellten Cloud Run-Dienstes, z. B.
https://image-processing-service-xyz-uc.a.run.app.Weisen Sie dem Standarddienstkonto von App Engine die Rolle Cloud Run Invoker (
roles/run.invoker) zu. So kann Ihre App Engine-Anwendung Aufrufe an den privaten Cloud Run-Dienst autorisieren und weiterleiten:gcloud run services add-iam-policy-binding image-processing-service \ --member="serviceAccount:PROJECT_ID@appspot.gserviceaccount.com" \ --role="roles/run.invoker" \ --region=REGIONWeisen Sie dem Compute Engine-Standarddienstkonto die Rolle Cloud Storage Object Viewer (
roles/storage.objectViewer) zu. So kann der Bildtransformationsdienst in Cloud Storage gespeicherte Bilder lesen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectViewer"Ersetzen Sie Folgendes:
- PROJECT_ID: Die ID des Projekts, in dem Sie den Cloud Run-Dienst bereitstellen.
- PROJECT_NUMBER: Die Projektnummer des Projekts, in dem Sie den Cloud Run-Dienst bereitstellen.
Quelldateien konfigurieren
So konfigurieren Sie Ihre Python-Anwendung für die Verwendung des Bildtransformationsdienstes in Cloud Run:
Fügen Sie der Datei
requirements.txtdie folgende Abhängigkeit hinzu:appengine-python-standard>=3.0.0b0Alternativ können Sie Abhängigkeiten lokal installieren, indem Sie Folgendes ausführen:
pip install --pre "appengine-python-standard>=3.0.0b0"Aktualisieren Sie die Datei
app.yaml, um den API-Proxy zu aktivieren und die erforderlichen Umgebungsvariablen zu konfigurieren:runtime: RUNTIME # a supported python version # List the Images service app_engine_bundled_services: - images env_variables: # Enable the custom gRPC Images service APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE: "true" # The URL of the Cloud Run service you deployed APPENGINE_IMAGES_SERVICE_ENDPOINT: "RUN_SERVICE_URL"Ersetzen Sie Folgendes:
- RUNTIME: Eine unterstützte Python-Laufzeitversion.
- RUN_SERVICE_URL: Die URL Ihres bereitgestellten Cloud Run-Dienstes.
Stellen Sie Ihre Anwendung in App Engine bereit:
gcloud app deployIhr App Engine-Dienst wird unter
https://PROJECT_ID.REGION_ID.r.appspot.combereitgestellt.Starten Sie Ihren Browser und greifen Sie mit dem folgenden Befehl auf Ihren Webdienst zu:
gcloud app browse
Anwendung testen
So prüfen Sie, ob Ihre Anwendung den Cloud Run-Bildtransformationsdienst verwendet:
- Lösen Sie die Bildverarbeitungsfunktion in Ihrer Anwendung aus.
- Prüfen Sie den Log-Explorer für Ihre App Engine-Anwendung. Achten Sie darauf, dass keine Fehler im Zusammenhang mit
google.appengine.api.images-Aufrufen auftreten. - Prüfen Sie die Logs Ihres Cloud Run-Dienstes
image-processing-service, um zu prüfen, ob Cloud Run die Anfragen erhalten und verarbeitet hat.