1. Wprowadzenie
Ostatnia aktualizacja: 2021-05-11
Co to jest Cloud SQL?
Cloud SQL to w pełni zarządzana usługa bazy danych, która ułatwia konfigurowanie, utrzymywanie, zarządzanie i administrowanie relacyjnymi bazami danych w Google Cloud Platform.
Co to jest Cloud Functions?
Cloud Functions to wymagające niewielu zasobów rozwiązanie do przetwarzania danych, które umożliwia programistom tworzenie samodzielnych funkcji o ściśle zdefiniowanym przeznaczeniu reagujących na zdarzenia w chmurze bez konieczności zarządzania serwerem lub środowiskiem wykonawczym.
Co utworzysz
W tym samouczku napiszesz funkcję w Cloud Functions w języku Python. Funkcja:
- Łączy się z instancją bazy danych Cloud SQL.
- Wysyła do tabeli w bazie danych instrukcję wstawiania.
Czego się nauczysz
- Jak uzyskać dostęp do interfejsu internetowego Cloud Functions w konsoli Google Cloud.
- Jak utworzyć funkcję w Cloud Functions.
- Jak przetestować funkcję w Cloud Functions.
- Jak połączyć się z instancją bazy danych Cloud SQL (MySQL lub PostgreSQL) za pomocą Pythona.
- Jak zapisywać dane w bazie danych Cloud SQL za pomocą Pythona.
2. Wymagania
- przeglądarka, np. Chrome lub Firefox;
- Projekt Google Cloud Platform, który zawiera instancję Cloud SQL.
- Jeśli jeszcze nie masz instancji, możesz wykonać czynności opisane w artykule krótkie wprowadzenie dotyczącym MySQL lub PostgreSQL. Wykonaj wszystkie czynności oprócz zwalniania miejsca.
- Instancja zawiera bazę danych MySQL lub PostgreSQL z tabelą.
- nazwę połączenia z instancją, nazwy bazy danych i tabeli, nazwę użytkownika bazy danych oraz hasło użytkownika;
- Konto usługi z rolą Klient Cloud SQL.
3. Przygotowywanie kodu i tworzenie funkcji
Przygotowywanie kodu
Kod Cloud Functions do łączenia się z bazą danych Cloud SQL znajdziesz tutaj. Niektóre wartości zmiennych zależą od tego, czy Twoja baza danych Cloud SQL to MySQL czy PostgreSQL, a także od informacji o Twojej bazie danych.
Interfejs Cloud Functions w konsoli Cloud zawiera edytor tekstu. Możesz tam skopiować i wkleić kod oraz go edytować lub najpierw edytować kod lokalnie, a potem skopiować go i wkleić w interfejsie.
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.
- W menu nawigacyjnym wybierz Cloud Functions.
- Na pasku przycisków kliknij UTWÓRZ FUNKCJĘ.
- Wpisz nazwę funkcji.
- Wybierz regułę HTTP. (Zanotuj adres URL wyświetlany pod elementem aktywatora. Będzie on miał format https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME.
- W sekcji Uwierzytelnianie wybierz Zezwalaj na nieuwierzytelnione wywołania, aby ustawić funkcję jako publiczną.
- Rozwiń Ustawienia środowiska wykonawczego, kompilacji i połączeń. W sekcji Konto usługi środowiska wykonawczego wybierz konto usługi, które ma rolę Klient Cloud SQL.
- Kliknij przycisk DALEJ.
- Wybierz Python 3.7 jako środowisko wykonawcze.
- W przypadku opcji kod źródłowy wybierz Edytor wbudowany.
- W oknach edytora kodu źródłowego usuń dotychczasową zawartość plików requirements.txt i main.py i zastąp ją zmodyfikowanymi wersjami kodu powyżej.
- Wpisz insert jako nazwę punktu wejścia.
- Kliknij Wdróż i poczekaj na utworzenie funkcji. Gdy funkcja będzie gotowa do użycia, spinner przestanie się obracać, a na następnej stronie pojawi się zielona ikona potwierdzenia.
4. Testowanie funkcji
- W przeglądarce otwórz interfejs konsoli Google Cloud Platform.
- W menu nawigacyjnym wybierz Cloud Functions.
- Kliknij nazwę utworzonej wcześniej funkcji.
- Kliknij link TESTOWANIE na środku strony.
- Kliknij PRZETESTUJ FUNKCJĘ.
- Powinien pojawić się wynik: ok. Jeśli test się nie powiedzie, zobaczysz zrzut stosu, który pomoże Ci w debugowaniu.
- W przeglądarce otwórz adres URL zapisany wcześniej podczas tworzenia funkcji. Jeśli nie udało Ci się zapisać adresu URL, możesz go uzyskać, klikając link TRIGGER (WYWOŁAJ).
- Wynik ok powinien pojawić się też w przeglądarce.
5. Czyszczenie danych
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, wykonaj te czynności.
Usuwanie instancji Cloud SQL
- W konsoli Google Cloud otwórz stronę Instancje 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ę instancji, a następnie kliknij Usuń, aby ją usunąć. 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 obok funkcji i wybierz Usuń.
- Aby potwierdzić usunięcie, kliknij przycisk USUŃ.
6. Gratulacje
Gratulacje, udało Ci się utworzyć funkcję w Cloud Functions, która współpracuje z Cloud SQL.
W szczególności utworzono funkcję w Cloud Functions, która łączy się z instancją bazy danych Cloud SQL i zapisuje w niej dane.
7. Co dalej?
Wypróbuj te ćwiczenia…
- Łączenie z Cloud SQL: Compute Engine, prywatny adres IP i Cloud SQL Proxy
- Wprowadzenie do Cloud SQL Insights