1. Introduzione
Ultimo aggiornamento: 11/05/2021
Che cos'è Cloud SQL?
Cloud SQL è un servizio di database completamente gestito che semplifica la configurazione, la manutenzione, la gestione e l'amministrazione dei database relazionali su Google Cloud.
Che cos'è Cloud Functions?
Cloud Functions è una soluzione di calcolo leggera che consente agli sviluppatori di creare funzioni autonome a uso specifico, che rispondano a eventi Cloud senza la necessità di gestire un ambiente server o di runtime.
Cosa creerai
In questo codelab, scriverai una funzione Cloud Functions in Python. La funzione:
- Si connette a un'istanza di database Cloud SQL.
- Invia un'istruzione di inserimento a una tabella del database.
Cosa imparerai a fare
- Come accedere all'interfaccia utente web di Cloud Functions nella console Google Cloud.
- Come creare una funzione Cloud Functions.
- Come testare una funzione Cloud.
- Come connettersi a un'istanza di database Cloud SQL (MySQL o PostgreSQL) utilizzando Python.
- Come scrivere in un database Cloud SQL utilizzando Python.
2. Requisiti
- Un browser, ad esempio Chrome o Firefox.
- Un progetto Google Cloud che contiene l'istanza Cloud SQL.
- Se non ne hai ancora uno, puoi seguire i passaggi della guida rapida per MySQL o PostgreSQL. Esegui tutti i passaggi tranne la pulizia.
- L'istanza contiene un database MySQL o PostgreSQL con una tabella.
- Il nome della connessione all'istanza, i nomi del database e della tabella, il nome utente del database e la password dell'utente.
- Un service account con il ruolo Client Cloud SQL.
3. Prepara il codice e crea la funzione
Preparare il codice
Il codice della funzione Cloud per la connessione a un database Cloud SQL è disponibile qui. Alcuni valori delle variabili dipendono dal fatto che il database Cloud SQL sia MySQL o PostgreSQL e dalle informazioni del tuo database.
L'interfaccia utente di Cloud Functions nella console Cloud include un editor di testo. Puoi copiare/incollare e modificare il codice oppure modificarlo localmente e poi copiarlo/incollarlo nella UI.
requirements.txt
# This file tells Python which modules it needs to import
SQLAlchemy==1.3.12
# If your database is MySQL, uncomment the following line:
#PyMySQL==0.9.3
# If your database is PostgreSQL, uncomment the following line:
#pg8000==1.13.2
main.py
# This file contains all the code used in the codelab.
import sqlalchemy
# Depending on which database you are using, you'll set some variables differently.
# In this code we are inserting only one field with one value.
# Feel free to change the insert statement as needed for your own table's requirements.
# Uncomment and set the following variables depending on your specific instance and database:
#connection_name = ""
#table_name = ""
#table_field = ""
#table_field_value = ""
#db_name = ""
#db_user = ""
#db_password = ""
# If your database is MySQL, uncomment the following two lines:
#driver_name = 'mysql+pymysql'
#query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
# If your database is PostgreSQL, uncomment the following two lines:
#driver_name = 'postgres+pg8000'
#query_string = dict({"unix_sock": "/cloudsql/{}/.s.PGSQL.5432".format(connection_name)})
# If the type of your table_field value is a string, surround it with double quotes.
def insert(request):
request_json = request.get_json()
stmt = sqlalchemy.text('insert into {} ({}) values ({})'.format(table_name, table_field, table_field_value))
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query=query_string,
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
try:
with db.connect() as conn:
conn.execute(stmt)
except Exception as e:
return 'Error: {}'.format(str(e))
return 'ok'
Crea la funzione
- In un browser, vai alla UI della console di Google Cloud Platform.
- Seleziona Cloud Functions dal menu di navigazione.
- Fai clic su CREA FUNZIONE sulla barra dei pulsanti.
- Inserisci un nome per la funzione.
- Seleziona il trigger HTTP. Prendi nota dell'URL visualizzato sotto l'elemento trigger. Sarà nel formato: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
- In Autenticazione, seleziona Consenti chiamate non autenticate per rendere pubblica la funzione.
- Espandi Impostazioni di runtime, build e connessioni. In Service account di runtime, seleziona un service account con il ruolo Client Cloud SQL.
- Fai clic sul pulsante AVANTI.
- Seleziona Python 3.7 per l'opzione runtime.
- Seleziona Editor incorporato per l'opzione Codice sorgente.
- Nelle finestre dell'editor di codice sorgente, elimina i contenuti esistenti per requirements.txt e main.py e sostituiscili con le versioni modificate del codice riportato sopra.
- Inserisci insert come nome del punto di ingresso.
- Fai clic su Esegui il deployment e attendi la creazione della funzione. La rotellina smette di girare e nella pagina successiva viene visualizzato un segno di spunta verde quando la funzione è pronta per l'uso.
4. Testa la funzione
- In un browser, vai alla UI della console di Google Cloud Platform.
- Seleziona Cloud Functions dal menu di navigazione.
- Fai clic sul nome della funzione che hai creato in precedenza.
- Seleziona il link TEST al centro della pagina.
- Seleziona TESTA LA FUNZIONE.
- Il risultato dovrebbe essere ok. Se il test non riesce, viene visualizzata una traccia dello stack per facilitare il debug.
- In un browser, vai all'URL che hai salvato in precedenza, quando hai creato la funzione. Se hai dimenticato di salvare l'URL, puoi recuperarlo dal link TRIGGER.
- Anche il risultato ok dovrebbe essere visualizzato nel browser.
5. Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo codelab, segui questi passaggi.
Elimina l'istanza Cloud SQL
- Vai alla pagina Istanze Cloud SQL in Google Cloud Console.
- Seleziona l'istanza che hai creato per aprire la pagina Dettagli istanza.
- Nella barra delle icone nella parte superiore della pagina, fai clic su Elimina.
- Nella finestra Elimina istanza, digita il nome dell'istanza e fai clic su Elimina per eliminarla. Non puoi riutilizzare un nome di istanza per circa sette giorni dopo l'eliminazione dell'istanza.
Elimina la funzione Cloud Functions
- Vai alla pagina Cloud Functions nella console Google Cloud.
- Seleziona i tre puntini sotto Azioni per la tua funzione e scegli Elimina.
- Conferma l'eliminazione facendo clic sul pulsante ELIMINA.
6. Complimenti
Congratulazioni, hai creato una funzione Cloud che funziona con Cloud SQL.
Nello specifico, hai creato una Cloud Function che si connette e scrive a un'istanza di database Cloud SQL.
7. Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab…
- Connessione a Cloud SQL: Compute Engine, IP privato e Cloud SQL Proxy
- Introduzione a Cloud SQL Insights