Сервисный аккаунт с облаком Google не работает - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь установить связь с облаком Google и API-интерфейсами службы, создавая учетную запись службы на моей локальной машине. я нахожусь на Ма c ОС

Я следую этой статье

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

Я установил переменную env "GOOGLE_APPLICATION_CREDENTIALS" в мой локальный сеанс терминала.

Указывает на файл ключа учетной записи службы, созданной через облачную консоль Google.

Но при запуске программы 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

Кажется, что ошибка при чтении учетных данных, поскольку объект хранилища не может быть создан.

С наилучшими пожеланиями,

Саурав

1 Ответ

1 голос
/ 17 марта 2020

Вы должны использовать await в функции async. Предполагая, что вы создали учетную запись службы с необходимыми разрешениями (Storage Admin) и экспортировали переменную env 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();

...