我正在嘗試在 GO 中撰寫一個簡單的代碼,該代碼使用資源管理器API列出 GCP 中組織下的所有檔案夾。下面是我的代碼:
package main
import (
"context"
"log"
resourcemanager "cloud.google.com/go/resourcemanager/apiv2"
"google.golang.org/api/iterator"
resourcemanagerpb "google.golang.org/genproto/googleapis/cloud/resourcemanager/v2"
)
func main() {
ctx := context.Background()
c, err := resourcemanager.NewFoldersClient(ctx)
if err != nil {
// TODO: Handle error.
log.Println("Error: Failed to start client.")
}
defer c.Close()
req := &resourcemanagerpb.ListFoldersRequest{
Parent: "organizations/<MY-ORG-NAME>",
}
it := c.ListFolders(ctx, req)
tries := 0
for {
resp, err := it.Next()
if err == iterator.Done || tries == 3 {
break
}
if err != nil {
log.Println(err)
}
// TODO: Use resp.
log.Println(resp)
tries
}
}
代碼直接從 API 檔案中復制,我只是添加了我的組織名稱,添加了一些日志功能并限制了 for 回圈中的嘗試,因為它無休止地列印錯誤。
每當我運行代碼時,我都會收到以下錯誤訊息:
2021/11/04 17:06:41 rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "text/html; charset=UTF-8"
我不確定這是否是解決方案,但是;我想我需要.proto在我的目錄中添加一個檔案才能使其作業,但我不明白如何做到這一點或在那里放什么。我是 GO 新手,這是我第一次使用 API,所以這一切對我來說似乎很困惑。
很感謝任何形式的幫助!
uj5u.com熱心網友回復:
遷移到 API 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/<MY-ORG-ID>")
resp, err := foldersListCall.Do()
if err != nil {
log.Fatal(err)
}
for _, fld := range resp.Folders {
fmt.Println(fld.DisplayName)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/352558.html
下一篇:領事健康檢查(所有服務檢查失敗)
