当前位置: 首页 > 面试题库 >

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

浦思源
2023-03-14
问题内容

对于通过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地图。

我还检查metadata了上下文中是否包含执行ID
。然而,从我的测试,以及文档(https://godoc.org/cloud.google.com/go/functions/metadata#FromContext),只是EventIDTimestampEventTypeResource是存在的。

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


问题答案:

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
}


 类似资料:
  • 问题内容: 在Tkinter中,我将多个小部件绑定到鼠标左键。单击它们都会触发同一事件。 如何恢复单击了哪个窗口小部件? 我想要这样,当按下状态时,我将能够恢复在触发事件中被按下的小部件。 问题答案:

  • 问题内容: 有什么方法可以获取触发事件的元素的ID? 我在想类似的东西: 当然,如果从第一种形式触发事件,则var 应该包含id ;如果从第二种形式触发事件,则var 应该包含id 。 问题答案: 在jQuery中,始终指触发事件的元素,其中传递给函数的参数在哪里。 还请注意,这也将起作用,但它不是jQuery对象,因此,如果您希望在其上使用jQuery函数,则必须将其称为,例如:

  • 使用mui.trigger()方法可以动态触发特定DOM元素上的事件。 .trigger( element , event , data ) element Type: Element 触发事件的DOM元素 event Type: String 事件名字,例如:'tap'、'swipeleft' data Type: Object 需要传递给事件的业务参数 示例 自动触发按钮的点击事件: var

  • 背景: 我正计划创建一个在初始源代码阶段中具有多个源代码操作的代码管道。每个源操作都是一个GitHub repo,它将有自己的AWS代码管道webhook。在管道的下一个阶段中,我希望有一个invoke操作,该操作将获取触发管道运行的管道执行的webhook,并将下游构建阶段的输入工件设置为与触发的webhook关联的源操作。例如,如果repoa的webhook导致管道执行#1,那么调用操作将以某

  • 我有一个blob触发器Azure函数,每次将新文件添加到我的blob存储时都会调用该函数。我自动获取该文件的名称作为输入。除了名称之外,我还需要附加到给定文件的元数据。我一直在研究数据输入绑定,但我无法理解它。我需要做些什么才能将文件元数据作为输入?或者,甚至只是在我的函数中访问它?

  • 我试图使用jquery捕获表行上的click事件,并在任何时候触发对表行的按钮的click。我在下面的jsfiddle中创建了我的问题的一个简单版本。唯一的限制是html不能更改,所以这个问题需要通过jQuery/JavaScript来解决。 主要的问题似乎是,当我们点击一个按钮时,我们也点击了一行,所以有某种循环无限的事件发生。我也尝试使用但没有成功。我赞赏任何建议-目标是只要触发与行相关的模式