Как включить ключ учетной записи службы хранения в функцию - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь включить ключ учетной записи службы в свою функцию хранения, чтобы иметь возможность получить долгоживущий подписанный URL, следуя устаревшему примеру здесь

https://github.com/firebase/functions-samples/blob/b404482342906ee1b46dddb4c75667685ab098a1/generate-thumbnail/functions/index.js#L21

Я скачал свой ключ из IAM в формате JSON. Я пытался сохранить его прямо рядом с моей функцией

-функции / хранение / resizeProfileImg.js

-функции / хранение / сервис-счет-credentials.json

-функции / index.js

-функции / admin.js

где resizeProfileImg.js - моя функция, и она называется так

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: './service-account-credentials.json'})

но после развертывания при срабатывании функции я получаю ошибку

Ошибка: ENOENT: нет такого файла или каталога, откройте '/srv/service-account-credentials.json'

Я даже пытался добавить его в константу, как это

const serviceAccountCredentials = require('./accountKey/service-account-credentials.json')

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({ projectId: projectId ,keyFilename: serviceAccountCredentials})

но тогда я получаю ошибку

TypeError: путь должен быть строкой. Получено {тип: 'service_account', ...

Есть идеи, как это сделать правильно

1 Ответ

1 голос
/ 01 июня 2019

В облачных функциях текущий каталог . находится не там, где находится ваш исходный файл.Это место, где была развернута папка функций.Поскольку ваш файл учетных данных находится в подкаталоге, называемом «хранилище», вам нужно будет использовать его в пути.

const serviceAccountCredentials = require('./storage/service-account-credentials.json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...