【发布时间】:2019-05-15 15:21:36
【问题描述】:
对于从 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?
【问题讨论】:
-
是否有关于
Function-Execution-Id请求标头的文档?经过大量搜索,我没有找到任何有关它的文档。
标签: go google-cloud-functions google-cloud-pubsub