Невозможно перечислить папки в 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)
    }
}


Другие вопросы по тегам