Migrazione dei servizi dall'ambiente standard all'ambiente flessibile

L'ambiente flessibile di App Engine non fornisce le librerie API presenti nell'SDK App Engine. Se decidi di eseguire la migrazione dell'applicazione dall'ambiente standard di App Engine all'ambiente flessibile, devi aggiornare il codice per utilizzare i servizi e le API disponibili in tutti gli ambienti Google Cloud.

Consulta le sezioni seguenti per istruzioni su come eseguire la migrazione di servizi e API specifici dall'ambiente standard all'ambiente flessibile.

Differenze tra l'ambiente standard e l'ambiente flessibile

Oltre alle differenze chiave descritte qui, nell'ambiente flessibile i percorsi con /_ah/ non sono bloccati. Se la tua applicazione nell'ambiente standard utilizza i percorsi con /_ah/ per accedere a servizi specifici, consulta la sezione per il servizio appropriato di seguito.

Identità dell'app

Durante l'esecuzione nell'ambiente flessibile, puoi utilizzare una combinazione di variabili di ambiente e servizio Metadati di Compute Engine per ottenere informazioni sulla tua applicazione:

Informazioni sull'applicazione Come accedere
ID applicazione / progetto La variabile di ambiente GOOGLE_CLOUD_PROJECT o la risorsa /project/project-id nel server di metadati
Nome host predefinito Metodo apps.get dell'API Admin di App Engine
Nome account di servizio La risorsa /instance/service-accounts nel server di metadati
Token di accesso OAuth 2.0 La risorsa /instances/service-accounts nel server di metadati. Consulta la documentazione sull'autenticazione con credenziali dell'account di servizio di Compute Engine.

Le seguenti funzionalità non sono direttamente disponibili:

  • Non esiste un bucket Cloud Storage predefinito per il tuo progetto. Per utilizzare un bucket nella tua applicazione, puoi creare un bucket di Cloud Storage e utilizzare l'ID progetto come nome del bucket. Puoi quindi utilizzare la variabile di ambiente GOOGLE_CLOUD_PROJECT nella tua applicazione come nome del bucket.
  • Non è possibile firmare blob con l'account di servizio predefinito. Per ovviare a questo problema, utilizza l'API Identity and Access Management (IAM) o fornisci una chiave privata dell'account di servizio alla tua applicazione durante il deployment.
  • Analogamente, non esiste un'API integrata per ottenere certificati pubblici per la verifica delle firme. Tuttavia, i certificati pubblici di ogni account di servizio sono disponibili all'indirizzo https://www.googleapis.com/robot/v1/metadata/x509/{service account email}.

Thread di sfondo

Poiché l'ambiente flessibile non ha limitazioni di sandbox, puoi creare thread o processi al di fuori dell'ambiente della richiesta. In genere, non sono necessari utilizzi diversi dagli strumenti integrati di thread o multielaborazione della lingua.

Archivio BLOB

L'utilizzo del servizio Blobstore è stato ampiamente sostituito nell'ambiente standard e in quello flessibile da Cloud Storage. Utilizza le librerie client di Google Cloud per archiviare e recuperare i dati in Cloud Storage.

Per ulteriori informazioni, consulta la seguente guida:

Competenze

Non sono disponibili funzionalità simili al servizio Funzionalità al di fuori dell'ambiente standard.

Websocket

L'ambiente flessibile di App Engine supporta i socket web. Per ulteriori informazioni, consulta le seguenti guide:

Datastore

Puoi accedere a Datastore ovunque ti trovi utilizzando l'API Datastore. Utilizza le librerie client di Google Cloud per archiviare e recuperare dati da Datastore.

Gli stessi dati di Datastore sono disponibili indipendentemente dal fatto che utilizzi le librerie di App Engine, le librerie client di Google Cloud o chiamino direttamente l'API.

Se utilizzi la libreria Python ndb e preferisci l'accesso al datastore in stile NDB, ti invitiamo a eseguire la migrazione a Cloud NDB. Per ulteriori informazioni, consulta il repository di Cloud NDB.

Sia le librerie client di Cloud NDB che quelle di Datastore sono supportate su Python 2 e 3 e funzionano per l'ambiente standard o l'ambiente flessibile di App Engine e per le app non App Engine, il loro scopo principale è aiutare gli sviluppatori Python a uscire dai servizi legacy integrati come App Engine ndb. Cloud NDB ha l'obiettivo aggiuntivo di preservare l'esperienza utente di NDB.

Per ulteriori informazioni, consulta la seguente guida:

Immagini

Il servizio Immagini non è disponibile al di fuori dell'ambiente standard. Tuttavia, puoi pubblicare facilmente le immagini direttamente dalla tua applicazione o direttamente da Cloud Storage.

Per eseguire l'elaborazione delle immagini, puoi installare e utilizzare qualsiasi libreria di elaborazione delle immagini, come Cuscino.

Il servizio Immagini ha anche fornito la funzionalità per evitare richieste dinamiche alla tua applicazione gestendo il ridimensionamento delle immagini utilizzando un URL di pubblicazione. Se vuoi funzionalità simili, puoi generare le immagini ridimensionate in anticipo e caricarle in Cloud Storage per la pubblicazione. In alternativa, puoi utilizzare un servizio CDN (Content Delivery Network) di terze parti che consente il ridimensionamento delle immagini.

Per ulteriori risorse, consulta le seguenti guide:

Logging

Come l'ambiente standard, il logging funziona automaticamente anche nell'ambiente flessibile. Tuttavia, i log vengono raccolti in un formato diverso. I log non verranno raggruppati per richieste e i log di stdout e stderr verranno raccolti separatamente.

Se vuoi un maggiore controllo sul logging delle applicazioni, sulla possibilità di raggruppare i log e sulla possibilità di registrare metadati aggiuntivi, puoi utilizzare l'API Cloud Logging direttamente con le librerie client di Google Cloud.

Per ulteriori dettagli, consulta la seguente guida:

Posta

Il servizio di posta di App Engine non è disponibile al di fuori dell'ambiente standard. Dovrai utilizzare un provider di posta di terze parti come SendGrid, Mailgun o Mailjet per inviare email. Tutti questi servizi offrono API per l'invio di email da applicazioni in esecuzione in qualunque ambiente.

Le seguenti guide mostrano come utilizzare questi servizi con l'ambiente flessibile:

Memcache

Il servizio memcache non è disponibile nell'ambiente flessibile di App Engine. Per memorizzare nella cache i dati delle applicazioni, utilizza Memorystore for Redis.

Moduli

L'API Modules non è disponibile al di fuori dell'ambiente standard. Tuttavia, puoi utilizzare una combinazione di variabili di ambiente e API Admin di App Engine per ottenere informazioni e modificare i servizi in esecuzione dell'applicazione:

Informazioni sul servizio Come accedere
Nome servizio attuale GAE_SERVICE variabile di ambiente
Versione attuale del servizio GAE_VERSION variabile di ambiente
ID istanza corrente GAE_INSTANCE variabile di ambiente
Nome host predefinito Metodo apps.get dell'API Admin di App Engine
Elenco di servizi Metodo apps.services.list dell'API Admin di App Engine
Elenco delle versioni di un servizio Metodo apps.services.versions.list dell'API Admin di App Engine
Versione predefinita per un servizio, incluse eventuali suddivisioni del traffico Metodo apps.services.get dell'API Admin di App Engine
Elenco di istanze in esecuzione per una versione Metodo apps.services.versions.instances.list dell'API Admin di App Engine

Puoi utilizzare l'API Admin di App Engine anche per eseguire il deployment e gestire servizi e versioni nella tua applicazione.

Spazi dei nomi

Al di fuori dell'ambiente standard, solo Datastore supporta la multitenancy direttamente. Per gli altri servizi, dovrai gestire manualmente l'architettura multi-tenancy. Per avere istanze completamente separate dei servizi, puoi creare nuovi progetti a livello di programmazione utilizzando l'API Cloud Resource Manager e accedere alle risorse di più progetti.

OAuth

Il servizio OAuth non è disponibile nell'ambiente flessibile. Se devi verificare i token OAuth 2.0, puoi farlo con il metodo oauth2.tokeninfo dell'API OAuth 2.0.

Telecomando

Il servizio API Remote non è applicabile all'ambiente flessibile. La maggior parte dei servizi di backup, ad esempio Datastore, accessibili dall'ambiente flessibile è accessibile anche da qualsiasi luogo.

Il servizio di ricerca al momento non è disponibile al di fuori dell'ambiente flessibile. Puoi ospitare qualsiasi database di ricerca a testo intero come ElasticSearch su Compute Engine e accedervi dall'ambiente standard e dall'ambiente flessibile.

Socket

L'ambiente flessibile non ha limitazioni di sandbox, quindi puoi aprire e utilizzare normalmente i socket in uscita.

Coda di attività

Per utilizzare il servizio coda delle attività push al di fuori dell'ambiente standard di prima generazione, puoi utilizzare Tasks.

In molti casi in cui puoi utilizzare le code in modalità pull, come mettere in coda attività o messaggi che verranno estratti ed elaborati da worker separati, Pub/Sub può essere una buona alternativa in quanto offre funzionalità e garanzie di recapito simili.

Recupero URL

Il servizio di recupero URL non è disponibile nell'ambiente flessibile. Tuttavia, non ci sono limitazioni della sandbox, pertanto la tua app può utilizzare qualsiasi libreria HTTP per ottenere la funzionalità di recupero degli URL. Consigliamo di utilizzare Richieste.

Utenti

Il servizio Utenti non è disponibile al di fuori dell'ambiente standard. Puoi utilizzare qualsiasi meccanismo di autenticazione basato su HTTP nell'ambiente flessibile, ad esempio:

Tieni presente che, poiché il servizio Users non è disponibile, non è possibile utilizzare app.yaml per rendere gli URL accessibili solo dagli amministratori. Dovrai gestire questa logica all'interno della tua applicazione.

Passaggi successivi

Per una panoramica delle differenze principali tra l'ambiente flessibile e l'ambiente standard con le linee guida per le applicazioni che utilizzano entrambi gli ambienti, consulta la pagina dedicata all'ambiente flessibile di App Engine per gli utenti dell'ambiente standard di App Engine.