使用云功能Shell时使用服务帐户凭据

时间:2018-04-15 10:13:56

标签: firebase google-cloud-storage google-cloud-functions

我刚迁移到Cloud Functions 1.0并尝试使用Cloud Functions shell / emulator在本地运行函数(使用https://firebase.google.com/docs/functions/local-emulator处的说明)

其中一个功能是使用下面的代码将文件上传到云存储,然后为它生成网址....但是我收到了以下错误:

  

SigningError:无法在没有client_email的情况下对数据进行签名。

const bucket = gcs.bucket(bucketName);

bucket.upload(localFilePath, {destination: destinationPath})
    .then(data => {
      const file = data[0];
      return file.getSignedUrl({
        action: 'read',
        expires: '01-01-2099'
      });

我可以通过明确设置keyFileName来在本地解决这个问题,如下所示,但似乎没有必要这样做

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});

上面的链接提到" Cloud Firestore和实时数据库触发器已经拥有足够的凭据,并且不需要额外的设置" (我从db write中触发此代码)。我在任何情况下都设置了GOOGLE_APPLICATION_CREDENTIALS env变量,但看起来并没有把它捡起来。

0 个答案:

没有答案