Невозможно перечислить папки в GCP с помощью клиентской библиотеки go
Я иду через документацию по
cloudresourcemanager
package и пытаюсь создать простой пример для перечисления папок моего проекта GCP.
Однако следующий пример не работает
package main
import (
"context"
"fmt"
"log"
cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v2"
)
func main() {
ctx := context.Background()
svc, err := cloudresourcemanager.NewService(ctx)
if err != nil {
log.Fatal(err)
}
foldersService := cloudresourcemanager.NewFoldersService(svc)
fmt.Println(foldersService)
foldersListCall := foldersService.List()
resp, err := foldersListCall.Do()
if err != nil {
fmt.Println("Here")
log.Fatal(err)
}
for _, fld := range resp.Folders {
fmt.Println(fld.Name)
}
}
Это не удается
resp, err := foldersListCall.Do()
и ошибка
googleapi: Error 400: Request contains an invalid argument., badRequest
У меня установлены следующие переменные среды
GOOGLE_CLOUD_PROJECT=my-project-id
GOOGLE_APPLICATION_CREDENTIALS=/path/to/application_default_credentials.json
а также
gcloud
cli отлично работает.
Есть предложения, что мне может не хватать?
1 ответ
Решение
Сообщение об ошибке совершенно бесполезно ...
Проблема в том, что я не устанавливал
Parent
параметр в запросе, т.е.
organization
(переход на
v3
немного помогло)
package main
import (
"context"
"fmt"
"log"
cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v3"
)
func main() {
ctx := context.Background()
svc, err := cloudresourcemanager.NewService(ctx)
if err != nil {
log.Fatal(err)
}
foldersService := cloudresourcemanager.NewFoldersService(svc)
foldersListCall := foldersService.List()
foldersListCall.Parent("organizations/12345678910")
resp, err := foldersListCall.Do()
if err != nil {
log.Fatal(err)
}
for _, fld := range resp.Folders {
fmt.Println(fld.DisplayName)
}
}