google-cloud-platform - 更新对象时触发云函数
问题描述
我有一个测试云函数 (CF) 来触发更新云存储中的对象。
exports.test_cf = (event, callback) => {
console.log("Test CF executed successfully");
callback();
}
使用以下功能部署上述功能:
gcloud functions deploy --runtime nodejs6 --trigger-resource [BUCKET-NAME] --trigger-event google.storage.object.archive --timeout=540s --verbosity=info
在存储桶上设置版本控制后,我使用gsutil
如下方式将文件复制到存储桶:
gsutil cp <file> gs://[BUCKET-NAME]/
以上命令触发了 CF。这是为什么?根据 GCP 文档,google.storage.archive
仅在更新时触发 CF。
另一个问题:如何使用 更新存储桶中的对象gsutil
?我明白gsutil rewrite
了,但它与更新不同。
解决方案
以上命令触发了 CF。这是为什么?
您启用了存储桶版本控制,然后使用该gsutil
命令复制存储桶中的文件。这使得该文件的实时副本在存储桶中可用并创建了它的存档版本,有关更多信息,您可以访问对象版本控制文档。您可以通过运行该命令来验证这一点gsutil ls -a gs://[BUCKET_NAME]
,有关更多信息,您可以访问使用对象版本控制 > 列出归档对象版本文档。因此,使用-trigger-event google.storage.object.archive
您所使用的,它将触发 Cloud Function,因为它在Google Cloud Storage Triggers > Object Archive文档中指定,"This event is sent when a live version of an object is archived or deleted."
.
另一个问题:如何使用 gsutil 更新存储桶中的对象?
如果要更新对象的元数据,可以访问对象:更新文档链接以获取更多信息。但是,如果您想自行更新对象,您可以通过cp - Copy files and objects文档中指定Google Cloud Console
的命令或使用命令上传新版本的对象。这将使用新版本参考号归档旧对象,并使新版本的对象存在于存储桶中。gsutil cp ...
推荐阅读
- apache-kafka - Rsyslog 找不到 kafka 模块
- javascript - 在父单击时将类添加到子组件
- bash - 按镜像名称删除容器
- python - python pandas获取列值的前几位
- c# - ToMailMessage() - Header 中的无效字符
- docker - 在 docker 容器中为 Win32 api 绑定目录
- python - 如何在 Python 中使用 numpy 将 3D 矩阵和 2D 矩阵相乘?
- amazon-rds - RDS 数据库集群参数组和数据库参数组有什么区别?
- python - 在 Pandasql 中以小时为单位计算日期时间差
- python - 如何在 Django 的呈现模板中使链接可点击?