L'ambiente flessibile di App Engine non fornisce le librerie API presenti nell'SDK di App Engine. Se decidi di eseguire la migrazione della tua 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 API e servizi legacy specifici in bundle dall'ambiente standard all'ambiente flessibile.
Differenze tra l'ambiente standard e l'ambiente flessibile
Oltre alle differenze chiave descritte qui, i percorsi con /_ah/
non sono bloccati nell'ambiente flessibile. Se la tua app
nell'ambiente standard utilizza percorsi con /_ah/
per accedere a servizi specifici,
consulta la sezione relativa al servizio appropriato di seguito.
Identità app
Durante l'esecuzione nell'ambiente flessibile, puoi utilizzare una combinazione di variabili di ambiente e del servizio metadati Compute Engine per ottenere informazioni sull'applicazione:
Informazioni sull'applicazione | Come accedere |
---|---|
ID applicazione / progetto | La variabile di ambiente GOOGLE_CLOUD_PROJECT o la risorsa /project/project-id nel server dei metadati |
Nome host predefinito | Metodo API App Engine Admin apps.get |
Nome account di servizio | La risorsa /instance/service-accounts nel server dei metadati |
Token di accesso OAuth 2.0 | La risorsa /instances/service-accounts nel server dei metadati. Consulta la documentazione sull'autenticazione con le credenziali degli account di servizio di Compute Engine |
La seguente funzionalità non è direttamente disponibile:
- Non esiste un bucket Cloud Storage predefinito per il tuo progetto. Per utilizzare un bucket nella tua applicazione, puoi creare un bucket 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 puoi firmare i blob con l'account di servizio predefinito. Puoi risolvere il problema utilizzando l'API Identity and Access Management (IAM) o fornendo una chiave privata dell'account di servizio alla tua applicazione durante il deployment.
- Allo stesso modo, 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}
. - Tieni presente che se utilizzi il runtime Java, le API SystemProperty di App Engine non sono disponibili per l'ambiente flessibile di App Engine. Tuttavia, puoi impostare le variabili di ambiente in
app.yaml
e utilizzareSystem.env
per ottenere i valori, come descritto in Definizione delle variabili di ambiente.
Per ulteriori dettagli sulle variabili di ambiente, consulta le pagine della panoramica del runtime o la pagina di riferimento di app.yaml
.
Thread in background
Poiché l'ambiente flessibile non ha limitazioni della sandbox, puoi creare thread o processi al di fuori dell'ambiente di richiesta. In genere, non è necessario utilizzare strumenti diversi dagli strumenti di threading o multielaborazione integrati nella lingua.
Archivio BLOB
L'utilizzo del servizio Blobstore è stato in gran parte sostituito sia nell'ambiente standard che nell'ambiente flessibile da Cloud Storage. Utilizza le librerie client di Google Cloud per archiviare e recuperare i dati in Cloud Storage.
Per ulteriori informazioni, consulta Utilizzo di Cloud Storage
Funzionalità
Non esiste una funzionalità simile al servizio Capabilities disponibile al di fuori dell'ambiente standard.
Websocket
L'ambiente flessibile di App Engine supporta i socket web. Per ulteriori informazioni, consulta Creazione di connessioni permanenti con WebSocket.
Firestore in modalità Datastore (Datastore)
Puoi accedere al Datastore ovunque ti trovi utilizzando l'API Datastore. Utilizza le librerie client di Google Cloud per archiviare e recuperare i dati da Datastore.
Gli stessi dati di Datastore sono disponibili indipendentemente dal fatto che utilizzi le librerie App Engine, le librerie client di Google Cloud o se chiami direttamente l'API.
Se utilizzi la libreria Python ndb
e preferisci l'accesso a Datastore in stile NDB, ti invitiamo a eseguire la migrazione a Cloud NDB. Per ulteriori informazioni, consulta il repository Cloud NDB.
Sebbene le librerie client di Cloud NDB e Datastore siano supportate in Python 2 e 3 e funzionino per l'ambiente standard di App Engine o per l'ambiente flessibile, oltre che per le app non App Engine, il loro scopo principale è aiutare gli sviluppatori Python 2 a abbandonare i servizi legacy in bundle come App Engine ndb
.
Cloud NDB ha l'obiettivo aggiuntivo di preservare l'esperienza utente di NDB.
Per ulteriori informazioni, consulta Utilizzo di Datastore.
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.
Se devi eseguire l'elaborazione delle immagini, puoi installare e utilizzare qualsiasi libreria di elaborazione delle immagini, ad esempio:
- Cuscino per Python
- ImageJ2, imgscalr o thumbnailator per Java
- imaging per Go
- GD o ImageMagick per PHP
Il servizio Google Immagini ha anche fornito una funzionalità per evitare richieste dinamiche all'applicazione gestendo il ridimensionamento delle immagini con un URL di pubblicazione. Se vuoi una funzionalità simile, puoi generare in anticipo le immagini ridimensionate e caricarle in Cloud Storage per la pubblicazione. In alternativa, puoi utilizzare un servizio di rete CDN (Content Delivery Network) di terze parti che offre il ridimensionamento delle immagini.
Per ulteriori risorse, consulta le seguenti guide:
Logging
Come l'ambiente standard, il logging funziona automaticamente nell'ambiente flessibile. Tuttavia, i log vengono raccolti in un formato diverso.
I log non verranno raggruppati dalle richieste e i log di stdout
e stderr
vengono raccolti separatamente.
Se vuoi un maggiore controllo sul logging delle applicazioni, sulla possibilità di raggruppare i log e di registrare metadati aggiuntivi, puoi utilizzare l'API Cloud Logging direttamente con le librerie client di Google Cloud.
Per maggiori dettagli, vedi Scrittura dei log delle applicazioni.
Il servizio di posta di App Engine non è disponibile al di fuori dell'ambiente standard. Per inviare le email, devi utilizzare un provider di posta di terze parti come SendGrid, Mailgun o Mailjet. Tutti questi servizi offrono API per inviare email da applicazioni eseguite ovunque.
Per maggiori dettagli, vedi Inviare messaggi con servizi di terze parti.
Memcache
Il servizio Memcache non è disponibile nell'ambiente flessibile di App Engine. Per memorizzare nella cache i dati dell'applicazione, utilizza Memorystore per Redis.
Moduli
L'API Modules non è disponibile al di fuori dell'ambiente standard. Tuttavia, puoi utilizzare una combinazione di variabili di ambiente e dell'API App Engine Admin per ottenere informazioni sui servizi in esecuzione della tua applicazione e modificarli:
Informazioni sul servizio | Come accedere |
---|---|
Nome attuale del servizio | GAE_SERVICE variabile di ambiente |
Versione attuale del servizio | GAE_VERSION variabile di ambiente |
ID istanza attuale | GAE_INSTANCE variabile di ambiente |
Nome host predefinito | Metodo API App Engine Admin apps.get |
Elenco dei servizi | Metodo API App Engine Admin apps.services.list |
Elenco delle versioni di un servizio | Metodo API App Engine Admin apps.services.versions.list |
Versione predefinita per un servizio, incluse eventuali suddivisioni del traffico | Metodo API App Engine Admin apps.services.get |
Elenco di istanze in esecuzione per una versione | Metodo API App Engine Admin apps.services.versions.instances.list |
Puoi inoltre utilizzare l'API App Engine Admin per deploy e gestire i servizi e le versioni della tua applicazione.
Per ulteriori dettagli sulle variabili di ambiente, consulta le pagine della panoramica del runtime o la pagina di riferimento di app.yaml
.
Spazi dei nomi
Al di fuori dell'ambiente standard, solo Datastore supporta direttamente la multitenancy. Per gli altri servizi, dovrai gestire manualmente la multitenancy. 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 progetti.
OAuth
Il servizio OAuth non è disponibile nell'ambiente flessibile. Se devi verificare i token OAuth 2.0, puoi utilizzare il metodo oauth2.tokeninfo
dell'API OAuth 2.0.
Remoto
Il servizio API Remote non è applicabile all'ambiente flessibile. Anche la maggior parte dei servizi di supporto, come Datastore, che sono accessibili dall'ambiente flessibile è accessibile da qualsiasi luogo.
Ricerca
Al momento il servizio di ricerca non è disponibile al di fuori dell'ambiente flessibile. Puoi ospitare qualsiasi database di ricerca a testo intero come ElasticSearch su Compute Engine e accedervi sia dall'ambiente standard sia dall'ambiente flessibile.
Socket
L'ambiente flessibile non ha restrizioni sandbox, quindi puoi aprire e utilizzare normalmente i socket in uscita.
Coda di attività
Per utilizzare il servizio push della coda di attività al di fuori dell'ambiente standard di prima generazione, puoi utilizzare Google Tasks.
In molti casi in cui potresti utilizzare code in modalità pull, ad esempio per mettere in coda attività o messaggi che verranno pull ed elaborati da worker separati, Pub/Sub può essere una buona alternativa in quanto offre funzionalità simili e garanzie di consegna.
Recupero URL
Il servizio di recupero URL non è disponibile nell'ambiente flessibile. Tuttavia, non esistono limitazioni della sandbox, pertanto la tua app può utilizzare qualsiasi libreria HTTP per ottenere la funzionalità di recupero degli URL.
Se usi Python, ti consigliamo di usare le richieste. Se utilizzi Java, ti consigliamo di utilizzare la libreria client HTTP di Google per Java o OkHttp.
Utenti
Il servizio Utenti non è disponibile al di fuori dell'ambiente standard. Nell'ambiente flessibile puoi utilizzare qualsiasi meccanismo di autenticazione basato su HTTP, 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 mediante nome utente/password e identità federata tramite Google, Facebook, Twitter e altro ancora.
- Auth0, che fornisce autenticazione con vari provider di identità e funzionalità Single Sign-On.
- OAuth 2.0 e OpenID Connect che forniscono l'identità federata dal provider di tua scelta. Google è un provider di identità OpenID Connect. Sono disponibili anche diversi altri provider.
Tieni presente che, poiché il servizio Utenti non è disponibile, non è possibile utilizzare appengine-web.xml
per Java o app.yaml
per altri runtime per rendere gli URL accessibili solo agli amministratori. Dovrai gestire questa logica
all'interno dell'applicazione.
Passaggi successivi
Per una panoramica delle principali differenze tra l'ambiente flessibile e l'ambiente standard con linee guida per le applicazioni che utilizzano entrambi gli ambienti, consulta Ambiente flessibile di App Engine per gli utenti dell'ambiente standard.