Для облачных функций Google, запускаемых из HTTP, можно получить идентификатор выполнения, проверив заголовки HTTP-запроса ("Function-Execution-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)
}
Однако для GCF, вызванного событиями PubSubЯ не могу найти, как получить этот идентификатор выполнения:
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
map.
Я также проверил, находится ли идентификатор выполнения в metadata
, обработанном контекстом. Однако из моих тестов и документов (только https://godoc.org/cloud.google.com/go/functions/metadata#FromContext), EventID
, Timestamp
, EventType
и Resource
присутствуют.
Как получить идентификатор выполнения функции GCF, вызванной событием PubSub?