L'ambiente flessibile di App Engine non fornisce le librerie API presenti nel 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
l'ambiente standard utilizza percorsi con /_ah/
per accedere a servizi specifici,
consulta la sezione per il servizio appropriato riportata di seguito.
Identità dell'app
Quando esegui l'esecuzione nell'ambiente flessibile, puoi utilizzare una combinazione le variabili di ambiente Servizio metadati 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 dei 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. Dopodiché potrai usare
GOOGLE_CLOUD_PROJECT
di variabile di ambiente della 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
per verificare le 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, App Engine
SystemProperty
Le API 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 maggiori dettagli sulle variabili di ambiente, consulta le pagine della panoramica del runtime o
Pagina di riferimento 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 Utilizzo di Cloud Storage
Funzionalità
Non esiste una funzionalità simile al servizio Funzionalità disponibile al di fuori dell'ambiente standard.
Websocket
L'ambiente flessibile di App Engine supporta i websocket. Per ulteriori informazioni, vedi Creazione di connessioni permanenti con WebSocket.
Firestore in modalità Datastore (Datastore)
Puoi accedere a Datastore da qualsiasi luogo utilizzando il 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 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 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 ha inoltre fornito la funzionalità per evitare le richieste dinamiche a gestire il ridimensionamento delle immagini con un URL disponibile per la pubblicazione. Se vuoi con una funzionalità simile, puoi generare in anticipo le immagini ridimensionate e caricarli in 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, il logging funziona automaticamente
un 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 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, consulta Scrittura dei log delle applicazioni.
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 da inviare email. 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 | 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 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, Datastore supporta la multitenancy diretta. 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 al momento non è disponibile al di fuori dell'ambiente flessibile. Puoi ospitare qualsiasi database di ricerca a testo intero come Apache Solr su Compute Engine o Elasticsearch Service su Elastic Cloud e accedervi sia dall'ambiente standard che dall'ambiente 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, non ci sono restrizioni di sandbox, quindi la tua app può utilizzare qualsiasi libreria HTTP per ottenere Funzionalità di recupero degli URL.
Se utilizzi Python, ti consigliamo di utilizzare Requests. Se usi Java, ti consigliamo di utilizzare 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 fornisce molte opzioni per l'autenticazione e l'autorizzazione dei .
- 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à Single Sign-On.
- OAuth 2.0 e OpenID Connect che forniscono l'identità federata del provider che preferisci. Google sta Un provider di identità OpenID Connect. Esistono anche diversi altri di Google Cloud.
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 principali differenze tra l'ambiente flessibile e il ambiente standard con linee guida per le applicazioni che utilizzano vedi Ambiente flessibile di App Engine per gli utenti dell'ambiente standard.