Автоматизируйте развертывание serverless функций с Infrastructure as Code!
Что будем делать:
Создадим полностью автоматизированную инфраструктуру:
🔸Bucket для загрузки файлов
🔸Bucket для хранения исходного кода
🔸Cloud Function, которая триггерится при загрузке файла
Структура проекта:
cloud_function_project/
├── terraform/
│ ├── backend.tf
│ ├── function.tf
│ ├── main.tf
│ ├── storage.tf
│ └── variables.tf
└── src/
├── main.py
└── requirements.txt
Ключевые шаги:
1️⃣ Создаем Python функцию
def hello_gcs(event, context):
print('Event ID:', context.event_id)
print('Bucket:', event['bucket'])
print('File:', event['name'])
2️⃣ Настраиваем Terraform
Объявляем провайдера, переменные и ресурсы GCP
3️⃣ Упаковываем и деплоим
data "archive_file" "source" {
type = "zip"
source_dir = "../src"
}
resource "google_cloudfunctions_function" "function" {
runtime = "python37"
entry_point = "hello_gcs"
event_trigger {
event_type = "google.storage.object.finalize"
}
}🔸Развертывание:
cd ./terraform
terraform init
terraform plan
terraform apply
💡 Преимущества подхода:
✅ Воспроизводимость инфраструктуры
✅ Версионирование через Git
✅ Простое масштабирование
✅ Автоматизация CI/CD
✅ Безопасность через код
Итог ⬇️
Terraform + Cloud Functions = идеальная комбинация для serverless архитектуры. Описываете инфраструктуру декларативно, а Terraform заботится о развертывании и управлении состоянием. Код становится единственным источником истины для вашей инфраструктуры.
Бонус: Поддержка Python, Node.js, Go, Java, .NET, Ruby и PHP!
📎 Статья
🎙 Новости
📝 База вопросов
