Я столкнулся с подобной проблемой при использовании google.golang.org/api/cloudfunctions/v1, первая проблема с ошибкой 403, которая возникла у меня, была связана с использованием клиента авторизации с предварительно заданным URL-адресом для генерации загрузки, с помощью простого http-клиента, помогшего
httpClient := http.DefaultClient
data, err := ioutil.ReadAll(reader)
if err != nil {
return err
}
request, err := http.NewRequest("PUT", uploadURL, bytes.NewReader(data))
if err != nil {
return err
}
request.Header.Set("content-type", "application/zip")
request.Header.Set("x-goog-content-length-range", "0,104857600")
request.Header.Set("Content-Length", fmt.Sprintf("%d", len(data)))
response, err := httpClient.Do(request)
if err != nil {
return err
}
Другая проблема, с которой я столкнулся в 404, была, когда я использовал местоположение в качестве региона, а не полное имя, представленное в следующем фрагменте
var location = 'projects/${projectID}/locations/${region}'
projectService := cloudfunctions.NewProjectsLocationsFunctionsService(ctxClient.service)
createCall := projectService.Create(location, request.CloudFunction)
createCall.Context(ctxClient.Context())
return createCall.Do()
h
Вы также можете проверить функции облака Голанга.google.golang.org/api/cloudfunctions/v1 Использование API в этом проекте:
Служба облачных функций