GCP PubSub:通过cURL类型的请求发布消息 [英] GCP PubSub: Publish message via CURL type of request
问题描述
有没有人有直接从外壳通过cURL类型的命令将消息发布到GCP PubSub主题的实用示例?
我正在尝试不使用CLI和客户端库,并且我被OAuth的东西挂住了。
如果能列出在Linux上运行的bash脚本需要做的事情,我将非常高兴,如果任何人有这样的东西或可以拼凑一个,我将非常感激。
我已有的项目:
- 我有一个正在处理的Linux计算引擎
- 我有一些通过CLI和Python发布的实用示例
- 我有一个服务帐户,可以很好地与pubSub配合使用(见上一个项目符号)
我完全认识到Google推荐使用CLI或API客户端库,但我需要能够在安装最少的主机上运行它(没有CLI、没有Python库等)。
我认为我需要做以下工作:
- 对我的数据进行Base64编码
- 创建JSON Web令牌(JWT)
- 使用JWS获取OAuth令牌
- 使用Token调用接口,如POSThttps://pubsub.googleapis.com/v1/projects/myproject/topics/mytopic:publish
非常感谢您的点子...Rich
参考链接:
https://cloud.google.com/pubsub/docs/publisher#pubsub-publish-message-protocol https://groups.google.com/forum/#!topic/cloud-pubsub-discuss/8fGaG5cWiTk https://groups.google.com/forum/?hl=sw#!topic/cloud-pubsub-discuss/8fGaG5cWiTk https://developers.google.com/identity/protocols/OAuth2WebServer https://developers.google.com/identity/protocols/OAuth2ServiceAccount
推荐答案
可以,可以使用cURL命令进行发布。您需要将访问令牌传递到请求中。要获取它,请登录到您将用于发布的所需服务帐户。如果您尚未创建,则可以创建并限制为仅允许发布:
gcloud iam service-accounts create curl-publisher
gcloud projects add-iam-policy-binding <project with topic> --member=serviceAccount:curl-publisher@<project with created service account>.iam.gserviceaccount.com --role=roles/pubsub.publisher
现在,您可以从命令行登录到服务帐户并获得访问令牌:
gcloud auth login curl-publisher@<project with created service account>.iam.gserviceaccount.com
gcloud auth application-default print-access-token
您只需运行上述步骤一次即可获得访问令牌。现在,您可以在cURL命令中使用该访问令牌:
PROJECT=my-project
TOPIC=my-topic
ACCESS_TOKEN=<token printed out above>
curl -H 'content-type: application/json' -H "Authorization: Bearer $ACCESS_TOKEN" -X POST --data $'{ "messages": [{"data": "abcd"}]}' https://pubsub.googleapis.com/v1/projects/$PROJECT/topics/$TOPIC:publish
这篇关于GCP PubSub:通过cURL类型的请求发布消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!