Вот пример, который я написал в Node.js 10 для стандарта GAE, который вы можете использовать и адаптировать:
app. js
'use strict';
const express = require('express');
const {Storage} = require('@google-cloud/storage');
const app = express();
app.get('/', async(req, res) => {
let bucketName = '<BUCKET-NAME>'
// Initiate a Storage client
const storage = new Storage();
// List files in the bucket and store their name in the array called 'result'
const [files] = await storage.bucket(bucketName).getFiles();
let result = [];
files.forEach(file => {
result.push(file.name);
});
// Send the result upon a successful request
res.status(200).send(result).end();
});
// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
module.exports = app;
пакет. json
{
"name": "nodejs-app",
"engines": {
"node": ">=8.0.0"
},
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "^4.16.3",
"@google-cloud/storage": "^4.1.3"
}
}
app.yaml
runtime: nodejs10
Чтобы получить список с URL вместо имен файлов измените следующий фрагмент в приложении . js образец, представленный выше:
const [files] = await storage.bucket(bucketName).getFiles();
let result = [];
files.forEach(file => {
result.push("https://storage.cloud.google.com/" + bucketName + "/" + file.name);
});
РЕДАКТИРОВАТЬ: получение объектов 'metadata
Вот код, который вы можете использовать для получения метаданных объектов:
const [files] = await storage.bucket(bucketName).getFiles();
let result = [];
for (const file of files) {
const [metadata] = await file.getMetadata();
result.push(metadata.size);
};
res.status(200).send(result).end();
Node.js Ссылка на клиентскую библиотеку