如何从服务器上的Firebase功能访问Google云存储
我想上传一些数据到谷歌云存储,然后在服务器上运行Firebase函数来处理数据 我这样做的原因是数据(表示我想导入Firestore的信息)可能非常大——可能是50MB。我可以很容易地得到代表30000个文档的数据。我不想在本地机器上处理数据,因为这可能需要几个小时如何从服务器上的Firebase功能访问Google云存储,firebase,google-cloud-platform,google-cloud-functions,google-cloud-storage,Firebase,Google Cloud Platform,Google Cloud Functions,Google Cloud Storage,我想上传一些数据到谷歌云存储,然后在服务器上运行Firebase函数来处理数据 我这样做的原因是数据(表示我想导入Firestore的信息)可能非常大——可能是50MB。我可以很容易地得到代表30000个文档的数据。我不想在本地机器上处理数据,因为这可能需要几个小时 我的问题是我找不到从服务器本身访问云存储的方法。我可以轻松地在本地和服务器之间下载和上传文件。在过去的几个小时里,我一直在阅读文档,但所有内容似乎都是基于从本地实例访问云存储。当云存储发生更改时,您可以触发云功能运行。医生。上载或更
我的问题是我找不到从服务器本身访问云存储的方法。我可以轻松地在本地和服务器之间下载和上传文件。在过去的几个小时里,我一直在阅读文档,但所有内容似乎都是基于从本地实例访问云存储。当云存储发生更改时,您可以触发云功能运行。医生。上载或更改的文件已经包含在元数据中,因此您不需要“访问存储”本身。从示例中可以看出:
/**
* Generic background Cloud Function to be triggered by Cloud Storage.
*
* @param {object} data The event payload.
* @param {object} context The event metadata.
*/
exports.helloGCSGeneric = (data, context) => {
const file = data;
console.log(` Event ${context.eventId}`);
console.log(` Event Type: ${context.eventType}`);
console.log(` Bucket: ${file.bucket}`);
console.log(` File: ${file.name}`);
console.log(` Metageneration: ${file.metageneration}`);
console.log(` Created: ${file.timeCreated}`);
console.log(` Updated: ${file.updated}`);
};
如果希望从函数中直接访问存储器(例如,如果希望使用新的/更改的数据写回存储器),则可以使用存储SDK。所有受支持语言的示例如下。文档中的示例:
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
// Creates a client from a Google service account key.
// const storage = new Storage({keyFilename: "key.json"});
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const bucketName = 'bucket-name';
async function createBucket() {
// Creates the new bucket
await storage.createBucket(bucketName);
console.log(`Bucket ${bucketName} created.`);
}
createBucket();
一个非常重要的警告云函数的最大执行时间约为60秒()。因此,长时间运行长达15分钟的进程应该改为使用。较长时间运行的流程应该在这样的环境中运行(您可以从功能启动并将工作委托给App Engine实例)。当云存储发生更改时,您可以触发云功能运行。医生。上载或更改的文件已经包含在元数据中,因此您不需要“访问存储”本身。从示例中可以看出:
/**
* Generic background Cloud Function to be triggered by Cloud Storage.
*
* @param {object} data The event payload.
* @param {object} context The event metadata.
*/
exports.helloGCSGeneric = (data, context) => {
const file = data;
console.log(` Event ${context.eventId}`);
console.log(` Event Type: ${context.eventType}`);
console.log(` Bucket: ${file.bucket}`);
console.log(` File: ${file.name}`);
console.log(` Metageneration: ${file.metageneration}`);
console.log(` Created: ${file.timeCreated}`);
console.log(` Updated: ${file.updated}`);
};
如果希望从函数中直接访问存储器(例如,如果希望使用新的/更改的数据写回存储器),则可以使用存储SDK。所有受支持语言的示例如下。文档中的示例:
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
// Creates a client from a Google service account key.
// const storage = new Storage({keyFilename: "key.json"});
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const bucketName = 'bucket-name';
async function createBucket() {
// Creates the new bucket
await storage.createBucket(bucketName);
console.log(`Bucket ${bucketName} created.`);
}
createBucket();
一个非常重要的警告云函数的最大执行时间约为60秒()。因此,长时间运行长达15分钟的进程应该改为使用。较长时间运行的进程应该在这样的环境中运行(您可以从您的功能开始,将工作委托给App Engine实例)。在后端代码中,您可以使用多种语言的SDK来处理云存储。你只是在寻找这些方面有困难吗?是的@DougStevenson,我猜SDK太多了,这很让人困惑。我一直在关注你们关于“云功能入门”的视频,访问云Firestore没有问题。我只是看不到访问云存储需要做什么。此时此刻,我只想发布到HTTP端点,然后在该函数中,我想从云存储中获取一个文件。我就是不知道该怎么做。你用的是哪一种?说清楚点,我用的是云功能,当我说“服务器”时,我指的是谷歌云。在这个场景中,我认为我必须使用NodeSDK。我找到了这个教程,但它只展示了如何响应云存储事件。您还可以使用Firebase Admin SDK,它封装了云节点SDK。这些很容易找到。有很多不同语言的SDK,你可以在后端代码中使用它们来处理云存储。你只是在寻找这些方面有困难吗?是的@DougStevenson,我猜SDK太多了,这很让人困惑。我一直在关注你们关于“云功能入门”的视频,访问云Firestore没有问题。我只是看不到访问云存储需要做什么。此时此刻,我只想发布到HTTP端点,然后在该函数中,我想从云存储中获取一个文件。我就是不知道该怎么做。你用的是哪一种?说清楚点,我用的是云功能,当我说“服务器”时,我指的是谷歌云。在这个场景中,我认为我必须使用NodeSDK。我找到了这个教程,但它只展示了如何响应云存储事件。您还可以使用Firebase Admin SDK,它封装了云节点SDK。这些很容易找到。加藤,你所说的“大约60秒的最大执行时间”不是9分钟,60秒是默认值。加藤,你所说的“大约60秒的最大执行时间”不是9分钟,60秒是默认值。