Иногда получаю ошибку 401 «Недопустимые учетные данные» при вставке в таблицу BigQuery

#node.js #google-cloud-platform #google-bigquery

#node.js #google-облачная платформа #google-bigquery

Вопрос:

У меня есть node.js приложение, которое выполняет запись в таблицу в BigQuery. Большую часть времени это работает нормально, но иногда я получаю ошибку 401 «Недопустимые учетные данные».

Я использую учетную запись службы.

 const BigQuery = require('@google-cloud/bigquery');

let bigQuery;
new BigQuery({ keyFilename: __dirname   '/big_query.json', projectId: config.google.project_id_prod });

const insertToBigQuery = (dataSet, table, object) => {
  return new Promise((resolve, reject) => {
    if (config.releaseType === config.releaseTypeEnum.DEVELOPMENT || config.releaseType === config.releaseTypeEnum.STAGING) {
      logger.info(`Insert started to BigQuery. Dataset - ${dataSet} Table - ${table}`);
    }
    bigQuery.dataset(dataSet).table(table).insert(object, { ignoreUnknownValues: false })
      .then(() => {
        resolve({ insertedWithError: false });
      })
      .catch(err => {
        bigQuery.dataset(dataSet).table(table).insert(object, { ignoreUnknownValues: true })
          .then(() => {
            resolve({ insertedWithError: true, err: JSON.stringify(err) });
          })
          .catch(err => {
            reject(`ERROR: ${JSON.stringify(err)}`);
          });
      });
  });
};
  

В большинстве случаев этот код работает. Иногда я получаю ошибку 401 «Недопустимые учетные данные»

Комментарии:

1. Случайно ли какие-либо ошибки зарегистрированы в каком-либо из журналов Stackdriver?

2. Я вижу следующую ошибку: { «code»: 401, «errors»: [ { «message»: «Недопустимые учетные данные», «domain»: «global», «reason»: «authError», «location»: «Authorization», «LocationType»: «header» } ], «message»: «Запрос содержал недопустимые учетные данные для аутентификации. Ожидается токен доступа OAuth 2, файл cookie для входа или другие действительные учетные данные для аутентификации. Смотрите developers.google.com/identity/sign-in/web/devconsole-project . — Недопустимые учетные данные»}

3. Как выполняется это приложение? Откуда вы это запускаете? Если вы немедленно запустите ее повторно, сработает ли она затем? Существуют ли какие-либо шаблоны при сбое? Как выполняется аутентификация с помощью GCP?

4. Он запускается как микросервис внутри Kubernetes. Поведение прерывистое

5. Настроили ли вы аутентификацию, как описано здесь … cloud.google.com/docs/authentication/getting-started Мне приходит в голову странная мысль… у вас есть несколько модулей, на которых размещена эта служба? Это реплицируется? Если да, то возможно ли, что причиной недетерминированного поведения является то, что один из модулей «болен», и когда балансировщик нагрузки выбирает этот модуль (недетерминированно), именно тогда мы видим проблему?