La maggior parte delle funzionalità fornite dai servizi in bundle precedenti è ora fornita dalle librerie client Cloud. Per ulteriori informazioni, consulta le alternative consigliate elencate di seguito.
Se la migrazione a una soluzione non in bundle non è un'opzione per il tuo progetto, potresti essere in grado di continuare a utilizzare i servizi in bundle legacy nelle tue appPython 3come soluzione alternativa. Questo approccio ti offre la flessibilità di passare a servizi scomposti più avanti nel ciclo di migrazione.
Dopo aver eseguito la migrazione dai servizi integrati precedenti, puoi continuare a utilizzare App Engine o eseguire la migrazione a Cloud Run. Cloud Run è progettato per migliorare l'esperienza di App Engine e incorpora molte delle migliori funzionalità sia dell'ambiente standard sia dell'ambiente flessibile. Per confrontare le funzionalità e capire come eseguire la migrazione, consulta la guida di confronto tra App Engine e Cloud Run.
Google Cloud fornisce prodotti autonomi che offrono funzionalità simili a quelle di alcuni dei servizi in bundle nel runtime Python 2. Per i servizi in bundle che non sono disponibili come prodotti separati in Google Cloud, come l'elaborazione delle immagini, la ricerca e la messaggistica, questa guida consiglia fornitori di terze parti o altre soluzioni alternative.
Questa pagina illustra il percorso di migrazione per ciascun servizio in bundle.
Informazioni sulle Google Cloud autorizzazioni
Poiché l'app di cui è stata eseguita la migrazione e i Google Cloud servizi che utilizza non vengono più eseguiti nello stesso ambiente "in sandbox", l'app deve avere l'autorizzazione per accedere a ogni servizio. Ad esempio, per interagire con Firestore in modalità Datastore (Datastore) o Cloud Tasks, l'app deve fornire le credenziali di un account autorizzato ad accedere a questi servizi.
Per impostazione predefinita, le app nel runtime standard di App Engine forniscono le credenziali dell'account di servizio predefinito di App Engine, che è autorizzato ad accedere ai database nello stesso progetto dell'app.
Se una delle seguenti condizioni è vera, devi utilizzare una tecnica di autenticazione alternativa che fornisca esplicitamente le credenziali:
La tua app e il database Memorystore si trovano in progettiGoogle Cloud diversi.
Hai modificato i ruoli assegnati all'account di servizio App Engine predefinito.
Per informazioni sulle tecniche di autenticazione alternativa, consulta Configurare l'autenticazione per le applicazioni di produzione da server a server.
Autenticazione per lo sviluppo locale
Per sviluppare o testare la tua app localmente, ti consigliamo di creare e utilizzare un account di servizio. Non utilizzare il service account predefinito di App Engine, poiché ha un livello elevato di autorizzazioni per tutti gli elementi del progetto. Crea e utilizza un account di servizio con il livello più basso di autorizzazioni necessarie per la tua attività di sviluppo e test specifica.
Per istruzioni su come configurare un account di servizio e collegarlo alla tua app, consulta Ottenere e fornire manualmente le credenziali dell'account di servizio.
Installazione delle librerie client
Il modo più semplice per utilizzare i servizi Google Cloud da un'app Python è installare la libreria client Python del servizio.I servizi Google Cloud forniscono anche interfacce JSON REST e altre. Google Cloud I passaggi per installare le librerie client nell'ambiente runtime di App Engine sono diversi per le app Python 2 e Python 3.
Installazione di librerie per app Python 2
Per installare una libreria da utilizzare per la tua app quando è in esecuzione nel runtime Python 2:
Crea una directory per archiviare le librerie di terze parti, ad esempio
lib/
.Crea un file
requirements.txt
nella stessa cartella del fileapp.yaml
e aggiungi il nome di una raccolta client.Ad esempio, il seguente file può essere utilizzato per installare le librerie per Pub/Sub e Cloud Tasks:
google-cloud-pubsub google-cloud-tasks
Utilizza
pip install
per installare le librerie nella cartella che hai creato. Ad esempio:pip install -t lib -r requirements.txt
Nel file
app.yaml
della tua app, specifica le librerie Google RPC esetuptools
richieste e la libreria SSL facoltativa nella sezionelibraries
:libraries: - name: grpcio version: 1.0.0 - name: setuptools version: 36.6.0 - name: ssl version: latest
Alcune librerie client non richiedono la libreria SSL. Se non includi la libreria SSL per una libreria client che ne ha bisogno, visualizzerai un errore SSL in Explorer dei log quando la tua app riceve una richiesta.
Se non ne hai già uno, crea un file
appengine_config.py
nella stessa cartella del fileapp.yaml
. Aggiungi quanto segue al tuoappengine_config.py
file:# appengine_config.py import pkg_resources from google.appengine.ext import vendor # Set path to your libraries folder. path = 'lib' # Add libraries installed in the path folder. vendor.add(path) # Add libraries to pkg_resources working set to find the distribution. pkg_resources.working_set.add_entry(path)
Assicurati di utilizzare il modulo
pkg_resources
, che garantisce che la tua app utilizzi la distribuzione corretta delle librerie client.Il file
appengine_config.py
nell'esempio precedente presuppone che la la cartellalib
si trovi nella directory di lavoro corrente. Se non puoi garantire chelib
si trovi sempre nella directory di lavoro corrente, specifica il percorso completo della cartellalib
. Ad esempio:import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
App Engine carica tutte le librerie nella directory specificata
nel file appengine_config.py
nel runtime Python 2.
Installazione di librerie per app Python 3
Per installare una libreria da utilizzare nella tua app quando è in esecuzione nel runtime Python 3:
Aggiungi il nome della libreria al file
requirements.txt
della tua app. Ad esempio:google-cloud-ndb
App Engine carica automaticamente tutte le librerie elencate nel
requirements.txt
file nel runtime Python 3.
Percorsi di migrazione per i servizi integrati di App Engine
Archivio BLOB
Per archiviare e recuperare i dati, utilizza Cloud Storage tramite le librerie client di Cloud. Per iniziare, consulta la sezione Utilizzare Cloud Storage e la guida Eseguire la migrazione da Blobstore a Cloud Storage. Per simulare questa migrazione, aggiungi l'utilizzo di Blobstore a un'app di esempio e esegui la migrazione a Cloud Storage.
Datastore
Se la tua app Python 2 utilizza NDB per interagire con Datastore, esegui la migrazione alla libreria Cloud NDB. Cloud NDB è pensato principalmente come strumento di transizione per la migrazione delle app Python 2. Consigliamo alle app Python 3 di utilizzare la libreria client della modalità Datastore.
Per maggiori dettagli, vedi Eseguire la migrazione a Cloud NDB. Per simulare questa migrazione con un'app di esempio, consulta Eseguire la migrazione da App Engine NDB a Cloud NDB.
Immagini
Puoi pubblicare le immagini da Cloud Storage, pubblicarle direttamente o utilizzare una rete CDN (Content Delivery Network) di terze parti.
Per ridimensionare, convertire e manipolare le immagini, utilizza una libreria di elaborazione delle immagini come Pillow o un'interfaccia Python per ImageMagick.
Per utilizzare una di queste librerie di terze parti, aggiungila come dipendenza e aggiorna il codice in modo da chiamare le API della libreria.
Il servizio App Engine Images forniva anche la funzionalità per evitare richieste dinamiche alla tua applicazione gestendo il ridimensionamento delle immagini utilizzando un URL di pubblicazione. Se vuoi una funzionalità simile, puoi generare le immagini ridimensionate in anticipo e caricarle su Cloud Storage per la pubblicazione. In alternativa, puoi utilizzare un servizio di rete CDN (Content Delivery Network) di terze parti che offra il ridimensionamento delle immagini.
Logging
Ti consigliamo di aggiornare l'app in modo da utilizzare Cloud Logging, che supporta funzionalità come la visualizzazione dei log in Esplora log, il download dei log, il filtraggio dei messaggi in base alla gravità e la correlazione dei messaggi dell'app con richieste specifiche. In alternativa, se preferisci la semplicità all'accuratezza dei dati, puoi scrivere log strutturati in stdout
o stderr
.
Per ulteriori informazioni, consulta Scrittura e visualizzazione dei log e Eseguire la migrazione a Cloud Logging.
Posta
Per inviare email, utilizza un provider di posta di terze parti come SendGrid, Mailgun o Mailjet. Tutti questi servizi offrono API per inviare email dalle applicazioni. Al momento non è disponibile un'alternativa di terze parti consigliata per i messaggi in entrata.
Memcache
Per memorizzare nella cache i dati dell'applicazione, utilizza Memorystore for Redis.
Per informazioni dettagliate, vedi Eseguire la migrazione di Memcache in Memorystore. Per simulare questa migrazione, aggiungi l'utilizzo di Memcache a un'app di esempio ed esegui la migrazione a Memorystore for Redis.
Per le app che utilizzano Memcache solo per ridurre la latenza per le richieste NDB (o Cloud NDB), utilizza il supporto integrato di Cloud NDB per Redis anziché Memcache o Memorystore per Redis.
Moduli
Per ottenere informazioni e modificare i servizi in esecuzione dell'applicazione, utilizza una combinazione di variabili di ambiente e l'API App Engine Admin:
Informazioni sul servizio | Come accedere |
---|---|
ID applicazione corrente | Variabile di ambiente GAE_APPLICATION |
ID progetto attuale | Variabile di ambiente GOOGLE_CLOUD_PROJECT |
Nome servizio attuale | Variabile di ambiente GAE_SERVICE |
Versione attuale del servizio | Variabile di ambiente GAE_VERSION |
ID istanza attuale | Variabile di ambiente GAE_INSTANCE |
Nome host predefinito | Metodo apps.get dell'API Admin |
Elenco di servizi | Metodo apps.services.list dell'API Admin |
Elenco delle versioni di un servizio | Metodo apps.services.versions.list dell'API Admin |
Versione predefinita per un servizio, incluse eventuali suddivisioni del traffico | Metodo apps.services.get dell'API Admin |
Elenco di istanze in esecuzione per una versione | Metodo apps.services.versions.instances.list dell'API Admin |
Per ulteriori informazioni sui dati disponibili sui servizi in esecuzione della tua applicazione, consulta Python 3 ambiente di runtime.
Spazi dei nomi
L'API Namespaces consente alle app multitenant di partizionare i dati tra i tenant semplicemente specificando una stringa dello spazio dei nomi univoca per ogni tenant.
Sebbene Datastore supporti direttamente la multitenancy, altri Google Cloud servizi non lo fanno. Se la tua app multitenant utilizza altri Google Cloud servizi, dovrai gestire la multitenancy manualmente. Per avere istanze di servizi completamente isolate, puoi creare nuovi progetti in modo programmatico utilizzando l'API Cloud Resource Manager e accedere alle risorse tra i progetti.
OAuth
Anziché utilizzare il servizio OAuth di App Engine per verificare i token OAuth 2.0,
utilizza il metodo
oauth2.tokeninfo
dell'API OAuth 2.0.
Cerca
Ospita qualsiasi database di ricerca a testo intero, come Elasticsearch, su Compute Engine e accedevi dal tuo servizio.
Coda di attività
Il servizio App Engine Task Queue è disponibile in due modalità diverse. La migrazione da uno dei due punti di riferimento avviene verso due diversi prodotti Cloud autonomi.
Attività push
Anziché utilizzare il servizio di push delle attività della coda di App Engine per l'esecuzione asincrona del codice, utilizza le librerie client di Cloud Tasks con un endpoint dell'ambiente standard Python 3 come target. Per maggiori informazioni, consulta Migrazione delle code push a Cloud Tasks.
Per simulare questa migrazione con un'app di esempio, consulta Come utilizzare le code push di App Engine nelle app Flask ed Eseguire la migrazione a Cloud Tasks.
Attività pull
Se utilizzi il servizio di attività pull di code di lavoro, ad esempio per mettere in coda attività o messaggi da elaborare da worker distinti, Cloud Pub/Sub può essere una buona alternativa. Offre funzionalità e garanzie di invio simili. Come altri servizi cloud, Pub/Sub fornisce comode librerie client per accedere al servizio. Per ulteriori informazioni, consulta la sezione Scrittura di messaggi Cloud Pub/Sub e risposta a questi messaggi e la guida alla migrazione delle attività pull della coda di lavoro a Pub/Sub.
Per simulare questa migrazione con un'app di esempio, consulta l'articolo Come utilizzare le attività pull di App Engine in un'app di esempio e la migrazione a Pub/Sub.
Recupero URL
Per impostazione predefinita, il runtime di Python 2.7 utilizza il servizio di recupero URL per gestire le richieste HTTP(S) in uscita, anche se utilizzi le librerie Python standard per emettere queste richieste.
Se la tua app utilizza direttamente le API URL Fetch, ad esempio per effettuare richieste asincrone, ti consigliamo di eseguire la migrazione a una libreria Python standard come la libreria Requests.
Per ulteriori informazioni, consulta la sezione Eseguire la migrazione delle richieste in uscita.
Autenticazione degli utenti
Per un'alternativa all'API Users, utilizza uno dei meccanismi di autenticazione basati su HTTP descritti nella pagina Autenticazione utente.