如何在cloudflare工作线程运行时获取部署id

问题描述 投票:0回答:1

我有一个用 javascript 实现的 cloudflare Worker,想要获取部署 ID(与 cloudflare ui 中显示的相同)。我需要这段代码来生成一个缓存密钥,该缓存密钥在软件更新后会发生变化。否则我经常会因为缓存数据不兼容而崩溃。

 wrangler deploy cloudflarewrapper.js
 ⛅️ wrangler 3.0.1 (update available 3.78.11)
-------------------------------------------------------
Total Upload: 1873.17 KiB / gzip: 278.74 KiB
Uploaded myscript (4.90 sec)
Published myscript (1.40 sec)
  https://myscript.xx.workers.dev
Current Deployment ID: 506d732c-7cda-11ef-ba53-136088c204d0
                       ^^^^^^^^

我想要这部分或完整的 uuid。仪表板、统计数据和日志中也使用相同的 ID

export default {
  async fetch(request, env, ctx) {
    const cacheUrl = new URL(request.url);

    // Construct the cache key from the cache URL
    const cacheKey = new Request(cacheUrl.toString() + currentActiveVersion, request);
                                                       ^^^^^^^^^^^^^^^^^^^^
javascript cloudflare-workers
1个回答
0
投票

终于找到了。有文档页面 https://developers.cloudflare.com/workers/runtime-apis/bindings/version-metadata/ 可以准确处理这种情况。

导致我的第一次测试失败的是旧版本的牧马人。这个功能是相当新的(仍然是测试版),所以你可能必须先更新牧马人:

npm install wrangler --save-dev

使用当前版本 3.78.12 我成功了。

然后,将这两行添加到您的

wrangler.toml

[version_metadata]
binding = "CF_VERSION_METADATA"

并使用以下代码:

export default {
  async fetch(request, env, ctx) {
    const { id: versionId, tag: versionTag, timestamp: versionTimestamp } = env.CF_VERSION_METADATA;
    console.log(versionId);

btw versionId 包含完整的 UUID。 cloudflare 的仪表板仅显示 if 的第一段。

© www.soinside.com 2019 - 2024. All rights reserved.