GCP - 获取项目 NAT GW

GCP - get project NAT GW's

我们在 GCP 上有包含有效云 Nat 的帐户,现在我们想通过以下方式获取这些值 GCP sdk,我尝试了以下并得到空响应(也许我使用了错误的 API 而不是 ListExternalVpnGatewaysRequest

package main

import (
    "context"
    "fmt"

    compute "cloud.google.com/go/compute/apiv1"
    "google.golang.org/api/iterator"
    computepb "google.golang.org/genproto/googleapis/cloud/compute/v1"
)

func main() {
    ctx := context.Background()
    c, err := compute.NewExternalVpnGatewaysRESTClient(ctx)
    if err != nil {
        fmt.Println(err)
    }
    defer c.Close()
    proj := "dev-proj"

    req := &computepb.ListExternalVpnGatewaysRequest{
        //Filter:               new(string),
        //MaxResults:           new(uint32),
        //OrderBy:              new(string),
        //PageToken:            new(string),
        Project: proj,
        //ReturnPartialSuccess: new(bool),
    }
    it := c.List(ctx, req)
    for {
        resp, err := it.Next()
        if err == iterator.Done {
            break
        }
        if err != nil {
            fmt.Println(err)
        }
        // TODO: Use resp.
        _ = resp
        fmt.Println(resp)
    }
}

我需要使用 GCP GO SDK 获取以下值

更新

我按原样尝试了以下操作,但出现错误

package main

import (
    "context"
    "fmt"
    "google.golang.org/api/compute/v1"
    "log"
)

func main() {
    project := "my-proj"

    region := "my-region"
    ctx := context.Background()

    computeService, err := compute.New(ctx)
    if err != nil {
        log.Fatal(err)
    }

    req := computeService.Routers.List(project, region)
    if err := req.Pages(ctx, func(page *compute.RouterList) error {
        for _, router := range page.Items {
            // process each `router` resource:
            fmt.Printf("%#v\n", router)
            // NAT Gateways are found in router.nats
        }
        return nil
    }); err != nil {
        log.Fatal(err)
    }

}

Error is: ./main.go:16:36: cannot use ctx (type context.Context) as type *http.Client in argument to compute.New

VPN 网关与 NAT 网关不同。

使用此代码列出路由器。在路由器列表中,是 NAT 网关

import "google.golang.org/api/compute/v1"

// Replace with valid values for your project
project := "my-project"
region := "my-region"

ctx := context.Background()

c, err := google.DefaultClient(ctx, compute.CloudPlatformScope)
if err != nil {
    log.Fatal(err)
}

computeService, err := compute.New(c)
if err != nil {
    log.Fatal(err)
}

req := computeService.Routers.List(project, region)
if err := req.Pages(ctx, func(page *compute.RouterList) error {
    for _, router := range page.Items {
        // process each `router` resource:
        fmt.Printf("%#v\n", router)
        // NAT Gateways are found in router.nats
    }
    return nil
}); err != nil {
    log.Fatal(err)
}

SDK Documentation