ID de la région
Le REGION_ID est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.
En savoir plus sur les ID de région
Pour moderniser le traitement des images dans vos applications App Engine existantes, vous pouvez déployer un service de transformation d'images conteneurisé sur Cloud Run et y acheminer vos appels au service Images d'App Engine.
Cette migration ne nécessite pas de réécrire en grande partie votre code de traitement d'images ni d'héberger votre application App Engine sur Cloud Run. En revanche, lorsque vous configurez votre application, le SDK des services App Engine intercepte vos appels au service App Engine Images et les redirige vers le service Cloud Run. Le service traite les images à l'aide d'un moteur Pillow Open Source sur gRPC et renvoie les résultats à votre application App Engine. Cette configuration remplace l'ancien backend du service Images App Engine par une solution moderne et native du cloud.
Limites
Lorsque vous utilisez le service de traitement d'images personnalisé, vous ne pouvez pas générer d'URL de diffusion. App Engine génère une exception d'exécution lorsque vous appelez la méthode
getServingUrl(). Cette restriction empêche de s'appuyer sur l'ancien backend pour stocker et diffuser des images.Pour diffuser des images, nous vous recommandons de les diffuser directement à partir d'une URL Cloud Storage ou d'utiliser un bucket Cloud Storage soutenu par Cloud CDN, en fonction des exigences de votre application.
Les URL existantes que vous avez créées à l'aide d'anciens appels à la méthode
getServingUrl()continuent de diffuser des images.Lorsque vous mettez à niveau la version du SDK des services App Engine, App Engine ne route pas automatiquement les appels App Engine vers le service Cloud Run. Votre application n'applique le nouveau comportement qu'après avoir configuré les variables d'environnement de migration
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEetAPPENGINE_IMAGES_SERVICE_ENDPOINT.
Avant de commencer
Assurez-vous d'avoir accès au code source App Engine.
Activez l'API Cloud Run Admin et l'API Artifact Registry :
Rôles requis
Vous pouvez choisir de créer un nouveau compte de service ou d'utiliser dans Cloud Run le même compte de service géré par l'utilisateur que celui que vous utilisez pour App Engine. Vous ou votre administrateur devez attribuer les rôles IAM suivants au compte déployeur et au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte déployeur
Pour obtenir les autorisations nécessaires pour compiler et déployer à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur de source Cloud Run (
roles/run.sourceDeveloper) sur votre projet - Consommateur Service Usage (
roles/serviceusage.serviceUsageConsumer) pour votre projet - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service Cloud Run
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder) au compte de service Compute Engine par défaut sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Remplacez PROJECT_NUMBER par le numéro de votre projet Google Cloudet PROJECT_ID par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.
L'attribution du rôle de compilateur Cloud Run au compte de service Compute Engine par défaut prend quelques minutes à se propager.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Processus de migration
Cette migration comprend les étapes suivantes :
- Déployez le service de transformation d'images sur Cloud Run pour obtenir l'URL de votre service.
- Configurez vos fichiers sources App Engine avec l'URL de votre service Cloud Run et les indicateurs de routage, puis déployez ou redéployez votre application App Engine.
- Testez votre application pour vérifier la fonctionnalité de traitement des images.
Déployer le service de transformation d'images sur Cloud Run
Pour déployer le service de transformation d'images et configurer son accès à Cloud Storage, procédez comme suit :
Déployez le conteneur de service de transformation d'image préconfiguré dans le service Cloud Run. Assurez-vous de déployer l'application avec l'authentification appliquée (
--no-allow-unauthenticated). Le SDK des services App Engine gère l'authentification lors des appels à ce service :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=REGIONRemplacez REGION par la région dans laquelle vous déployez le service Cloud Run. Nous vous recommandons de déployer le service dans la même région que votre service App Engine.
Notez l'URL du service Cloud Run que vous avez déployé, par exemple
https://image-processing-service-xyz-uc.a.run.app.Attribuez le rôle Demandeur Cloud Run (
roles/run.invoker) au compte de service App Engine par défaut. Cela permet à votre application App Engine d'autoriser et de router les appels vers le service Cloud Run privé :gcloud run services add-iam-policy-binding image-processing-service \ --member="serviceAccount:PROJECT_ID@appspot.gserviceaccount.com" \ --role="roles/run.invoker" \ --region=REGIONAttribuez le rôle Lecteur des objets Cloud Storage (
roles/storage.objectViewer) au compte de service Compute Engine par défaut. Cela permet au service de transformation d'images de lire les images stockées dans Cloud Storage :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectViewer"Remplacez les éléments suivants :
- PROJECT_ID : ID du projet dans lequel vous déployez le service Cloud Run.
- PROJECT_NUMBER : numéro du projet dans lequel vous déployez le service Cloud Run.
Configurer vos fichiers sources
Pour configurer votre application Java afin qu'elle utilise le service de transformation d'images sur Cloud Run, procédez comme suit :
Mettez à jour le fichier
pom.xmlpour inclure les dépendances suivantes :Ajoutez ou mettez à jour la dépendance
appengine-api-1.0-sdk:<dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>5.0.5-beta.1</version> </dependency>Ajoutez la dépendance
google-auth-library-oauth2-httppour une communication sécurisée avec Cloud Run :<dependency> <groupId>com.google.auth</groupId> <artifactId>google-auth-library-oauth2-http</artifactId> <version>1.20.0</version> </dependency>
Mettez à jour le fichier
appengine-web.xmlpour configurer les variables d'environnement requises :<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <runtime>RUNTIME</runtime> <!-- a supported Java runtime version --> <threadsafe>true</threadsafe> <!-- List the Images service --> <app-engine-bundled-services> <api>images</api> </app-engine-bundled-services> <env-variables> <!-- Enable the custom gRPC Images service --> <env-var name="APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE" value="true" /> <!-- The URL of the Cloud Run service you deployed --> <env-var name="APPENGINE_IMAGES_SERVICE_ENDPOINT" value="RUN_SERVICE_URL" /> </env-variables> </appengine-web-app>Remplacez les éléments suivants :
- RUNTIME : version d'exécution Java compatible.
- RUN_SERVICE_URL : URL de votre service Cloud Run déployé.
Déployez votre application sur App Engine :
mvn clean package appengine:deploy cleanLancez votre navigateur et accédez à votre service Web en exécutant la commande suivante :
gcloud app browse
Tester votre application
Pour vérifier que votre application utilise correctement le service de transformation d'images Cloud Run :
- Déclenchez la fonctionnalité de traitement d'images dans votre application App Engine déployée.
- Consultez l'explorateur de journaux pour votre application App Engine. Assurez-vous qu'il n'y a pas d'erreurs liées aux appels
com.google.appengine.api.images. - Vérifiez les journaux de votre
image-processing-serviceCloud Run pour vous assurer que Cloud Run a reçu et traité les requêtes.