В этом руководстве вы собираетесь развернуть простую облачную функцию, запускаемую событием облачного хранилища, с помощью Terraform.

Облачные функции — это масштабируемые функции как услуга (FaaS) с оплатой по мере использования от Google Cloud Platform (GCP) для запуска вашего кода без управления сервером.

Облачные функции могут быть написаны на языках программирования Node.js, Python, Go, Java, .NET, Ruby и PHP. Для удобочитаемости это руководство будет содержать облачную функцию, написанную на Python. Но, пожалуйста, не стесняйтесь выбирать предпочитаемый язык программирования.

Terraform — это инструмент разработки инфраструктура как код (IaC), который позволяет создавать, изменять и версионировать инфраструктуру безопасно, воспроизводимо и эффективно. Он кодирует облачные API (GCP, AWS, Azure, …) в декларативные файлы конфигурации.

В конце этого руководства у вас будет запущена облачная функция, как только файл будет загружен в корзину Google Cloud Storage.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

Затем вы можете пройти аутентификацию с помощью GCP на вашем локальном компьютере с запущенным gcloud auth application-default login в вашем терминале.

Цели

Цель этого руководства — использовать Terraform для развертывания в проекте GCP:

  • ведро для загрузки файлов.
  • ведро для хранения исходного кода облачной функции.
  • облачная функция, которая запускается каждый раз, когда файл загружается в первую корзину, а исходный код находится во второй корзине.

Структура проекта

Вы можете создать новую папку, которую я назвал cloud_function_project, но, пожалуйста, не стесняйтесь выбирать имя, которое вам удобно.

Затем создайте файлы, как указано ниже. Оставьте их пока пустыми, и вы завершите их по ходу обучения.

.cloud_function_project/
│ 
├── terraform/
│    │
│    ├── backend.tf
│    ├── function.tf
│    ├── main.tf
│    ├── storage.tf
│    └── variables.tf
│
└── src/
     │
     ├── main.py 
     └── requirements.txt

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

Папка src содержит исходный код облачной функции. Это структура, специфичная для Python.

  • main.py: исходный код облачных функций.
  • requirements.txt: список библиотек Python, необходимых для запуска main.py. (вам это не понадобится в этом уроке)

Папка terraform содержит файлы конфигурации среды для развертывания.

  • backend.tf: объявление бэкенда Terraform.
  • main.tf: основные декларации окружения.
  • variables.tf: определение переменных.
  • storage.tf: объявление корзины Google Cloud Storage.
  • function.tf: объявление облачной функции.

Создайте облачную функцию

Написание и запуск облачной функции не является важной частью этого руководства. Вы развернете функцию, которая будет регистрировать некоторую полезную информацию о файле, который был загружен в корзину для отслеживания.

Примечание. Эта функция не имеет необходимых требований, поэтому requirements.txt остается пустым.
Примечание. это облачная функция Python, поэтому вы можете изменить источник кода в соответствии с выбранный вами язык программирования.

Создайте инфраструктуру Terraform

Бэкенд

Начните объявлять свою среду, указав серверную часть Terraform. Вы можете выбрать local, что означает, что все файлы состояния будут храниться в локальном каталоге. Вы также можете выбрать бэкэнд gcs, но давайте не будем усложнять.

Переменные

Объявите переменные, используемые в файлах Terraform. Вам нужно изменить переменную project_id в соответствии с идентификатором проекта, в котором вы хотите развернуть ресурсы. Конечно, вы также можете изменить файл region.

Основной

Объявите о подключении к провайдеру Google.

Облачное хранилище Google

Объявите две корзины Google Cloud Storage соответственно для хранения кода облачной функции и загрузки файлов.

Примечание. Имена сегментов начинаются с префикса project_id, потому что сегменты должны иметь уникальные имена.

Облачная функция Google

Последний шаг: объявите облачную функцию. Для этого необходимо сжать исходный код в zip-файл и загрузить его в корзину для хранения. Затем к исходному коду можно получить доступ при создании облачной функции с помощью Terraform.

Примечание. Файл немного длинный, поэтому не стесняйтесь просматривать комментарии, чтобы понять логику.

Развернуть среду

Все готово к развертыванию. Перейдите в корень проекта в вашем терминале, затем в корень папки terraform.

$ cd ./terraform

Инициализируйте свой код, чтобы загрузить требования, упомянутые в вашем коде.

$ terraform init

Просмотрите изменения.

$ terraform plan

Примите изменения и примените их к реальной инфраструктуре.

$ terraform apply

Проверьте свою облачную функцию

Для проверки все работает нормально:

  • Откройте Google Cloud Console и подключитесь к вашему проекту.
  • Перейдите в Браузер Google Cloud Storage.
  • Вы можете увидеть ведра <YOUR-PROJECT-ID>-function и <YOUR-PROJECT-ID>-input. Нажмите на корзину с именем <YOUR-PROJECT-ID>-input и загрузите в нее любой файл, чтобы активировать облачную функцию.
  • Чтобы убедиться, что это сработало, перейдите в Список облачных функций. Здесь должна быть облачная функция с именем function-trigger-on-gcs. Нажмите на его имя и перейдите на вкладку LOGS, чтобы увидеть, что он был вызван загруженным вами файлом.

Знаниями нужно делиться.
Поддержите меня и получите доступ ко всем моим статьям в одним кликом здесь сильный>.

Идти дальше

Надеюсь, вам понравился этот краткий учебник по развертыванию облачной функции. Можно применить множество улучшений. Ты можешь:

  • установить IAM-политику.
  • добавить переменные и преобразовать этот код в модуль Terraform для повторного использования.
  • интегрируйте развертывание в процесс Cloud Build для непрерывного развертывания.
  • многое другое…