Herstellen einer Verbindung zu Cloud SQL mit Cloud-Funktionen

Letzte Aktualisierung: 2021-05-11

Was ist Cloud SQL?

Cloud SQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie Ihre relationalen Datenbanken auf der Google Cloud Platform einfach einrichten, warten, verwalten und verwalten können.

Was sind Cloud-Funktionen?

Cloud Functions ist eine einfache Rechenlösung für Entwickler, mit der sie eigenständige Einzelfunktionen erstellen können, die auf Cloud-Ereignisse reagieren, ohne einen Server oder eine Laufzeitumgebung verwalten zu müssen.

Was du bauen wirst

In diesem Codelab schreiben Sie eine Cloud-Funktion in Python. Die Funktion:

  • Stellt eine Verbindung zu einer Cloud SQL-Datenbankinstanz her.
  • Sendet eine Einfügeanweisung an eine Tabelle in der Datenbank.

Was du lernen wirst

  • So greifen Sie auf die Webfunktion der Cloud-Funktionen in der Google Cloud Console zu.
  • So erstellen Sie eine Cloud-Funktion.
  • So testen Sie eine Cloud-Funktion.
  • So stellen Sie mit Python eine Verbindung zu einer Cloud SQL-Datenbankinstanz (entweder MySQL oder PostgreSQL) her.
  • So schreiben Sie mit Python in eine Cloud SQL-Datenbank.
  • Ein Browser wie Chrome oder Firefox .
  • Ein Google Cloud Platform-Projekt, das Ihre Cloud SQL-Instanz enthält.
  • Wenn Sie noch keinen haben, können Sie die Schritte im Schnellstart für MySQL oder PostgreSQL ausführen . Führen Sie alle Schritte außer dem Aufräumen aus.
  • Ihre Instanz enthält eine MySQL- oder PostgreSQL-Datenbank mit einer Tabelle.
  • Der Name Ihrer Instanzverbindung, die Datenbank- und Tabellennamen, der Datenbankbenutzername und das Kennwort des Benutzers.
  • Ein Dienstkonto mit der Cloud SQL Client- Rolle.

Bereiten Sie den Code vor

Der Cloud-Funktionscode für die Verbindung zu einer Cloud SQL-Datenbank finden Sie hier. Einige der Variablenwerte hängen davon ab, ob Ihre Cloud SQL-Datenbank MySQL oder PostgreSQL ist, und hängen von Ihren eigenen Datenbankinformationen ab.

Die Benutzeroberfläche für Cloud-Funktionen in der Cloud-Konsole enthält einen Texteditor. Sie können den Code dort kopieren / einfügen und bearbeiten oder ihn zuerst lokal bearbeiten und dann in die Benutzeroberfläche kopieren / einfügen.

Anforderungen.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'

Erstellen Sie die Funktion

  1. Wechseln Sie in einem Browser zur Benutzeroberfläche der Google Cloud Platform Console .
  2. Wählen Sie im Navigationsmenü die Option Cloud-Funktionen .
  3. Klicken Sie in der Schaltflächenleiste auf FUNKTION ERSTELLEN .
  4. Geben Sie einen Namen für die Funktion ein.
  5. Wählen Sie den HTTP- Trigger. (Notieren Sie sich die URL, die unter dem Auslöseelement angezeigt wird. Sie hat das folgende Format: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME )
  6. Wählen Sie unter Authentifizierung die Option Nicht authentifizierte Aufrufe zulassen aus , um die Funktion öffentlich zu machen.
  7. Erweitern Sie die Einstellungen für Laufzeit, Build und Verbindungen. Wählen Sie unter Laufzeitdienstkonto ein Dienstkonto mit der Rolle Cloud SQL Client aus .
  8. Klicken Sie auf die Schaltfläche WEITER .
  9. Wählen Sie Python 3.7 als Laufzeitoption aus .
  10. Wählen Sie Inline-Editor für die Quellcode- Option.
  11. Selin Editor - Fenster , Quellcode, löschen Sie die vorhandenen Inhalte sowohl für requirements.txt und main.py, und ersetzen Sie sie mit Ihren bearbeiteten Versionen des Codes oben.
  12. Geben Sie insert als Namen des Einstiegspunkts ein.
  13. Klicken Sie auf Bereitstellen und warten Sie, während die Funktion erstellt wird. Der Spinner hört auf zu drehen und auf der folgenden Seite wird ein grüner Haken angezeigt, wenn die Funktion betriebsbereit ist.
  1. Wechseln Sie in einem Browser zur Benutzeroberfläche der Google Cloud Platform Console .
  2. Wählen Sie im Navigationsmenü die Option Cloud-Funktionen .
  3. Klicken Sie auf den Namen der zuvor erstellten Funktion.
  4. Wählen Sie den Link TESTING in der Mitte der Seite.
  5. Wählen Sie TEST THE FUNCTION .
  6. Das Ergebnis sollte folgendermaßen aussehen: ok (Wenn der Test fehlschlägt, wird eine Stapelverfolgung angezeigt, die beim Debuggen hilft.)
  7. Wechseln Sie in einem Browser zu der URL, die Sie zuvor beim Erstellen der Funktion gespeichert haben. Wenn Sie vergessen haben, die URL zu speichern, können Sie sie über den TRIGGER- Link abrufen .
  8. Das OK- Ergebnis sollte auch im Browser angezeigt werden.

Führen Sie die folgenden Schritte aus, um zu vermeiden, dass Ihrem Google Cloud-Konto Gebühren für die in diesem Codelab verwendeten Ressourcen entstehen.

Löschen Sie die Cloud SQL-Instanz

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen .
  2. Wählen Sie die Instanz aus, die Sie erstellt haben, um die Seite mit den Instanzdetails zu öffnen.
  3. Klicken Sie in der Symbolleiste oben auf der Seite auf Löschen .
  4. Geben Sie im Fenster Instanz löschen den Namen Ihrer Instanz ein und klicken Sie dann auf Löschen , um die Instanz zu löschen. Sie können einen Instanznamen nach dem Löschen einer Instanz etwa 7 Tage lang nicht wiederverwenden.

Löschen Sie die Cloud-Funktion

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud-Funktionen .
  2. Wählen Sie die drei Punkte unter Aktionen für Ihre Funktion aus und wählen Sie Löschen .
  3. Bestätigen Sie das Löschen durch die DELETE - Taste klicken.

Herzlichen Glückwunsch, Sie haben erfolgreich eine Cloud-Funktion erstellt, die mit Cloud SQL funktioniert.

Insbesondere haben Sie eine Cloud-Funktion erstellt, die eine Verbindung zu einer Cloud SQL-Datenbankinstanz herstellt und in diese schreibt.

Schauen Sie sich einige dieser Codelabs an ...

Weiterführende Literatur

Referenzdokumente