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)
}
}
測試
執行Go應用程式後,在GCP console查看新建的VPC network如下。
由於compute.Network.AutoCreateSubnetworks
設為true,所以是auto mode VPC network,自動建立包含每一個region的subnet。
每個subnet自身的local route也自動建立。
沒有留言:
張貼留言