我正在尝试将云函数pubsub订阅转发到一个死信主题,如下所述:https://cloud.google.com/pubsub/docs/dead-letter-topics#gcloud
我试过了
$ gcloud pubsub subscriptions update gcf-worker-topic --dead-letter-topic=gcf-worker-dead-letter-topic并尝试在控制台中修改gcf-worker-topic订阅。两者都给了我相同的错误:
ERROR: (gcloud.pubsub.subscriptions.update) INVALID_ARGUMENT: The supplied AppEngine URL project does not match the subscription's parent project目标是在云函数崩溃时将消息转发到死信队列。
我做错了什么?这不受支持吗?是否有未来支持的计划?
发布于 2020-06-12 17:42:22
当您将Cloud Function直接插入到一个主题时,会使用一个奇怪的端点创建一个自动推送订阅:
https://d4d1290519676f29baf13a7bf18a25bf-dot-jea3ef1cff72566d8-tp.appspot.com/_ah/push-handlers/pubsub/projects/PROJECT_ID/topics/test-topic?pubsub_trigger=true您可以看到这个URL在appspot.com中,这是典型的App Engine。因此,直接插入到PubSub云函数生成了一个在外部/谷歌项目中使用AppEngine的奇怪的黑客攻击。你无法更新它。
解决方法是在HTTP触发模式下更改您的云函数,并在其上创建PubSub推送订阅。但是,要小心,因为PubSub消息格式并不完全相同
支持推送订阅的
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}直接链接云函数的
发布于 2020-06-12 08:02:53
您可能还需要--dead-letter-topic-project。请参阅dosumentation。
发布于 2020-06-12 17:13:54
我相信您正在更新主题(gcf-worker- topic id ),而不是subscription id。
在订阅中定义了dead-letter-topic。尝试创建新订阅:
gcloud pubsub subscriptions create subscription-id \
--topic=gcf-worker-topic \
--dead-letter-topic=gcf-worker-dead-letter-topic \
--max-delivery-attempts=max-delivery-attempts \
[--dead-letter-topic-project=dead-letter-topic-project]https://stackoverflow.com/questions/62334198
复制相似问题