Я пытаюсь развернуть облачную функцию Google с помощью клиентского пакета go от Google.
(https://pkg.go.dev/google.golang.org/api/cloudfunctions/v1?tab=doc#pkg -просмотр )
Я разбил его на фрагмент, который мне кажется наиболее актуальным:
import (
"context"
log "github.com/sirupsen/logrus"
functions "google.golang.org/api/cloudfunctions/v1"
)
func main() {
ctx := context.Background()
CloudFunctionService, err := functions.NewService(ctx)
if err != nil {
log.Printf("Error at functions.NewService(ctx): \"%v\"\n", err)
}
FunctionSpec := functions.CloudFunction{
EntryPoint: "DeployThisFunctionEntryPoint",
EventTrigger: &functions.EventTrigger{
EventType: "google.pubsub.topic.publish",
Resource: "projects/mytestproject/topics/cloud-builds",
},
Name: "DeployThisFunction",
Runtime: "go111",
SourceRepository: &functions.SourceRepository{Url: "https://source.developers.google.com/projects/mytestproject/repos/deploythisfunction/moveable-aliases/master/paths//"},
}
CloudFunctionDeploymentService := functions.NewProjectsLocationsFunctionsService(CloudFunctionService)
createCall := CloudFunctionDeploymentService.Create("projects/mytestproject/locations/us-central1", &FunctionSpec)
resp, err := createCall.Context(ctx).Do()
if err != nil {
log.Printf("Error at createCall.Context(ctx).Do(): \"%v\"\n", err)
}
log.Printf("response createCall.Context(ctx).Do(): \"%v\"\n", resp)
}
Однако, не важно как я это отформатирую или попробую. Я всегда получаю следующее сообщение:
googleapi: Error 400: Precondition check failed., failedPrecondition
Через google api explorer я запустил запрос с их аутентификацией и схемой json и получил ту же ошибку.
https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions/create
Ответ:
{
"error": {
"code": 400,
"message": "Precondition check failed.",
"status": "FAILED_PRECONDITION"
}
}
Я не могу понять, что происходит не так. Я начал свой собственный проект и являюсь администратором. При запуске другой части клиента go с GCP, например, для создания хранилища, пользователя IAM, учетных записей служб, базы данных, я могу заставить его работать и создавать эти ресурсы.
Если кто-то сталкивался с этой проблемой, я был бы признателен за помощь.