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 Pythonndb
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.
Cerca
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:
- Google Identity Platform, che offre molte opzioni per l'autenticazione e l'autorizzazione degli account utente Google.
- Firebase Authentication, che fornisce l'autenticazione tramite nome utente/password e identità federata utilizzando Google, Facebook, Twitter e altre piattaforme.
- Auth0, che fornisce l'autenticazione con vari provider di identità e funzionalità Single Sign-On.
- OAuth 2.0 e OpenID Connect che forniscono un'identità federata dal provider di tua scelta. Google è un provider di identità OpenID Connect. Sono disponibili anche altri fornitori.
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.