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 principali 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
Quando esegui l'applicazione nell'ambiente flessibile, puoi utilizzare una combinazione di variabili di ambiente e il servizio di 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 App Engine Admin |
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 le credenziali dell'account di servizio di Compute Engine. |
Le seguenti funzionalità non sono disponibili direttamente:
- 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 all'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}
. - 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 recuperare i valori, come descritto in Definire le variabili di ambiente.
Per ulteriori dettagli sulle variabili di ambiente, consulta le pagine di 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 esterni all'ambiente della richiesta. In genere non è necessario utilizzare altro oltre agli strumenti di threading o multiprocessing integrati del linguaggio.
Archivio BLOB
L'utilizzo del servizio Blobstore è stato in gran parte sostituito sia nell'ambiente standard che in quello flessibile da Cloud Storage. Utilizza le librerie client Google Cloud per archiviare e recuperare i dati in Cloud Storage.
Per ulteriori informazioni, consulta Utilizzare Cloud Storage.
Funzionalità
Non è disponibile alcuna funzionalità simile al servizio Capabilities al di fuori dell'ambiente standard.
Websocket
L'ambiente flessibile di App Engine supporta i websocket. Per ulteriori informazioni, consulta la sezione Creare connessioni persistenti con WebSocket.
Firestore in modalità Datastore (Datastore)
Puoi accedere a Datastore da qualsiasi luogo 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 dall'utilizzo delle librerie App Engine, delle librerie client di Google Cloud o dalla chiamata diretta dell'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 repo Cloud NDB.
Sebbene entrambe le librerie client Cloud NDB e Datastore siano supportate su Python 2 e 3 e funzionino per l'ambiente standard o ambiente flessibile di App Engine, nonché per le app non App Engine, il loro scopo principale è aiutare gli sviluppatori di Python 2 a passare dai servizi legacy pacchettizzati come App Engine ndb
.
Cloud NDB ha l'obiettivo aggiuntivo di preservare l'esperienza utente di NDB.
Per ulteriori informazioni, consulta Utilizzare 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:
- Pillow per Python
- ImageJ2, imgscalr o thumbnailator per Java
- imaging per Go
- GD o ImageMagick per PHP
Il servizio Immagini 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 in anticipo le immagini ridimensionate 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.
Per altre risorse, consulta le seguenti guide:
Logging
Come nell'ambiente standard, la registrazione funziona automaticamente 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
vengono raccolti separatamente.
Se vuoi un maggiore controllo sui log delle applicazioni, la possibilità di raggruppare i log e di registrare metadati aggiuntivi, puoi utilizzare l'API Cloud Logging direttamente con le librerie client Google Cloud.
Per maggiori dettagli, vedi Scrivere log delle applicazioni.
Posta
Il servizio App Engine Mail non è disponibile al di fuori dell'ambiente standard. Per inviare email, dovrai utilizzare un provider di posta di terze parti come SendGrid, Mailgun o Mailjet. Tutti questi servizi offrono API per l'invio di email da applicazioni in esecuzione ovunque.
Per maggiori dettagli, vedi Invio di 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 for Redis.
Moduli
L'API Modules non è disponibile al di fuori dell'ambiente standard. Tuttavia, puoi utilizzare una combinazione di variabili di ambiente e l'API App Engine Admin per ottenere informazioni sui servizi in esecuzione della tua applicazione e modificarli:
Informazioni sul servizio | Come accedere |
---|---|
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 App Engine Admin |
Elenco di servizi | Metodo apps.services.list dell'API App Engine Admin |
Elenco delle versioni di un servizio | Metodo apps.services.versions.list dell'API App Engine Admin |
Versione predefinita per un servizio, incluse eventuali suddivisioni del traffico | Metodo apps.services.get dell'API App Engine Admin |
Elenco di istanze in esecuzione per una versione | Metodo apps.services.versions.instances.list dell'API App Engine Admin |
Puoi anche utilizzare l'API App Engine Admin per eseguire il deployment e gestire servizi e versioni nella tua applicazione.
Per ulteriori dettagli sulle variabili di ambiente, consulta le pagine di 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 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 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.
Remoto
Il servizio API remota non è applicabile all'ambiente flessibile. La maggior parte dei servizi di supporto, come Datastore, accessibili dall'ambiente flessibile è accessibile anche da qualsiasi luogo.
Cerca
Il servizio di ricerca non è al momento disponibile al di fuori dell'ambiente flessibile. Puoi ospitare qualsiasi database di ricerca full-text, ad esempio Apache Solr su Compute Engine o Elasticsearch Service su Elastic Cloud, ed accedervi sia dall'ambiente standard che da quello flessibile.
Socket
L'ambiente flessibile non ha limitazioni della sandbox, quindi puoi aprire e utilizzare normalmente i socket in uscita.
Coda di attività
Per utilizzare il servizio push Task Queue al di fuori dell'ambiente standard di prima generazione, puoi utilizzare Google Tasks.
In molti casi in cui potresti utilizzare code pull, ad esempio per 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 dell'URL non è disponibile nell'ambiente flessibile. Tuttavia, poiché non ci sono limitazioni della sandbox, la tua app può utilizzare qualsiasi libreria HTTP per ottenere la funzionalità di recupero dell'URL.
Se utilizzi Python, ti consigliamo di utilizzare Requests. 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. 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 altri servizi.
- Auth0, che fornisce l'autenticazione con vari provider di identità e funzionalità di Single Sign-On.
- OAuth 2.0 e OpenID Connect che forniscono l'identità federata del provider che preferisci. Google è un provider di identità OpenID Connect. Sono disponibili anche altri fornitori.
Tieni presente che, poiché il servizio Utenti non è disponibile, non è possibile utilizzare
appengine-web.xml
per Java o
app.yaml
per altri ambienti di runtime per rendere
gli URL accessibili solo agli 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 linee guida per le applicazioni che utilizzano entrambi gli ambienti, consulta Ambiente flessibile di App Engine per gli utenti dell'ambiente standard.