Я пытаюсь сгенерировать токен авторизации для вызова развернутой службы Cloud Run, ниже, если мой код вызывается на сервер метаданных:
async function auth(receivingServiceURL:string) {
const metadataTokenURL = 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=';
const options ={
headers: {
'Metadata-Flavor': 'Google',
},
}
const response = await fetch(metadataTokenURL + receivingServiceURL, options);
return response;
}
Моя ошибка выглядит следующим образом:
> at ClientRequest.<anonymous> (/Users/dennisy/dev/view/functions/node_modules/node-fetch/lib/index.js:1455:11)
> at ClientRequest.emit (events.js:210:5)
> at Socket.socketErrorListener (_http_client.js:406:9)
> at Socket.emit (events.js:210:5)
> at emitErrorNT (internal/streams/destroy.js:92:8)
> at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
> at processTicksAndRejections (internal/process/task_queues.js:80:21) {
> message: 'request to http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://universal-sentence-encoder-lite-xnqffnl2ba-ew.a.run.app failed, reason: getaddrinfo ENOTFOUND metadata',
> type: 'system',
> errno: 'ENOTFOUND',
> code: 'ENOTFOUND'
> }
Я звоню из функции firebase.
EDIT: после некоторой начальной помощи проблема заключается в том, что это работает нормально при развертывании в облаке, но не локально из эмулятора функций firebase.
Попытка получить доступ к любому API / URL на сервере метаданных Google возвращает тот же результат:
FetchError: request to http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://universal-sentence-encoder-lite-xnqffnl2ba-ew.a.run.app failed, reason: getaddrinfo ENOTFOUND metadata.google.internal
Похоже, что ресурс не найден reason: getaddrinfo ENOTFOUND metadata.google.internal
, но это не такпри развертывании он работает нормально.
Я использую свой основной ключ учетной записи службы, который имеет права владельца для всего проекта.