【问题标题】:Setting labels on GCP Compute Instances using Golang使用 Golang 在 GCP 计算实例上设置标签
【发布时间】:2023-01-22 17:56:26
【问题描述】:

我一直在寻找在 GCP 计算实例上设置或更新实例标签的方法,labelFingerprint 让我感到困惑。

然后我弄明白了,我把代码放在答案部分。

【问题讨论】:

    标签: go google-cloud-platform


    【解决方案1】:

    我使用这个简单的代码向 GCP 实例添加了新标签。

    package main
    
    import (
        "context"
        "log"
        "os"
    
        "golang.org/x/oauth2/google"
        "google.golang.org/api/compute/v1"
    )
    
    func main() {
        addLabelToGCPInstances()
    }
    
    func addLabelToGCPInstances() error {
    
        // You can pass these as args
        project := "Your GCP Project ID"
        zone := "europe-west2-a"
        instance := "milad-test-instance"
        prodLablesMap := map[string]string{
            "production":  "true",
            "environment": "production",
        }
    
        ctx := context.Background()
    
        os.Setenv("GOOGLE_APPLICATION_CREDENTIALS", "gke.json")
    
        c, err := google.DefaultClient(ctx, compute.CloudPlatformScope)
        if err != nil {
            return err
        }
    
        computeService, err := compute.New(c)
        if err != nil {
            return err
        }
    
        respInstance, err := computeService.Instances.Get(project, zone, instance).Context(ctx).Do()
        if err != nil {
            log.Fatal(err)
        }
    
        rb := &compute.InstancesSetLabelsRequest{
            Labels:           prodLablesMap,
            LabelFingerprint: respInstance.LabelFingerprint,
        }
    
        respLabels, err := computeService.Instances.SetLabels(project, zone, instance, rb).Context(ctx).Do()
        if err != nil {
            log.Fatal(err)
        }
        _ = respLabels
        return err
    }
    
    

    这只是您可以变通并进行更多错误处理等的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 2019-04-30
      相关资源
      最近更新 更多