如何更新 Google Cloud Platform Legacy GAE 和 GCF Metadata Server 端点

Dan*_*mal 6 node.js google-cloud-platform

我正在使用带有 Node 的 firebase 云函数来发送由实时数据库事件触发的推送通知。

我收到了来自 Google 的这封电子邮件,告诉我更新使用 v1 端点的请求。该电子邮件指出:

我们的记录显示,您拥有的 App Engine 应用程序或 Cloud Functions 项目仍在调用 App Engine 和 Cloud Functions 元数据服务器的 pre-GA v0.1 和 v1beta1 端点。

确定发出这些请求的项目、应用程序和功能。在此消息的附件中,您将找到您拥有的在 2019 年 9 月 26 日至 2019 年 11 月 1 日期间向 v0.1 和 v1beta1 元数据服务器端点发出请求的项目、应用程序和功能的列表。 评论:我知道它是什么项目是。

将您的 Google 客户端库升级到最新版本。有关需要更新的 Google SDK 列表,请参阅支持的库版本。 评论:这个我不明白。我需要这样做吗?

如果您向旧版元数据服务器端点发出直接请求:为确保对您的实例的干扰最小,请在 2020 年 4 月 30 日之前将您的请求更新到 v1 端点。 评论:我不知道我是否在发出直接请求

如何从 v1beta1 请求升级到 v1 请求:如果您直接向 v1beta1 URI 发出请求,请按照以下步骤升级到 v1 URI: 将请求 URI 更改为使用 v1 而不是 v1beta1 将此标头添加到您的请求中: “Metadata-Flavor: Google” 例如,如果您当前正在发出此请求: curl " http://metadata.google.internal/computeMetadata/v1beta1/instance/id " 升级到 v1,如下所示: curl " http:// /metadata.google.internal/computeMetadata/v1/instance/id” -H "Metadata-Flavor: Google" 如何从 v0.1 请求升级到 v1 请求:如果您直接向 v0.1 URI 发出请求,请按照以下步骤升级到 v1 URI:更改请求使用 v1 而不是 v0.1 的 URI 将此标头添加到您的请求中:“Metadata-Flavor: Google” 使用这些说明将 v0.1 属性映射到 v1 属性例如,如果您当前正在发出此请求:curl " http://metadata.google.internal/0.1/meta-data/instance-id " 升级到 v1 如下: curl " http://metadata.google.internal/computeMetadata/v1/instance/id " -H " Metadata-Flavor: Google" 重新部署您的应用程序 上述步骤将需要另一个应用程序部署才能生效。

我搜索了 Google Cloud 支持 webb(如电子邮件中的建议)和 SO 上的此处。但我不明白如何做到这一点。

请记住我是一个完整的新手。非常感谢任何帮助或建议!

更新 显然这个函数已经向 v0.1 和 v1beta1 元数据服务器端点发出请求:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendErrorInputWasSentPush = functions.database.ref('/errorInputs/{barcode}/{date}').onWrite((change, context) => {

const barcode = context.params.barcode
const dataAfter = change.after.val()
const input = dataAfter.input
const pushIDs = [
    "", 
    ""]

console.log(`Error input submitted.`)

const payload = {
    notification: {
        title: '',
        body: '',
        sound: "default"
    }
};

const options = {
    priority: "high",
    timeToLive: 60 * 60 * 24
};

return admin.messaging().sendToDevice(pushIDs, payload, options);
Run Code Online (Sandbox Code Playgroud)

});

Firebase 版本:

"firebase-admin": "^8.0.0",
"firebase-functions": "^3.2.0"
Run Code Online (Sandbox Code Playgroud)

gui*_*ere 12

如果您从未http://metadata.google.internal/...从您的代码或脚本中对URL执行任何查询,那将不会有任何改变!

如果您使用此 URL,请粘贴您的代码,我们可以为您提供帮助。

更新

感谢您的详细信息,我在firebase-admin-node github project文件src/auth/credential.ts中发现了问题。直到版本 8.1.0,第 32 行的值是:

const GOOGLE_METADATA_SERVICE_PATH = '/computeMetadata/v1beta1/instance/service-accounts/default/token';
Run Code Online (Sandbox Code Playgroud)

使用8.2.0以上版本解决这个问题