【问题标题】:Triggering Cloud Function on update to object更新对象时触发云函数
【发布时间】:2019-07-14 07:50:03
【问题描述】:

我有一个测试云函数 (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,但它与更新不同。

【问题讨论】:

  • 请在每个帖子中限制自己一个问题,否则可能会因为“过于宽泛”而被关闭。

标签: google-cloud-platform google-cloud-storage google-cloud-functions


【解决方案1】:

以上命令触发了 CF。这是为什么?

您启用了存储桶版本控制,然后使用gsutil 命令复制存储桶中的文件。这使得该文件的实时副本在存储桶中可用并创建了它的存档版本,有关更多信息,您可以访问Object Versioning 文档。您可以通过运行gsutil ls -a gs://[BUCKET_NAME] 命令来验证这一点,有关更多信息,您可以访问Using Object Versioning > Listing archived object versions 文档。因此,使用您所使用的-trigger-event google.storage.object.archive,它将触发云功能,因为它在Google Cloud Storage Triggers > Object Archive 文档"This event is sent when a live version of an object is archived or deleted." 中指定。

另一个问题:如何使用 gsutil 更新存储桶中的对象?

如果您想更新对象的元数据,可以访问Objects: update 文档链接以获取更多信息。但是,如果您想更新它自己的对象,您可以从Google Cloud Console 或使用cp - Copy files and objects 文档中指定的gsutil cp ... 命令上传对象的新版本。这将使用新版本参考号归档旧对象,并使新版本的对象存在于存储桶中。

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2019-07-14
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2023-03-31
    • 2020-01-20
    相关资源
    最近更新 更多