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

问题描述 投票:0回答:2

有人有如何直接从 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 - 例如发布 https://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 google-cloud-pubsub
2个回答
14
投票

是的,可以使用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

0
投票

如何从 GCP 世界之外(即从 POSTMAN 或 WEBHOOK)执行这些操作? 我已经创建了一个服务帐户并为其赋予了适当的角色,即下面的步骤 1 和步骤 2。

如何以自动化方式从 PostMan 或 Webhook 等外部应用程序封装/调用步骤 3 和 4?

  1. gcloud iam 服务帐户创建curl-publisher

  2. gcloud 项目 add-iam-policy-binding --member=serviceAccount:[电子邮件受保护] --role=roles/pubsub.publisher

  3. gcloud 身份验证登录 [电子邮件受保护]

  4. gcloud auth 应用程序-默认打印访问令牌

© www.soinside.com 2019 - 2024. All rights reserved.