- runtimes/go1.23/server.go: HTTP-wrapper + job-runner (SLESS_MODE=job) - runtimes/go1.23/go.mod: module sless/fn (изолирует от корневого go.mod) - runtimes/go1.23/Dockerfile: multi-stage build (golang:1.23-alpine → alpine:3.20) - internal/builder/context.go: go1.23 в runtimeBaseImage + generateDockerfile - controllers/functionjob_controller.go: go1.23 runner (nil cmd + SLESS_MODE=job env) - api/v1alpha1/function_types.go: enum go1.21 → go1.23 - config/crd/bases/...: CRD обновлён - terraform/provider: OneOf обновлён - examples/hello-go: HTTP + job примеры на go1.23 - deployments/k8s/operator.yaml: v0.1.25
22 lines
790 B
Go
22 lines
790 B
Go
// Создано: 2026-03-11
|
|
// handler.go — пример Go serverless функции.
|
|
// Пакет должен называться handler, функция — Handle.
|
|
// event содержит тело POST запроса (распарсенный JSON) или метаданные GET (_path, _method, _query).
|
|
|
|
package handler
|
|
|
|
import "fmt"
|
|
|
|
// Handle — точка входа функции. Принимает event как map, возвращает любой тип (сериализуется в JSON).
|
|
func Handle(event map[string]interface{}) interface{} {
|
|
name, ok := event["name"].(string)
|
|
if !ok || name == "" {
|
|
name = "world"
|
|
}
|
|
return map[string]interface{}{
|
|
"message": fmt.Sprintf("Hello, %s! (Go 1.23)", name),
|
|
"runtime": "go1.23",
|
|
"event": event,
|
|
}
|
|
}
|