1. Введение
Последнее обновление: 11.05.2021
Что такое Cloud SQL?
Cloud SQL — это полностью управляемый сервис баз данных, который упрощает настройку, обслуживание, управление и администрирование реляционных баз данных на платформе Google Cloud Platform.
Что такое Cloud Functions?
Cloud Functions — это легковесное вычислительное решение для разработчиков, позволяющее создавать автономные функции, выполняющие одну задачу и реагирующие на события в облаке, без необходимости управления сервером или средой выполнения.
Что вы построите
В этом практическом задании вы напишете облачную функцию на Python. Функция:
- Подключается к экземпляру базы данных Cloud SQL.
- Отправляет запрос на вставку данных в таблицу базы данных.
Что вы узнаете
- Как получить доступ к веб-интерфейсу Cloud Functions в консоли Google Cloud.
- Как создать облачную функцию.
- Как протестировать облачную функцию.
- Как подключиться к экземпляру базы данных Cloud SQL (MySQL или PostgreSQL) с помощью Python.
- Как записывать данные в базу данных Cloud SQL с помощью Python.
2. Требования
- Браузер, например Chrome или Firefox .
- Проект Google Cloud Platform, содержащий ваш экземпляр Cloud SQL.
- Если у вас его еще нет, вы можете выполнить действия, описанные в руководстве по быстрому запуску MySQL или PostgreSQL . Выполните все шаги, кроме очистки.
- В вашем экземпляре содержится база данных MySQL или PostgreSQL с таблицей.
- Имя подключения к экземпляру, имена базы данных и таблиц, имя пользователя базы данных и пароль пользователя.
- Сервисная учетная запись с ролью Cloud SQL Client .
3. Подготовьте код и создайте функцию.
Подготовьте код
Код облачной функции для подключения к базе данных Cloud SQL находится здесь. Некоторые значения переменных зависят от того, является ли ваша база данных Cloud SQL MySQL или PostgreSQL, а также от информации вашей собственной базы данных.
В пользовательском интерфейсе Cloud Functions в Cloud Console есть текстовый редактор. Вы можете скопировать/вставить и отредактировать код там, или сначала отредактировать код локально, а затем скопировать/вставить его в пользовательский интерфейс.
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'
Создайте функцию
- В браузере перейдите в пользовательский интерфейс консоли Google Cloud Platform .
- Выберите «Облачные функции» в меню навигации.
- Нажмите кнопку «СОЗДАТЬ ФУНКЦИЮ» на панели инструментов.
- Введите название для функции.
- Выберите HTTP- триггер. (Запишите URL-адрес, отображаемый под элементом триггера. Он будет иметь следующий формат: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME )
- В разделе «Аутентификация» выберите «Разрешить вызовы без аутентификации» , чтобы сделать функцию общедоступной.
- Разверните раздел «Параметры среды выполнения, сборки и подключений». В разделе «Учетная запись службы среды выполнения» выберите учетную запись службы, имеющую роль « Клиент Cloud SQL» .
- Нажмите кнопку ДАЛЕЕ .
- В качестве параметра среды выполнения выберите Python 3.7 .
- Для параметра "Встроенный редактор" выберите "Исходный код" .
- В окне редактора исходного кода удалите существующее содержимое файлов requirements.txt и main.py и замените его отредактированными версиями приведенного выше кода.
- Введите insert в качестве имени точки входа.
- Нажмите «Развернуть» и подождите, пока функция будет создана. Индикатор загрузки остановится, и на следующей странице появится зеленая галочка, когда функция будет готова к использованию.
4. Проверьте функцию.
- В браузере перейдите в пользовательский интерфейс консоли Google Cloud Platform .
- Выберите «Облачные функции» в меню навигации.
- Щелкните по названию функции, которую вы создали ранее.
- Выберите ссылку «ТЕСТИРОВАНИЕ» в середине страницы.
- Выберите «ПРОВЕРИТЬ ФУНКЦИЮ» .
- В результате должно отобразиться: ok (Если тест не пройден, вы увидите трассировку стека, которая поможет в отладке.)
- В браузере перейдите по URL-адресу, который вы сохранили ранее при создании функции. Если вы забыли сохранить URL-адрес, вы можете получить его по ссылке TRIGGER .
- Результат "ОК" также должен отобразиться в браузере.
5. Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этом практическом задании, выполните следующие шаги.
Удалите экземпляр Cloud SQL.
- Перейдите на страницу «Экземпляры Cloud SQL» в консоли Google Cloud.
- Выберите созданный вами экземпляр, чтобы открыть страницу с подробными сведениями об экземпляре.
- В панели значков в верхней части страницы нажмите «Удалить» .
- В окне «Удалить экземпляр» введите имя вашего экземпляра, затем нажмите «Удалить» , чтобы удалить экземпляр. Вы не сможете повторно использовать имя экземпляра в течение примерно 7 дней после его удаления.
Удалить облачную функцию
- Перейдите на страницу Cloud Functions в консоли Google Cloud.
- Выберите три точки в разделе «Действия» для вашей функции и выберите «Удалить» .
- Для подтверждения удаления нажмите кнопку «УДАЛИТЬ» .
6. Поздравляем!
Поздравляем, вы успешно создали облачную функцию, работающую с Cloud SQL.
В частности, вы создали облачную функцию, которая подключается к экземпляру базы данных Cloud SQL и записывает в него данные.
7. Что дальше?
Посмотрите некоторые из этих практических занятий по программированию...
- Подключение к Cloud SQL: Compute Engine, частный IP-адрес и Cloud SQL Proxy
- Введение в Cloud SQL Insights