我在亚洲-南亚地区部署了一个cloudrun服务,当消息在pubsub中发布时,我想从eventarc触发它。
但是asia-south1没有eventarc,所以我决定创建事件弧触发器为location=global。
参见下面的命令。
gcloud eventarc triggers create pubsub-trigger-new-auction-notification
--location=global
--destination-run-service=notification
--destination-run-path=/notify/bidder/auction
--destination-run-region=asia-south1
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
--transport-topic=projects/<my-project_id>/topics/newauction-notify
--service-account=cloud-run-pubsub-invoker@<my-project_id>.iam.gserviceaccount.com
然而,它失败了,下面的错误提到类型应该是google.cloud.audit.log.v1.written
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was invalid: [INVALID_ARGUMENT] The request was invalid: invalid value for attribute 'type' in trigger.event_filters: only type "google.cloud.audit.log.v1.written" is allowed in global location
当我尝试创建触发器与google.cloud.audit.log.v1.written由于缺少服务名称错误而失败。请参见
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was invalid: [INVALID_ARGUMENT] The request was invalid: missing required attribute "serviceName" in trigger.event_filters
我似乎找不到任何文档提到全局触发与pubsub和云运行。有人能帮助我了解如何链接一个基于公共订阅的事件触发器云运行时,事件弧位置是全局或指向我正确的方向?
感谢您可以设置支持eventarc的位置。"issue"你需要支付区域间的交通费用。就是这样。
作为解决方案,你需要知道如何工作EventArc。它在底层创建(但你可以在你的项目中看到)一个pubsub推送订阅,以在指定的URL上调用你的Cloud Run服务。
您可以手动创建此推送订阅并等待您所在地区的事件可用性。