1. Wprowadzenie
Ostatnia aktualizacja: 11.05.2021
Co to jest Cloud SQL?
Cloud SQL to w pełni zarządzana usługa bazy danych ułatwiająca konfigurację i obsługę relacyjnych baz danych w Google Cloud Platform oraz zarządzanie i administrowanie nimi.
Co to jest Cloud Functions?
Cloud Functions to wymagające niewielu zasobów rozwiązanie obliczeniowe, które umożliwia programistom tworzenie samodzielnych funkcji o jednym przeznaczeniu, które reagują na zdarzenia w chmurze bez konieczności zarządzania serwerem lub środowiskiem wykonawczym.
Co utworzysz
W ramach tego ćwiczenia w Codelabs dowiesz się, jak napisać funkcję w Cloud Functions w Pythonie. Funkcja:
- Łączy się z instancją bazy danych Cloud SQL.
- Wysyła instrukcję wstawiania do tabeli w bazie danych.
Czego się nauczysz
- Jak uzyskać dostęp do interfejsu internetowego Cloud Functions za pomocą konsoli Google Cloud.
- Jak utworzyć funkcję w Cloud Functions.
- Jak przetestować funkcję w Cloud Functions.
- Jak nawiązać połączenie z instancją bazy danych Cloud SQL (MySQL lub PostgreSQL) za pomocą Pythona.
- Jak zapisać dane w bazie danych Cloud SQL za pomocą Pythona.
2. Wymagania
- Przeglądarka, na przykład Chrome lub Firefox.
- Projekt Google Cloud Platform zawierający instancję Cloud SQL.
- Jeśli nie masz jeszcze takiego konta, wykonaj czynności opisane w krótkim wprowadzeniu do MySQL lub PostgreSQL. Wykonaj wszystkie kroki oprócz czyszczenia.
- Twoja instancja zawiera bazę danych MySQL lub PostgreSQL z tabelą.
- Nazwa połączenia instancji, nazwy bazy danych i tabel, nazwa użytkownika bazy danych oraz hasło użytkownika.
- konto usługi z przypisaną rolą klienta Cloud SQL;
3. Przygotowanie kodu i tworzenie funkcji
Przygotowywanie kodu
Kod funkcji w Cloud Functions pozwalający nawiązać połączenie z bazą danych Cloud SQL. Niektóre wartości zmiennych zależą od tego, czy baza danych Cloud SQL to MySQL czy PostgreSQL, oraz od informacji z Twojej własnej bazy danych.
Interfejs Cloud Functions w konsoli Cloud zawiera edytor tekstu. Możesz tam skopiować, wkleić i edytować kod lub najpierw zmodyfikować go lokalnie, a potem skopiować i wkleić w interfejsie użytkownika.
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'
Tworzenie funkcji
- W przeglądarce otwórz interfejs konsoli Google Cloud Platform.
- Z menu nawigacyjnego wybierz Cloud Functions.
- Na pasku przycisków kliknij UTWÓRZ FUNKCJĘ.
- Wpisz nazwę funkcji.
- Wybierz regułę HTTP. (Zanotuj adres URL wyświetlany pod elementem reguły. Będzie on w formacie: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME).
- W sekcji Uwierzytelnianie wybierz Zezwalaj na nieuwierzytelnione wywołania, aby funkcja była publiczna.
- Rozwiń Ustawienia środowiska wykonawczego, kompilacji i połączeń. W sekcji Konto usługi środowiska wykonawczego wybierz konto usługi z przypisaną rolą Klient Cloud SQL.
- Kliknij przycisk DALEJ.
- Jako opcję środowiska wykonawczego wybierz Python 3.7.
- Jako opcję Kod źródłowy wybierz Edytor wbudowany.
- W oknach edytora kodu źródłowego usuń istniejącą zawartość zarówno z pliku requirements.txt, jak i main.py, a następnie zastąp ją zmodyfikowanymi wersjami kodu powyżej.
- Wpisz insert jako nazwę punktu wejścia.
- Kliknij Wdróż i poczekaj na utworzenie funkcji. Wskaźnik przestanie się obracać, a na kolejnej stronie pojawi się zielony znacznik wyboru, gdy funkcja będzie gotowa do użycia.
4. Testowanie funkcji
- W przeglądarce otwórz interfejs konsoli Google Cloud Platform.
- Z menu nawigacyjnego wybierz Cloud Functions.
- Kliknij nazwę utworzonej wcześniej funkcji.
- Kliknij link TESTOWANIE na środku strony.
- Wybierz PRZETESTUJ FUNKCJĘ.
- Wynik powinien wyświetlić się: ok (jeśli test się nie powiedzie, zobaczysz zrzut stosu, który pomoże w debugowaniu).
- W przeglądarce otwórz adres URL zapisany wcześniej podczas tworzenia funkcji. Jeśli zapomnisz zapisać URL, możesz go uzyskać, klikając link AKTYWUJ.
- Wynik ok również powinien pojawić się w przeglądarce.
5. Czyszczenie danych
Wykonaj te czynności, aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym ćwiczeniu z programowania.
Usuwanie instancji Cloud SQL
- W konsoli Google Cloud otwórz stronę instancji Cloud SQL.
- Wybierz utworzoną instancję, aby otworzyć stronę Szczegóły instancji.
- Na pasku ikon u góry strony kliknij Usuń.
- W oknie „Usuń instancję” wpisz nazwę swojej instancji, a następnie kliknij Usuń, aby usunąć instancję. Po usunięciu instancji nie możesz ponownie użyć jej nazwy przez około 7 dni.
Usuwanie funkcji w Cloud Functions
- W konsoli Google Cloud otwórz stronę Cloud Functions.
- Kliknij 3 kropki w sekcji Działania przy odpowiedniej funkcji i wybierz Usuń.
- Potwierdź usunięcie, klikając przycisk USUŃ.
6. Gratulacje
Gratulujemy! Udało Ci się utworzyć funkcję w Cloud Functions, która współpracuje z Cloud SQL.
Utworzyliśmy funkcję w Cloud Functions, która łączy się z instancją bazy danych Cloud SQL i zapisuje w niej dane.
7. Co dalej?
Zapoznaj się z tymi ćwiczeniami z programowania...
- Łączenie z Cloud SQL: Compute Engine, prywatny adres IP i serwer proxy Cloud SQL
- Wprowadzenie do statystyk Cloud SQL