是否有用于访问给定已部署云函数的版本号的变量



GCP 在控制台中显示已部署云函数的版本号。目前没有包含有关部署信息的系统环境变量 - 没有版本,也没有部署日期。

鉴于版本更新

需要相当长的时间进行更新(30 秒 +)并传播,因此使用此类版本信息将很有用。

最近发布的 nodejs10 运行时环境现在包含一个官方记录的环境变量 包含云函数的部署版本的K_REVISION

从检查来看,似乎 python37 和更早的 nodejs8 环境包含非官方环境变量X_GOOGLE_FUNCTION_VERSION这恰好包含部署版本。

此代码片段适用于 nodejs10,非正式地适用于 nodejs8:

exports.helloVersion = (req, res) => {
  console.log(process.env);
  const version = process.env.K_REVISION || process.env.X_GOOGLE_FUNCTION_VERSION || "UNKNOWN";
  console.log(`Running version ${version}`);
  res.status(200).send(`Running version ${version}n`)
};

部署和测试:

$ gcloud functions deploy helloVersion --runtime nodejs8 --trigger-http
versionId: '8'
$ curl https://us-central1-myproject.cloudfunctions.net/helloVersion
Running version 8
$ gcloud functions deploy helloVersion --runtime nodejs10 --trigger-http
versionId: '9'
$ curl https://us-central1-myproject.cloudfunctions.net/helloVersion
Running version 9

当然,nodejs10 上K_REVISION环境变量可能是要走的路,因为它在官方文档中提到过。X_GOOGLE_FUNCTION_VERSION环境变量不是正式的提到,所以依靠它做重要的事情可能是一个坏主意,但我发现机会性地显示或包含可能会有所帮助以交互方式进行调试、部署和测试时。

没有直接的方法可以在运行时获取函数的版本号。 您始终可以选择自己分配一些值,并使用 gcloud 中的 --set-env-vars 标志将其放入环境变量中。

如果您的目标是确定函数调用是否实际上正在运行您在开发期间迭代时刚刚部署的代码,那么只需在函数的全局范围内console.log('deployed')即可。 部署完成后,该消息将显示在控制台日志中,您可以等待该消息出现在日志中,以了解新代码何时处于活动状态。 该日志之后记录的所有内容都应来自您的最新代码。

检查gcloud version,这将打印出版本信息。

最新更新