两个相同的GCP项目,但其中一个Cloud Functions无法加载默认凭据

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

我正在2个不同的GCP项目(阶段和生产)中运行相同的Cloud Function。

在登台项目中,Cloud Functions运行良好,但在生产中会引发以下异常:

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/@google-cloud/common/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)" 

在生产中导致问题的部分是:

function saveContentToBucket(contents, destination, bucket, gzip){
  const bucket = storage.bucket(FIRESTORE_BUCKET_NAME);
  const file = bucket.file(destination);
  file.save(JSON.stringify(contents), function(err) {
    if(err) console.log("saveContentToBucket | err:", err)
  });
}

这是我启动项目和存储的方式。

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();

// Firebase related stuff
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);

由于我在两个项目中都部署了相同的功能,所以我不明白为什么它在生产中会出现问题,而不是暂存。

通常是什么导致默认凭据出现问题?我遵循了跟踪中的链接,但与实际问题无关。

谢谢。

firebase google-cloud-platform google-cloud-storage firebase-storage
1个回答
0
投票

如果要使用默认凭据,则应这样初始化Admin SDK,不带任何参数:

const admin = require('firebase-admin');
admin.initializeApp();
© www.soinside.com 2019 - 2024. All rights reserved.