L'ambiente flessibile di App Engine non fornisce le librerie API presenti nell'SDK 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 servizi e API disponibili in tutti Google Cloud gli ambienti.
Consulta le sezioni seguenti per istruzioni su come eseguire la migrazione di API e servizi in bundle legacy specifici 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 vengono 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à dell'app
| 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 del service account 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_PROJECTnella tua applicazione come nome del bucket. - Non puoi firmare i blob con l'account di servizio predefinito. Puoi aggirare questo problema utilizzando l'API Identity and Access Management (IAM) o fornendo una chiave privata del service account alla tua applicazione durante il deployment.
- Allo stesso modo, non esiste un'API integrata per ottenere certificati pubblici per
verificare le firme. Tuttavia, i certificati pubblici di ogni service account
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.yamle utilizzareSystem.envper ottenere i valori, come descritto in Definizione delle variabili di ambiente.
Per ulteriori dettagli sulle variabili di ambiente, consulta le pagine di panoramica del runtime o la
pagina di riferimento app.yaml.
Thread in background
Poiché l'ambiente flessibile non ha limitazioni sandbox, puoi creare thread o processi che si trovano al di fuori dell'ambiente di richiesta. In genere non è necessario utilizzare altro che gli strumenti di threading o multiprocessing integrati nel 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 clientGoogle Cloud per archiviare e recuperare dati in Cloud Storage.
Per saperne di più, consulta Utilizzo di Cloud Storage.
Funzionalità
Al di fuori dell'ambiente standard non è disponibile alcuna funzionalità simile al servizio Capabilities.
Websocket
L'ambiente flessibile di App Engine supporta i websocket. Per saperne di più, consulta Creazione di connessioni persistenti con WebSocket.
Firestore in modalità Datastore (Datastore)
Puoi accedere a Datastore da qualsiasi luogo utilizzando l'API Datastore. Utilizza le Google Cloud librerie client per archiviare e recuperare i dati da Datastore.
Gli stessi dati Datastore sono disponibili indipendentemente dal fatto che utilizzi le librerie App Engine, le librerie client Google Cloud o chiami direttamente l'API.
Se utilizzi la libreria Python ndb e preferisci l'accesso a Datastore in stile NDB, ti consigliamo di eseguire la migrazione a Cloud NDB. Per ulteriori informazioni, consulta il repository Cloud NDB.
Sebbene le librerie client Cloud NDB e Datastore siano supportate su Python 2 e 3 e funzionino per l'ambiente standard o flessibile di App Engine, nonché per le app non App Engine, il loro scopo principale è aiutare gli sviluppatori Python 2 a non utilizzare più i servizi legacy in bundle come App Engine ndb.
Cloud NDB ha l'ulteriore obiettivo di preservare l'esperienza utente di NDB.
Per maggiori informazioni, consulta la sezione Utilizzo di Datastore.
Immagini
Il servizio Images 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 elaborare le 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 funzionalità per evitare richieste dinamiche alla tua applicazione gestendo il ridimensionamento delle immagini tramite 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 offre 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 sul logging delle applicazioni, la possibilità di raggruppare i log e di registrare metadati aggiuntivi, puoi utilizzare l'API Cloud Logging direttamente con le librerie clientGoogle Cloud .
Per maggiori dettagli, vedi Scrivere i log delle applicazioni.
Posta
Il servizio Mail di App Engine 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 inviare 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 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 dell'API App Engine Admin per ottenere informazioni e modificare i servizi in esecuzione della tua applicazione:
| 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 dei servizi | Metodo apps.services.list dell'API App Engine Admin |
| Elenco delle versioni per 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 delle istanze in esecuzione per una versione | Metodo apps.services.versions.instances.list dell'API App Engine Admin |
Puoi anche utilizzare l'API Admin di App Engine 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 app.yaml.
Spazi dei nomi
Al di fuori dell'ambiente standard, solo Datastore supporta il multitenancy direttamente. Per gli altri servizi, dovrai gestire manualmente il 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 i 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 backend, come Datastore, accessibili dall'ambiente flessibile sono accessibili 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 come Apache Solr su Compute Engine o Elasticsearch Service su Elastic Cloud e accedervi sia dall'ambiente standard che da quello flessibile.
Socket
L'ambiente flessibile non ha restrizioni della sandbox, quindi puoi aprire e utilizzare i socket in uscita normalmente.
Coda di attività
Per utilizzare il servizio di coda di attività push al di fuori dell'ambiente standard di prima generazione, puoi utilizzare Google Tasks.
In molti casi in cui potresti utilizzare le code pull, ad esempio per mettere in coda attività o messaggi che verranno recuperati ed elaborati da worker separati, Pub/Sub può essere una buona alternativa in quanto offre funzionalità e garanzie di consegna simili.
Recupero URL
Il servizio URL Fetch non è disponibile nell'ambiente flessibile. Tuttavia, non sono previste limitazioni per la sandbox, quindi la tua app può utilizzare qualsiasi libreria HTTP per ottenere la funzionalità di recupero 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 altro ancora.
- Auth0, che fornisce l'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 fornitori.
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 della tua 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.