0

我正在浏览包的文档cloudresourcemanager尝试构建一个简单的示例来列出我的 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

gcloudcli 工作正常。

有什么建议我可能会错过吗?

4

1 回答 1

2

错误消息根本没有帮助......

问题是我没有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)
    }
}


于 2021-11-04T21:03:29.360 回答