Google Cloud Run-使用Eventarc API触发resourceName语法

问题描述

Google最近发布了新的Eventarc API触发器,例如用于运行Cloud。 我的想法是为我的云存储构建一个触发器,例如: 存储桶中的新文件→触发云运行(带有审核日志触发器)

cloud_run_path:... run.app/api/v1/data-fetcher bucket_id:测试桶

我刚刚使用以下命令创建了触发器,并成功完成了

gcloud beta eventarc triggers create test-event-trigger \
--location=europe-west1 \
--destination-run-service=test-event-data-fetcher \
--destination-run-path=/api/v1/data-fetcher \
--destination-run-region=europe-west1 \
--matching-criteria="type=google.cloud.audit.log.v1.written" \
--matching-criteria="serviceName=storage.googleapis.com" \
--matching-criteria="methodName=storage.objects.create" \
--matching-criteria="resourceName=projects/_/buckets/test-bucket" \
--service-account=$PROJECT_NR-compute@developer.gserviceaccount.com

问题是,我不希望触发器在项目的所有存储桶中查找新文件,而只是针对一个特定存储桶(例如test-bucket)。我现在用不同的文字(用:,=〜,...)测试了几个选项,但是触发器不接受这些选项。 也许您可以向我提供语法方面的帮助,或者向我展示如何为我的项目中的一个特定存储桶创建触发器?这样就行不通了...

解决方法

从这个时候(2020-11)开始,触发器的配置中不支持通配符和前缀匹配。似乎已经强烈要求使用此功能,而拥有此产品区域的Google产品经理显然知道此功能。没有添加此类功能的公开/承诺日期。如果这对您不利,请与您当地的Google代表联系,他们可以安排产品经理与您联系以讨论路线图。

,

您可以通过使用匹配条件type=google.cloud.pubsub.topic.v1.messagePublished来实现此目的,该条件订阅特定的Pubsub主题,而不是审核日志中的所有存储事件。然后,在test-bucket上配置存储触发器,以发布到为此Eventarc触发器生成的主题。

编辑:我的配置如下。

gcloud beta eventarc triggers create <my_trigger> \
    --destination-run-service=<my service> \
    --destination-run-region=us-central1 \
    --destination-run-path="/<my_endpoint>" \
    --matching-criteria="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

然后运行

gcloud beta eventarc triggers describe <my_trigger>

获取生成的主题的名称,并配置存储触发器以发布到该主题。