【问题标题】:Service account with google cloud not working谷歌云服务帐户不起作用
【发布时间】:2020-06-28 14:41:59
【问题描述】:

我正在尝试通过从我的本地计算机创建服务帐户来与谷歌云和服务 API 进行通信。我在 Mac OS 上

我正在关注这篇文章

https://cloud.google.com/docs/authentication/production

我在本地终端会话中设置了“GOOGLE_APPLICATION_CREDENTIALS”环境变量。

它指向通过谷歌云控制台创建的服务帐户的密钥文件。

但是运行下面的node js程序给了我错误

    // Imports the Google Cloud client library.
const {Storage} = require('@google-cloud/storage');

// Instantiates a client. If you don't specify credentials when constructing
// the client, the client library will look for credentials in the
// environment.
const storage = new Storage();

try {
  // Makes an authenticated API request.
  const results = await storage.getBuckets();

  const [buckets] = results;

  console.log('Buckets:');
  buckets.forEach(bucket => {
    console.log(bucket.name);
  });
} catch (err) {
  console.error('ERROR:', err);
}

错误是

    const results = await storage.getBuckets();
                        ^^^^^^^

SyntaxError: Unexpected identifier

读取凭据时似乎出错,因为无法实例化存储对象。

最好的问候,

苏拉夫

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage google-auth-library


    【解决方案1】:

    您必须在async 函数中使用await。假设您创建了一个具有必要权限 (Storage Admin) 的服务帐户,并导出了环境变量 GOOGLE_APPLICATION_CREDENTIALS,那么这就是对我有用的代码:

    
       'use strict';
    
    const authCloudImplicit = async () => {
      // [START auth_cloud_implicit]
      // Imports the Google Cloud client library.
      const {Storage} = require('@google-cloud/storage');
    
      // Instantiates a client. If you don't specify credentials when constructing
      // the client, the client library will look for credentials in the
      // environment.
      const storage = new Storage();
    
      try {
        // Makes an authenticated API request.
        const results = await storage.getBuckets();
    
        const [buckets] = results;
    
        console.log('Buckets:');
        buckets.forEach(bucket => {
          console.log(bucket.name);
        });
      } catch (err) {
        console.error('ERROR:', err);
      }
      // [END auth_cloud_implicit]
    };
    
    const a = authCloudImplicit();
    
    

    【讨论】:

    • 非常感谢...错过了简单的事情...现在可以使用
    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2020-11-24
    相关资源
    最近更新 更多