GCP PubSub:通过请求的CURL类型发布消息

Ric*_*ane 2 curl google-cloud-pubsub

有没有人有一个可行的示例,说明如何直接从Shell通过CURL类型的命令将消息发布到GCP PubSub主题?

我试图不使用CLI,也不使用客户端库,而我却迷上了OAUTH。

如果能够在Linux上运行bash脚本,那么我将有一个项目清单,如果有人拥有或可以将它们拼凑在一起,我将非常感激。

我已经拥有的物品:

  • 我正在使用Linux计算引擎
  • 我有一些通过CLI和Python发布的工作示例
  • 我有一个与pubsub配合良好的服务帐户(请参阅上一个项目符号)

我完全认识到Google建议使用CLI或API客户端库,但是我需要能够在主机上以最少的安装(没有CLI,没有python库等)运行它。

我认为我需要执行以下操作:

  1. base64编码我的数据
  2. 创建一个JSON Web令牌(JWT)
  3. 使用JWS获取OAUTH令牌
  4. 使用令牌调用API-例如POST https://pubsub.googleapis.com/v1/projects/myproject/topics/mytopic:publish

想法很感激,非常感谢...丰富

参考链接:

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/协议/ OAuth2ServiceAccount

Kam*_*osn 6

是的,可以使用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
Run Code Online (Sandbox Code Playgroud)

现在,您可以从命令行登录服务帐户并获取访问令牌:

gcloud auth login curl-publisher@<project with created service account>.iam.gserviceaccount.com

gcloud auth application-default print-access-token
Run Code Online (Sandbox Code Playgroud)

您只需运行上述步骤一次即可获得访问令牌。现在,您可以在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
Run Code Online (Sandbox Code Playgroud)