提问人:jackdbd 提问时间:6/26/2022 更新时间:6/27/2022 访问量:699
如何从服务本身检索 Cloud Run 服务的名称和修订版本?
How to retrieve name and revision of a Cloud Run service, from the service itself?
问:
我正在使用错误报告来报告我的 Cloud Run 服务和 Cloud Run 作业中的任何错误。
在Node.js应用程序中,您可以像这样实例化错误报告:
const error_reporting = new ErrorReporting()
这等效于此,因为默认为 和 。logLevel
2
reportMode
'production'
const error_reporting = new ErrorReporting({
logLevel: 2,
reportMode: 'production'
})
在我的错误处理程序中,我手动构造了一个错误事件,因此我可以添加一些附加信息(用户、用户代理等)。
const reportErrorAndExit = (err) => {
const event = error_reporting.event()
event.setMessage(err.message)
event.setUser('the service account used by this Cloud Run service/job')
error_reporting.report(event, () => {
// exit with an exit code !=0 so the Cloud Run job marks
// this particular task run as a failure
process.exit(1)
})
}
使用此配置时,Cloud Run 作业中的错误会显示遇到错误的用户,但很少包含有关生成错误事件的服务的信息:
幸运的是,您还可以使用以下命令实例化错误报告:serviceContext
const error_reporting = new ErrorReporting({
logLevel: 2,
reportMode: 'production',
serviceContext: {
service: 'invoice-generator',
version: 'latest'
}
})
执行此操作时,通用服务将被更具描述性的 .node
invoice-generator:latest
我以为错误报告客户端将能够使用应用程序默认凭据 (ADC) 进行身份验证,并自动从其执行环境中检索服务/作业名称和修订。但显然不是。
我认为使用当前活动的 Cloud Run 服务/作业修订配置错误报告的唯一方法是从服务/作业本身检索修订。推荐的方法是什么?serviceContext
答:
2赞
guillaume blaquiere
6/27/2022
#1
使用 Cloud Run 作业,您无需进行修订,它不是 Knative 服务。
但是,我列出了所有环境变量,我得到了这个:
List all the env vars of the service
The value of "HOME" env var is: "/home"
The value of "PATH" env var is: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
The value of "CLOUD_RUN_TASK_INDEX" env var is: "0"
The value of "CLOUD_RUN_TASK_COUNT" env var is: "1"
The value of "CLOUD_RUN_TASK_ATTEMPT" env var is: "0"
The value of "CLOUD_RUN_EXECUTION" env var is: "job-list-env-hnpq5"
The value of "CLOUD_RUN_JOB" env var is: "job-list-env"
这是我的工作的名称。您可以将其用作服务名称。您还有执行的版本;它将更改为您的所有作业运行。CLOUD_RUN_JOB
CLOUD_RUN_EXECUTION
它们可能会帮助您根据需要配置错误报告。
评论
0赞
jackdbd
6/27/2022
谢谢。它看起来像我一直在寻找的。你从哪里找到这两个环境变量?Cloud Run 作业是否在与 Knative 服务不同的平台上运行?我在我的作业中看到了 YAML 配置,我认为它们在 Cloud Run 服务的同一基础架构上运行。client.knative.dev/user-image
0赞
guillaume blaquiere
6/28/2022
我只是用一个容器记录了 CLoud Run 作业的所有环境变量。Knative 没有工作管理。它应该是 Google 对当前 Knative API 的扩展,但仅由 Google 管理
评论