1. Введение
Последнее обновление: 11 мая 2021 г.
Что такое Cloud SQL?
Cloud SQL – это полностью управляемая служба баз данных, которая упрощает настройку, обслуживание, управление и администрирование реляционных баз данных на Google Cloud Platform.
Что такое облачные функции?
Cloud Functions — это легкое вычислительное решение, позволяющее разработчикам создавать одноцелевые автономные функции, которые реагируют на облачные события без необходимости управлять сервером или средой выполнения.
Что ты построишь
В этой лаборатории кода вы напишете облачную функцию на Python. Функция:
- Подключается к экземпляру базы данных Cloud SQL.
- Отправляет оператор вставки в таблицу в базе данных.
Что вы узнаете
- Как получить доступ к веб-интерфейсу облачных функций в Google Cloud Console.
- Как создать облачную функцию.
- Как протестировать облачную функцию.
- Как подключиться к экземпляру базы данных 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 Function для подключения к базе данных Cloud SQL находится здесь. Некоторые значения переменных зависят от того, является ли ваша база данных Cloud SQL MySQL или PostgreSQL, а также от информации о вашей собственной базе данных.
Пользовательский интерфейс облачных функций в облачной консоли включает текстовый редактор. Вы можете скопировать/вставить и отредактировать код туда или сначала отредактировать код локально, а затем скопировать/вставить его в пользовательский интерфейс.
требования.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 в качестве варианта выполнения .
- Выберите Встроенный редактор для параметра исходного кода .
- SelВ окнах редактора исходного кода удалите существующее содержимое требований.txt и main.py и замените их отредактированными версиями приведенного выше кода.
- Введите вставку в качестве имени точки входа.
- Нажмите «Развернуть» и подождите, пока функция будет создана. Счетчик перестанет вращаться, и на следующей странице появится зеленая галочка, когда функция будет готова к использованию.
4. Проверьте функцию
- В браузере перейдите в пользовательский интерфейс консоли Google Cloud Platform .
- Выберите «Облачные функции» в меню навигации.
- Нажмите на название функции, которую вы создали ранее.
- Выберите ссылку ТЕСТИРОВАНИЕ в центре страницы.
- Выберите ПРОВЕРИТЬ ФУНКЦИЮ .
- Результат должен появиться: ОК (если тест не пройден, вы увидите трассировку стека, которая поможет при отладке.)
- В браузере перейдите по URL-адресу, который вы сохранили ранее при создании функции. Если вы забыли сохранить URL-адрес, вы можете получить его по ссылке TRIGGER .
- Результат «ОК» также должен появиться в браузере.
5. Очистка
Чтобы избежать взимания платы с вашей учетной записи Google Cloud за ресурсы, используемые в этой лаборатории кода, выполните следующие действия.
Удалить экземпляр Cloud SQL
- Перейдите на страницу экземпляров Cloud SQL в Google Cloud Console.
- Выберите созданный экземпляр, чтобы открыть страницу сведений об экземпляре.
- На панели значков вверху страницы нажмите «Удалить» .
- В окне «Удалить экземпляр» введите имя своего экземпляра, затем нажмите «Удалить» , чтобы удалить экземпляр. Вы не можете повторно использовать имя экземпляра в течение примерно 7 дней после его удаления.
Удалить функцию облака
- Перейдите на страницу облачных функций в Google Cloud Console.
- Выберите три точки в разделе «Действия» для вашей функции и выберите «Удалить» .
- Подтвердите удаление, нажав кнопку УДАЛИТЬ .
6. Поздравления
Поздравляем, вы успешно создали облачную функцию, которая работает с Cloud SQL.
В частности, вы создали облачную функцию, которая подключается и записывает данные в экземпляр базы данных Cloud SQL.
7. Что дальше?
Посмотрите некоторые из этих кодовых лабораторий...
- Подключение к Cloud SQL: Compute Engine, частный IP-адрес и прокси-сервер Cloud SQL
- Введение в Cloud SQL Insights