網頁

2023/4/20

Golang 建立GCP VPC network

Go以Google API Client Libraries建立GCP VPC network



事前要求

參考「GCP 設定本機應用程式存取憑證 Application Default Credentials」設定credential。


下載API modules

在專案根目錄執行以下命令下載需要的google-api-go-client modules。



建立VPC network

呼叫compute.NetworksService.Insert輸入project id、compute.Network參數來建立VPC network。

compute.Network參數屬性如下:

  • compute.Network.AutoCreateSubnetworks - 必填且只能是true,因為若為false則會建立已不支援的legacy network會出現錯誤Error 400: Creation of legacy mode networks is deprecated. Please create a subnet mode network instead by removing the IPv4Range field and adding the autoCreateSubnetworks field to your network insert request., badRequest
  • compute.Network.Mtu - 填入預設的1460。
  • compute.Network.Name - 填入VPC的名稱。

main.go

package main

import (
    "context"

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

func main() {
    ctx := context.Background()
    service, err := compute.NewService(ctx)
    if err != nil {
        panic(err)
    }
    networksService := compute.NewNetworksService(service)

    projectId := "project-id-1"
    vpcName := "demo-vpc-002"
    network := &compute.Network{
        AutoCreateSubnetworks: true,
        Mtu:                   int64(1460),
        Name:                  vpcName,
    }
    call := networksService.Insert(projectId, network)

    op, err := call.Do()
    if err != nil {
        panic(err)
    }

    _, err = service.GlobalOperations.
        Wait(projectId, op.Name).
        Do()
    if err != nil {
        panic(err)
    }
}

github


測試

執行Go應用程式後,在GCP console查看新建的VPC network如下。



由於compute.Network.AutoCreateSubnetworks設為true,所以是auto mode VPC network,自動建立包含每一個region的subnet。



每個subnet自身的local route也自動建立。




沒有留言:

張貼留言