我有一个Google Pub / Sub项目,并创建了一个主题和一个简单的订阅。
但是,当指定用于推送的URL时,我不断收到以下错误。我已经完成了网站验证过程,并按照https://cloud.google.com/pubsub/docs/push#other-endpoints中的说明在API和服务中注册了该域:
ERROR: Failed to create subscription [projects/<project-id>/subscriptions/my-sub-2]: The supplied HTTP URL is not registered in the subscription's parent project (url="https://us-central1-<project-id>.cloudfunctions.net/xxxx", project_id="<project id number>").
ERROR: (gcloud.pubsub.subscriptions.create) Failed to create the following: [my-sub-2].
请帮忙!
答案 0 :(得分:1)
可以通过设置--trigger-topic
命令行参数来将Cloud函数设置为明确订阅here中所述的Cloud Pub / Sub主题,而无需显式域验证。
答案 1 :(得分:0)
我遇到了这个确切的问题,但是使用了应用引擎。遵循此guide之后,创建订阅时遇到了相同的错误:
gcloud pubsub subscriptions create <subscription_name> \
--topic <topic_name> \
--push-endpoint \
https://<PROJECT_ID>.appspot.com/_ah/push-handlers/receive_messages/token=<TOKEN> \
--ack-deadline 30
经过实验并阅读了上面列出的一些注释(来自Iñigo的this one尤其有用),我意识到这并不是我的URL错误,但是我没有包含各种订阅和中的项目参数。
此版本对我有用:
gcloud pubsub subscriptions create projects/<PROJECT_ID>/subscriptions/<subscription_name> \
--topic projects/<PROJECT_ID>/topics/<topic_name> \
--push-endpoint \
https://<PROJECT_ID>.appspot.com/_ah/push-handlers/receive_messages/token=<TOKEN> \
--ack-deadline 30
答案 2 :(得分:0)
我无数次地谈到了这个问题,确实很烦人。这全部与注册http端点的所有权有关。 Google可以通过这种方式验证您是所提供端点的所有者。您可以在域所有权验证下的here中找到有关如何注册端点的信息。我将此包含在我的函数中,以便Google可以验证注册:
if request.method == 'GET':
return '''
<html>
<head>
<meta name="google-site-verification" content="{token}" />
</head>
<body>
</body>
</html>
'''.format(token=config.SITE_VERIFICATION_CODE)