隨着Firebase雲端功能的推出,我們正在考慮將我們當前的一些node.js服務器端代碼移至雲端功能。我遇到的一個問題是將文件從GCS存儲區下載到磁盤上的臨時文件,然後通過電子郵件將其作爲附件(使用mailgun-js)發送。firebase雲功能Google雲端存儲API錯誤
的一段代碼導致我的悲傷是:
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認證錯誤,但我不知道如何跟蹤。對於GCS,我需要在雲功能的.config()中使用不同的身份驗證參數嗎?如果是這樣,我怎麼輸入它們?我們的GCS存儲桶和項目在Firebase存儲的引入之前發佈,但我們已成功將它用於運行在我們服務器上的節點功能。
由於提前, 扎克
感謝您的回覆。不幸的是,我已經嘗試過了,但它不起作用。我想我可能有一個認證問題,但是在追蹤時遇到問題。 – Zach