更新对象时触发云功能

时间:2019-02-20 15:08:29

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

我有一个测试云功能(CF),可以在更新Cloud Storage中的对象时触发。

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,但它与更新不同。

1 个答案:

答案 0 :(得分: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."中指定的Cloud Function。

  

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

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