Google Cloud Functions оголосили про підтримку функцій Go на Google Cloud. Йдеться про останню версію Go 1.11 з новими мовними нововведеннями, такими як модулі для інтеграції сторонніх залежностей у коді. Відсьогодні можна використовувати функції Go, які динамічно масштабуються у відповідь на завантаження та легко інтегруються з подіями в Google Cloud.
Два способи переходу
Розглянемо два типи функцій, які можна використовувати з Cloud Functions: функції HTTP і фонові функції.
Перші — викликаються HTTP-запитами. Вони слідують за http.HandlerFunc зі стандартної бібліотеки. Наприклад, функція HTTP, яка повертає IP-адресу абонента, може виглядати так:
// function.go
package function
import "net/http"
func F(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
w.Write([]byte(r.Header.Get("X-Forwarded-For")))
}
Функції HTTP можуть бути доступні без додаткового API gateway layer — Cloud Functions надає URL HTTPS. Після спрацювання функції її можна викликати введенням URL-адреси у браузері.
Протилежно їм, фонові функції запускаються у відповідь на подію. Ваша функція може, наприклад, запускатися кожен раз, коли змінюються вміст Cloud Storage. Ось приклад функції, яка спрацьовує на відправлення файлів в кошик Cloud Storage:
// function.go
// Package function includes an example of processing a GCS event.
package function
import (
"context"
"log"
)
// GCSEvent holds event data from a Google Cloud Storage Event.
type GCSEvent struct {
Bucket string `json:"bucket"`
Name string `json:"name"`
}
func F(ctx context.Context, e GCSEvent) error {
log.Printf("Processing file: %s", e.Name)
return nil
}
Під час розгортання функції ви також вказуєте конкретне призначення в Cloud Storage. Кожен раз, коли в цьому сегменті з'являється новий файл, ваша функція запускається і реєструє ім'я файлу.
Це всього два приклади можливостей взаємодії Cloud Functions і Go. Рантайм підтримує багату екосистему пакетів Go через модулі Go. Наприклад, щоб використовувати клієнтську бібліотеку Cloud Translation у своїй функції, створіть файл go.mod
за допомогою таких команд:
export GO111MODULE=on
go mod init example.com/myfunctions
go get cloud.google.com/go/translate
Коли ви запустите функцію, Cloud Functions виберуть і встановлять залежності, перелічені у вашому файлі go.mod
.
Користувачі Cloud Functions можуть створювати чат-ботів, конвеєри опрацювання даних в режимі реального часу, інструменти для аналізу відео і зображень тощо.
Ще немає коментарів