Спасибо за ответ. К сожалению, я попробовал это, и это не работает. Я думаю, что у меня может быть проблема с аутентификацией, но у меня проблемы с ее поиском.

влением облачных функций Firebase мы собираемся переместить часть нашего текущего кода на стороне сервера node.js в облачные функции. Одна проблема, с которой я сталкиваюсь, - это загрузка файла из корзины GCS во временный файл на диске, а затем отправка его по электронной почте в виде вложения (с помощью mailgun-js).

Часть кода, вызывающая у меня горе:

return mkdirp(tempLocalDir).then(() => {
    const bucket = gcs.bucket(gcsBucket);
    const tempFilePath = tempLocalDir + gcsFile;
    return bucket.file(gcsFile).download({
        destination: tempFilePath
    }).then(() => {
        console.log('File downloaded locally to', tempFilePath);
        var messageSubject = "Test";
        var messageBody = "Test with attach";

        var mailgunData = {
            from: ,
            to: agentEmail,
            subject: messageSubject,
            html: messageBody,
            attachment: tempFilePath,
        };
        mailgunAgent.messages().send(mailgunData, function (error, body) {
            console.log(body);
        });

    });

});

Я получаю сообщение об ошибке в журнале функций:

ApiError: Forbidden
    at Object.parseHttpRespMessage (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/src/util.js:156:33)
    at Object.handleResp (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/src/util.js:131:18)
    at Duplexify.<anonymous> (/user_code/node_modules/@google-cloud/storage/src/file.js:724:21)
    at emitOne (events.js:96:13)
    at Duplexify.emit (events.js:188:7)
    at emitOne (events.js:96:13)
    at DestroyableTransform.emit (events.js:188:7)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.<anonymous> (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:1108:14)

Я смог загрузить файл в папку / tmp / на диске, используя запрос, и это будет запасной вариант, но я действительно хотел бы использовать инструменты GCS, если это возможно. Я «думаю», что это ошибка аутентификации в GCS, но я не уверен, как это отследить. Нужно ли иметь разные параметры аутентификации в облачных функциях .config () для GCS, чем для Firebase? Если да, то как мне их ввести? Наш пакет GCS и проект предшествовали внедрению Firebase Storage, но мы успешно использовали его с функциями узла, работающими на нашем сервере.

Заранее спасибо, Зак

Ответы на вопрос(3)

Ваш ответ на вопрос