登录
首页 >  Golang >  Go问答

获取从 PubSub 事件触发的 Google Cloud Functions 的执行 ID

来源:Golang技术栈

时间:2023-03-22 17:29:22 371浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《获取从 PubSub 事件触发的 Google Cloud Functions 的执行 ID》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

对于从 HTTP 触发的 Google Cloud Functions,可以通过检查 HTTP 请求 ( "Function-Execution- Id") 的标头来检索执行 ID:

package p

import (
    "fmt"
    "net/http"
)

func F(w http.ResponseWriter, r *http.Request) {
    executionID := r.Header.Get("Function-Execution-Id")
    fmt.Println(executionID)
}

但是,对于由 PubSub 事件触发的 GCF,我找不到如何检索此执行 ID:

package p

import (
    "context"
)

type PubSubMessage struct {
    Data []byte `json:"data"`
}

func F(ctx context.Context, m PubSubMessage) error {
    executionID := "" // ???
    fmt.Println(executionID)
    return nil
}

我查看了PubSubMessage(https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage),但它只包含data+一个空attributes地图。

我还检查了执行 ID 是否metadata由上下文处理。但是,根据我的测试和文档(https://godoc.org/cloud.google.com/go/functions/metadata#FromContext ) ,只有EventID,Timestamp和存在。EventType``Resource

如何检索由 PubSub 事件触发的 GCF 函数的执行 ID?

正确答案

编辑:这似乎不再准确。 请参阅 ProGirlXOXO 的另一个答案。

Pub/Sub 触发的事件没有执行 ID;相反,它EventID包含在上下文元数据中,这是事件的唯一 ID。

您可以访问EventID如下:

import (
    "context"
    "log"
    "cloud.google.com/go/functions/metadata"
)

func F(ctx context.Context, m PubSubMessage) error {
    ctxMetadata, err := metadata.FromContext(ctx)
    if err != nil {
        log.Fatal(err);
    }
    log.Println("EventID: " + ctxMetadata.EventID)
    return nil
}

到这里,我们也就讲完了《获取从 PubSub 事件触发的 Google Cloud Functions 的执行 ID》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

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