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

GCP PubSub:通过请求的CURL类型发布消息,curl,google-cloud-pubsub,Curl,Google Cloud Pubsub,有没有人有一个工作示例,说明如何直接从shell通过CURL类型的命令将消息发布到GCP PubSub主题 我试图不使用CLI,也不使用客户端库,而且我对OAUTH的东西很感兴趣 我很高兴有一个在Linux上运行的bash脚本需要做的事情的清单,若有人有这样的清单或者可以拼凑一个清单,我将非常感激 我已拥有的物品: 我有一个Linux计算引擎,我正在工作 我有一些通过CLI和Python发布的工作示例 我有一个服务帐户,它与pubsub合作得很好(参见前面的项目符号) 我完全了解Google

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

我试图不使用CLI,也不使用客户端库,而且我对OAUTH的东西很感兴趣

我很高兴有一个在Linux上运行的bash脚本需要做的事情的清单,若有人有这样的清单或者可以拼凑一个清单,我将非常感激

我已拥有的物品:

  • 我有一个Linux计算引擎,我正在工作
  • 我有一些通过CLI和Python发布的工作示例
  • 我有一个服务帐户,它与pubsub合作得很好(参见前面的项目符号)
我完全了解Google建议使用CLI或API客户端库,但我需要能够在安装最少的主机上运行(没有CLI、没有python库等)

我想我需要做以下几点:

  • base64对我的数据进行编码
  • 创建JSON Web令牌(JWT)
  • 使用JWS获取OAUTH令牌
  • 使用令牌调用API-例如POST
  • 非常感谢您的想法…Rich

    参考链接:


    是的,可以使用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 iam服务帐户创建
    gcloud项目添加iam策略绑定--成员=服务帐户:curl-publisher@.iam.gserviceaccount.com--角色=角色/pubsub.publisher
    
    现在,您可以从命令行登录到服务帐户并获取访问令牌:

    gcloud auth login curl-publisher@<project with created service account>.iam.gserviceaccount.com
    
    gcloud auth application-default print-access-token
    
    gcloud auth login curl-publisher@.iam.gserviceaccount.com
    gcloud auth应用程序默认打印访问令牌
    
    您只需运行上述步骤一次即可获得访问令牌。现在,您可以在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
    
    PROJECT=我的项目
    主题=我的主题
    访问令牌=
    curl-H'内容类型:application/json'-H“Authorization:Bearer$ACCESS_TOKEN”-X POST--data$'{“messages”:[{“data”:“abcd”}]}'https://pubsub.googleapis.com/v1/projects/$PROJECT/topics/$TOPIC:发布
    
    我无法使用服务帐户登录,因此我找到了以下命令:
    gcloud auth activate service account curl-publisher@.iam.gserviceaccount.com--key file=“”
    后跟
    gcloud auth print access token
    以打印令牌