Аутентификация приложения Google Cloud Run в производственной среде - PullRequest
0 голосов
/ 28 марта 2020

Согласно https://cloud.google.com/docs/authentication/production, в среде Cloud Run по умолчанию, если переменная среды GOOGLE_APPLICATION_CREDENTIALS не задана, используется учетная запись службы вычислений по умолчанию.

I только что развернул образ контейнера базового узла c, который использует библиотеку googleapis следующим образом:

const { google } = require('googleapis')
const auth = new google.auth.GoogleAuth({
  scopes: [],
});
const client = await auth.getClient();

Однако в журнале Cloud Run я вижу сбой контейнера начать со следующей ошибки:

Error: The file at credentials/service_account.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/app/credentials' at Object.realpathSync (fs.js:1546:7) at GoogleAuth._getApplicationCredentialsFromFilePath (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:250:27) at GoogleAuth._tryGetApplicationCredentialsFromEnvironmentVariable (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:192:25) at GoogleAuth.getApplicationDefaultAsync (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:130:33) at GoogleAuth.getClient (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:502:28) at Object.authorize (/app/api.js:18:29) at Object.<anonymous> (/app/index.js:547:4) at Module._compile (internal/modules/cjs/loader.js:1158:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10) at Module.load (internal/modules/cjs/loader.js:1002:32) {

Поэтому по какой-то причине создается впечатление, что учетная запись службы по умолчанию не используется. Кто-нибудь знает, чего мне здесь не хватает?

1 Ответ

0 голосов
/ 28 марта 2020

Оказывается, я включил файл .env в сборку. Этот файл содержит переменную окружения GOOGLE_APPLICATION_CREDENTIALS. Исключение этого файла из сборки docker устранило проблему.

...