ID regione
L'REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo
febbraio 2020, REGION_ID.r è incluso negli
URL di App Engine. Per le app esistenti create prima di questa data, l'
ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
Per modernizzare l'elaborazione delle immagini nelle applicazioni App Engine esistenti, puoi eseguire il deployment di un servizio di trasformazione delle immagini containerizzato in Cloud Run e indirizzare le chiamate del servizio App Engine Images service a questo servizio.
Questa migrazione non richiede la riscrittura completa del codice di elaborazione delle immagini o l'hosting dell'applicazione App Engine in Cloud Run. Quando configuri l'applicazione, l'SDK dei servizi App Engine intercetta le chiamate del servizio App Engine Images e le indirizza al servizio Cloud Run. Il servizio elabora le immagini utilizzando un motore Pillow open source su gRPC e restituisce i risultati all'applicazione App Engine. Questa configurazione sostituisce il backend del servizio App Engine Images legacy con una soluzione moderna e nativa del cloud.
Limitazioni
Quando utilizzi il servizio di elaborazione delle immagini personalizzato, non puoi generare URL di pubblicazione. App Engine genera un'eccezione di runtime quando richiami il metodo
get_serving_url(). Questa limitazione impedisce di fare affidamento sul backend legacy per l'archiviazione e la pubblicazione delle immagini.Per pubblicare le immagini, ti consigliamo di pubblicarle direttamente da un URL Cloud Storage o di utilizzare un bucket Cloud Storage supportato da Cloud CDN, a seconda dei requisiti dell'applicazione.
Gli URL esistenti creati utilizzando le chiamate legacy al metodo
get_serving_url()continuano a pubblicare le immagini.Quando esegui l'upgrade della versione dell'SDK dei servizi App Engine, App Engine non indirizza automaticamente le chiamate di App Engine al servizio Cloud Run. L'applicazione applica il nuovo comportamento solo dopo aver configurato le variabili di ambiente di migrazione
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEeAPPENGINE_IMAGES_SERVICE_ENDPOINT.
Prima di iniziare
Assicurati di avere accesso al codice sorgente di App Engine.
Abilita l'API Cloud Run Admin e l'API Artifact Registry:
Ruoli obbligatori
Puoi scegliere di creare un nuovo account di servizio o di utilizzare lo stesso account di servizio gestito dall'utente in Cloud Run che utilizzi per App Engine. Tu o il tuo amministratore dovete concedere all'account di deployment e all'account di servizio Cloud Build i seguenti ruoli IAM.
Fai clic per visualizzare i ruoli obbligatori per l'account di deployment
Per ottenere le autorizzazioni necessarie per creare ed eseguire il deployment dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM ruoli:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) sul tuo progetto - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) sul tuo progetto - Service Account User (
roles/iam.serviceAccountUser) sull'identità del servizio Cloud Run
Fai clic per visualizzare i ruoli obbligatori per l'account di servizio Cloud Build
Per impostazione predefinita, Cloud Build utilizza automaticamente l'
account di servizio predefinito di Compute Engine come account di servizio Cloud Build predefinito per creare il codice sorgente e la
risorsa Cloud Run, a meno che tu non esegua l'override di questo comportamento. Affinché
Cloud Build possa creare le tue origini, chiedi all'amministratore di concedere
Cloud Run Builder
(roles/run.builder) all'account di servizio predefinito
di Compute Engine nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sostituisci PROJECT_NUMBER con il tuo Google Cloud
numero del progetto e PROJECT_ID con il tuo Google Cloud
ID progetto. Per istruzioni dettagliate su come trovare l'ID progetto e il numero del progetto,
consulta Creazione
e gestione dei progetti.
La propagazione della concessione del ruolo Cloud Run Builder all'account di servizio predefinito di Compute Engine richiede alcuni minuti per propagarsi.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Processo di migrazione
Questa migrazione include i seguenti passaggi:
- Esegui il deployment del servizio di trasformazione delle immagini in Cloud Run per ottenere l'URL del servizio.
- Configura i file di origine di App Engine con l' URL del servizio Cloud Run e i flag di routing, quindi esegui il deployment o il redeployment dell'applicazione App Engine.
- Testa l'applicazione per verificare la funzionalità di elaborazione delle immagini.
Esegui il deployment del servizio di trasformazione delle immagini in Cloud Run
Per eseguire il deployment del servizio di trasformazione delle immagini e configurarne l'accesso a Cloud Storage:
Esegui il deployment del container del servizio di trasformazione delle immagini predefinito nel servizio Cloud Run. Assicurati di eseguire il deployment con l'autenticazione applicata (
--no-allow-unauthenticated). L'SDK dei servizi App Engine gestisce l'autenticazione quando effettua chiamate a questo servizio: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=REGIONSostituisci REGION con la regione in cui esegui il deployment del servizio Cloud Run. Ti consigliamo di eseguire il deployment del servizio nella stessa regione del servizio App Engine.
Prendi nota dell'URL del servizio Cloud Run di cui hai eseguito il deployment, ad esempio
https://image-processing-service-xyz-uc.a.run.app.Concedi il ruolo Cloud Run Invoker (
roles/run.invoker) all'account di servizio App Engine predefinito. In questo modo, l'applicazione App Engine può autorizzare e indirizzare le chiamate al servizio Cloud Run privato:gcloud run services add-iam-policy-binding image-processing-service \ --member="serviceAccount:PROJECT_ID@appspot.gserviceaccount.com" \ --role="roles/run.invoker" \ --region=REGIONConcedi il ruolo Visualizzatore oggetti Cloud Storage (
roles/storage.objectViewer) all'account di servizio predefinito di Compute Engine. In questo modo, il servizio di trasformazione delle immagini può leggere le immagini archiviate in Cloud Storage:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectViewer"Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto in cui esegui il deployment del servizio Cloud Run.
- PROJECT_NUMBER: il numero del progetto in cui esegui il deployment del servizio Cloud Run.
Configura i file di origine
Per configurare l'applicazione Python in modo che utilizzi il servizio di trasformazione delle immagini in Cloud Run:
Aggiungi la seguente dipendenza al file
requirements.txt:appengine-python-standard>=3.0.0b0In alternativa, per installare le dipendenze localmente, esegui:
pip install --pre "appengine-python-standard>=3.0.0b0"Aggiorna il file
app.yamlper abilitare il proxy API e configurare le variabili di ambiente richieste: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"Sostituisci quanto segue:
- RUNTIME: una versione del runtime Python supportata.
- RUN_SERVICE_URL: l'URL del servizio Cloud Run di cui hai eseguito il deployment.
Esegui il deployment dell'applicazione in App Engine:
gcloud app deployIl servizio App Engine viene sottoposto a deployment all'indirizzo
https://PROJECT_ID.REGION_ID.r.appspot.com.Avvia il browser e accedi al servizio web eseguendo il seguente comando:
gcloud app browse
Testa l'applicazione
Per verificare che l'applicazione utilizzi correttamente il servizio di trasformazione delle immagini Cloud Run:
- Attiva la funzionalità di elaborazione delle immagini nell'applicazione.
- Controlla Esplora log per l'applicazione App Engine. Assicurati che non siano presenti errori relativi alle chiamate
google.appengine.api.images. - Controlla i log di Cloud Run
image-processing-serviceper verificare che Cloud Run abbia ricevuto ed elaborato le richieste.