Google Cloud Functions: простой backend без VPS за 10 минут

от автора

Думаю, многие хотя бы раз сталкивались с ситуацией, когда для проекта нужно было реализовать совсем небольшой backend: отправку письма с формы обратной связи, обработку webhook, простое REST API или несколько строк серверной логики.

В большинстве случаев первым делом арендуют VPS, настраивают Node.js, nginx, HTTPS, деплой и окружение. Хотя для подобных задач это зачастую оказывается избыточным.

В таких случаях отличным решением становятся Google Cloud Functions — serverless‑сервис от Google, который позволяет написать небольшую функцию и сразу получить публичный HTTP endpoint. Вам не нужно поднимать собственный сервер, настраивать инфраструктуру или поддерживать её в дальнейшем — достаточно написать код, задеплоить функцию, и Google автоматически предоставит публичный URL для её вызова.

В этой статье разберём, как за несколько минут развернуть свою первую Google Cloud Function, автоматически деплоить её через GitHub Actions и использовать в качестве простого backend для сайта или любого другого проекта.

Интерфейс Google console

Интерфейс Google console

Интерфейс Google Cloud Console содержит большое количество сервисов и настроек, поэтому при первом знакомстве бывает непросто быстро найти нужные разделы. Поэтому в этой статье настройка будет выполнена с минимальным взаимодействием с Google Cloud Console.

Для удобства я подготовил репозиторий с готовым примером: простая Cloud Function, которая при обращении к HTTP endpoint отправляет письмо на указанную почту. Все необходимые настройки выполняются через GitHub CI, поэтому после первоначальной конфигурации достаточно изменять только Secrets и Variables, не возвращаясь в консоль Google Cloud.

Достаточно склонировать готовый репозиторий, заполнить Secrets и Variables и при необходимости заменить пример функции собственной логикой, здесь реализовано множество примеров использования.

Первичная настройка Google Cloud

Перед тем как перейти к GitHub, необходимо один раз выполнить минимальную настройку Google Cloud, у них есть собственная документация, и при желании всю настройку можно выполнить вручную через интерфейс Google Cloud Console. Но цель этой статьи — показать более удобный и воспроизводимый вариант: один раз подготовить проект, вынести настройки в GitHub Secrets и Variables, а дальше деплоить функцию автоматически через GitHub Actions

1. Создайте новый проект

Создайте новый Google Cloud Project и подключите платёжный аккаунт (Billing). Для большинства небольших проектов бесплатного лимита обычно достаточно, однако подключение Billing является обязательным условием для использования сервиса, новым пользователям Google обычно предоставляет стартовый кредит в размере до 300 долларов для знакомства с сервисами платформы.

2. Включите необходимые API

В разделе APIs & Services → Library включите следующие API:

  • Cloud Functions API

  • Cloud Run Admin API

  • Cloud Build API

  • Artifact Registry API

Включение API

Включение API

3. Создайте Service Account

IAM & Admin → Service Accounts

Создайте новый Service Account и выдайте ему необходимые роли, необходима минимум роль Security Admin, по мимо нее рекомендую выставить basic/Editor, которая предоставляет минимально необходимые возможности для деплоя.

Предоставление ролей и создание ключа

Предоставление ролей и создание ключа

4. Создайте JSON Key

Откройте созданный Service Account:(Изображение выше)

Keys → Add Key → Create New Key → JSON

JSON‑файл будет автоматически скачан на компьютер. Позже его содержимое потребуется добавить в GitHub Secrets, скопировав целиком

*Настройка Gmail

В текущей реализации для отправки уведомлений используется Gmail SMTP.

Для этого необходимо создать App Password для Google‑аккаунта, от имени которого будут отправляться письма. Для создания пароля приложения предварительно нужно включить двухэтапную аутентификацию (2-Step Verification) в аккаунте Google.

Создать пароль приложения можно здесь. После генерации сохраните полученный пароль — на следующем этапе он будет добавлен в GitHub Secrets вместе с адресом электронной почты( прописывать пароль в секретах нужно без пробелов)

После этого заполните GitHub Secrets и GitHub Variables.

В Secrets хранятся чувствительные данные:

  • JSON‑ключ сервисного аккаунта;

  • SMTP‑почта;

  • пароль приложения Gmail.

В Variables располагаются обычные настройки:

  • регион (europe-west1);

  • получатель письма;

  • тема;

  • текст уведомления.

ссылка на оригинал статьи https://habr.com/ru/articles/1053330/