从云函数本身获取云函数名称



向Twilio发送短信时,Twilio会向指定的URL发送多个请求,以通过webhook提供该短信发送的状态。我想让这个回调异步,所以我开发了一个云函数,它将请求的表示发送到云任务,该任务本身到达我的应用程序的专用端点,该端点在内部重新创建和模拟Twilio请求。

Twilio签署他的请求使用:

  • 我的twilio帐户的密钥
  • 它所访问的绝对URL
  • 以及他的请求正文

所以在我的后端,我应该知道Twilio最初到达了哪个端点。我想在Cloud函数中进行,并且我想以编程的方式进行,因为这个";异步webhook";也用于人们回复短信。

我的webhook的当前URL具有以下格式:

https://<location>-<project>.cloudfunctions.net/<cloud function name>/<some SMS uuid>

当前发送到我的云任务的有效载荷如下:

absoluteUri: req.protocol + '://' + req.hostname + req.originalUrl,
relativeUri: req.originalUrl,
queryParams: req.query,
headers: req.headers,
body: req.body,

问题是req.originalUrl不包含完整的URI,我的absoluteUri当前为:

https://<location>-<project>.cloudfunctions.net/<some SMS uuid>

所以我的问题是:在云函数内部,有没有一种方法可以通过编程获得它的名称?

我使用的是python 3.9,并从奇怪命名的";K_ SERVICE";环境变量。

import os
print("Current Cloud Function Name {}".format(os.environ.get('K_SERVICE')))

尽情享受吧,谷歌在每一个新的语言版本中都会删除越来越多有用的环境变量。https://cloud.google.com/functions/docs/configuring/env-var#python_37_and_go_111

由于云函数名称是入口点,应该进行硬编码,我最终编写了一个部署脚本,该脚本使用了一些占位符。

看起来很难看,如果你有更好的方式,那将是受欢迎的。

相关内容

  • 没有找到相关文章

最新更新