有没有人有一个如何通过CURL类型的命令直接从shell发布消息到GCP PubSub主题的工作示例?
我正在尝试不使用CLI而不使用客户端库,而且我已经开始使用OAUTH了。
我很高兴有一个关于在Linux上运行的bash脚本需要做的事情的子弹列表,如果有人有这样或者可以拼凑一个我非常感激。
我已经拥有的物品:
我完全认识到谷歌建议使用CLI或API客户端库,但我需要能够在安装最少的主机上运行它(没有CLI,没有python库等)。
我想我需要做以下事情:
赞赏并非常感谢... 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
答案 0 :(得分:5)
是的,可以使用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