Я пытался отладить функцию Google Cloud, которая должна возвращать signedUrl для загрузки файла в Google Cloud Storage.
У меня есть облачная функция https:
exports.gcpSecureURL = functions.https.onCall((data, res) => {
const bucketName = data.bucket;
const fileName = data.filename;
let signedUrl = generateV4UploadSignedUrl(bucketName, fileName)
.then(value => {
console.log("VALUE: ", value);
return value
})
res.send(signedUrl)
});
Value никогда не достигается, а signedUrl всегда является обещанием.
В функции generateV4UploadSignedUrl у меня есть:
async function generateV4UploadSignedUrl(bucketName, fileName) {
// These options will allow temporary uploading of the file with outgoing
// Content-Type: application/octet-stream header.
const options = {
version: 'v4',
action: 'write',
expires: Date.now() + 15 * 60 * 1000, // 15 minutes
contentType: 'application/octet-stream',
};
// Get a v4 signed URL for uploading file
const [url] = await storage
.bucket(bucketName)
.file(fileName)
.getSignedUrl(options)
return url;
};
Параметр bucketName правильный, а fileName - это просто имя файла, который я хочу загрузить поэтому на этапе, когда я генерирую URL-адрес, не должно иметь значения?
Я не понимаю, почему метод signedUrl () вообще ничего не возвращает. Я изменил разрешение в моем сегменте на StorageAdmin для всех пользователей, и моя функция настроена так, чтобы разрешить неаутентификацию.
В журналах облачных функций в generateV4UploadSignedUrl есть ошибка типа:
TypeError: (intermediate value) is not iterable
at generateV4UploadSignedUrl (/workspace/index.js:51:19)
* 1017 идея, что происходит, и журналы функций кажутся довольно непрозрачными. Что я делаю не так, пожалуйста?