gpt4 book ai didi

javascript - 云存储文件下载后如何删除?

转载 作者:行者123 更新时间:2023-12-02 18:20:25 24 4
gpt4 key购买 nike

我有一个云函数,可以从云存储中删除文件

功能:

const { Storage } = require("@google-cloud/storage");
const storage = new Storage();

let handler = async (file, context) => {
console.log(` Event: ${context.eventId}`);
console.log(` Event Type: ${context.eventType}`);
console.log(` Bucket: ${file.bucket}`);
console.log(` File: ${file.name}`);

let bucket = storage.bucket(file.bucket);
let bucketFile = bucket.file(file.name);

bucketFile.delete();
};

我想在存储桶中的任何文件下载完成后触发此功能。

我查看了 Cloud Storage 触发器,

google.storage.object.finalize (default)

google.storage.object.delete

google.storage.object.archive

google.storage.object.metadataUpdate

但它们并没有按照我想要的方式工作。大家有什么建议吗?

编辑:

如果我需要多解释一下我想做什么;无论是否在我们的系统中注册,用户都会获得公开的一些数据链接。由于这些链接可能包含敏感数据,我希望获得一次性下载的权利。单次下载后,数据需要永久删除。

最佳答案

如果您激活 Cloud Storage 上的审核日志,您可以捕获 get 事件(请注意,Cloud Storage 上的审核日志会生成大量日志量,并且会产生成本)。

激活审核日志后,您可以根据该方法名称进行过滤:

methodName: "storage.objects.get"

当然,您可以在 Cloud Logging 上添加其他过滤器,例如用于过滤存储桶的资源名称和/或文件前缀/后缀(使用 =~ 作为正则表达式)

当您的过滤器正常并且您仅获得所需的条目时,创建一个到 PubSub 的接收器,然后创建一个 Push PubSub 订阅来调用您的代码段(在 Cloud Functions 或 Cloud Run 上)。

您将收到 Cloud Logging JSON 条目,获取 JSON 中的资源名称以了解已下载哪个文件,然后将其删除。

关于javascript - 云存储文件下载后如何删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70970632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com