登录
首页 >  Golang >  Go问答

使用 Golang 在 GCP 计算实例上设置标签

来源:stackoverflow

时间:2024-03-27 16:36:23 310浏览 收藏

本篇文章给大家分享《使用 Golang 在 GCP 计算实例上设置标签》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

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

然后我弄清楚并将代码放入答案部分。


正确答案


我使用这个简单的代码向 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
}

这只是一个示例,您可以解决并进行更多错误处理等。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 Golang 在 GCP 计算实例上设置标签》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>