You need to enable JavaScript to run this app. 如何获取HTTP触发的Google Cloud Functions的execution ID
优惠活动
大模型
产品
解决方案
定价
更多

如何获取HTTP触发的Google Cloud Functions的execution ID

获取HTTP触发Cloud Function的Execution ID并写入自定义日志方案

HTTP触发的Cloud Function执行ID无需额外调用API,直接从请求头读取即可,具体实现如下:

实现步骤

  • 从请求头Function-Execution-Id中直接获取单次执行的execution ID
  • 写入日志时将该ID传入日志条目的labels字段,对齐Google默认日志的结构,实现日志关联
  • 修正原有代码的缺省配置,避免日志无法正确关联到云函数资源

修正后的完整代码

日志客户端初始化

from google.cloud import logging
from google.cloud.logging.resource import Resource


log_client = logging.Client()

# 云函数对应日志名固定值,无需额外格式化
log_name = 'cloudfunctions.googleapis.com/cloud-functions'

# 补充Resource必填的project_id标签,否则无法关联到对应云函数资源
res = Resource(type="cloud_function",
               labels={
                   "function_name": "my-function",
                   "region": "asia-east2",
                   "project_id": "my-project" # 替换为你的实际GCP项目ID
               })
logger = log_client.logger(log_name)

日志写入逻辑

# 从请求头读取当前执行的execution ID
execution_id = request.headers.get("Function-Execution-Id")

logger.log_struct(
    {"message": request.remote_addr},
    resource=res,
    severity='INFO',
    # 将execution ID放入日志标签,和默认日志结构完全对齐
    labels={"execution_id": execution_id}
)

代码调整说明

  • 原有log_name中的.format("my-project")无实际作用,因原字符串无占位符,已移除
  • Resource类型cloud_function的必填标签包含project_id,原代码缺失会导致日志无法按云函数维度聚合
  • execution ID属于单次执行的动态标识,需放入日志条目的labels而非Resource的静态标签中,和GCP默认日志的存储逻辑完全一致

内容的提问来源于stack exchange,提问作者EEEEH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 02:24:03