云函数可以从云存储中读取吗?
Posted
技术标签:
【中文标题】云函数可以从云存储中读取吗?【英文标题】:Can a Cloud Function read from Cloud Storage? 【发布时间】:2018-08-18 10:52:44 【问题描述】:我能找到的关于使用 GCF+GCS 的唯一文档是 https://cloud.google.com/functions/docs/tutorials/storage。 AFAICT 这只是展示如何使用 GCS 事件来触发 GCF。
在GCF dependencies 的文档中,它只提到了节点模块。 GCF 代码是否可以从 GCS 存储桶中读取?是否只是需要一个知道如何与 GCS 通信的节点模块的情况,如果是,有没有这样的例子?
【问题讨论】:
【参考方案1】:是的,但请注意,它会将结果存储在 ramdisk 中,因此您需要足够的 RAM 用于您的函数来下载文件。
var storage = require('@google-cloud/storage');
const gcs = storage(projectId: "<your_project>");
const bucket = gcs.bucket("<your_bucket>");
const file = bucket.file("<path/to/your_file>")
exports.gcstest = (event, callback) =>
file.download(destination:"/tmp/test", function(err, file)
if (err) console.log(err)
elsecallback();
)
;
【讨论】:
fs
是故意不用的吗?
我真的不知道为什么我认为需要导入fs
。这是一个旧的 GCF 测试,我正是为了回答你问的同样的问题而做的,我想我在达到当前的方法之前尝试了几种方法。我将编辑导入。
另外,不要相信它会起作用。据我所记得,它最终工作了,但它是一个旧的。最好自己试试。此外,在这种情况下是 pubsub 触发的。根据需要进行更改。
谢谢。我的用例也将被 pubsub 触发。
好的,只需重新部署该功能,它仍然可以工作(即使没有fs
!)。我的个人版本还检查下载所需的时间,因为我对吞吐量感到好奇。如果您也有兴趣,请告诉我,我可以用我更完整的示例更新示例。【参考方案2】:
是的,您可以读写存储桶
const storage = require('@google-cloud/storage')();
const myBucket = storage.bucket('my-bucket');
const file = myBucket.file('my-file');
file.createReadStream().on('data', () =>
// do something!
);
有关更多信息,请查看Google Cloud 上的文档。
【讨论】:
【参考方案3】:Google 云函数只会执行您上传的代码。 如果您的代码包含连接到谷歌云存储的库,那么您将能够连接到谷歌云存储,因为您将连接到任何其他 api / 服务。
有几种方法可以连接到谷歌云存储,如 API、oauth 或签名的 url...所有这些方法都可以在谷歌云功能上使用,所以我建议你查看谷歌云存储文档以找到最适合您的情况。
【讨论】:
以上是关于云函数可以从云存储中读取吗?的主要内容,如果未能解决你的问题,请参考以下文章