我可以将事件发布到 GCP 外部的 Cloud Pub/Sub 吗

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

我可以将事件发布到 GCP 外部的 Cloud Pub/Sub 中吗?

让我澄清一下我的疑问。在AWS中,我们可以通过API网关从非云客户端调用REST API,直接将事件发布到SNS主题中(https://github.com/cdk-patterns/serverless/blob/master/the-big- fan/README.md),GCP中有没有这样的方法可以将事件发布到Pub/Sub?

我可以看到SO中有一个类似的问题(从GCP外部访问Google Pub/Sub),但我相信它没有完全回答我的问题。是的,需要身份验证,并且它是一个横切功能,但是在 GCP 之外的 Pub/Sub 中发布事件的基本技术是什么

google-cloud-platform publish-subscribe google-cloud-pubsub
2个回答
3
投票

是的,您可以将消息发布到主题中,然后拉动它,甚至让 PubSub 通过推送订阅将其传递给您。

发布消息或从订阅者处拉取消息时,您可以通过 RESTRPC API 访问 PubSub。此外,您可以使用客户端库之一。

在这里您可以找到如何使用

gcloud
CLI 工具发布消息的示例,以及使用
REST API
python
java
以及其他编程语言的示例。

正如所引用的问题中提到的,您需要进行身份验证才能发布消息或拉取消息。您可以使用快速入门作为如何执行此操作的参考。请注意,您可以从 GCP 之外的任何计算机或虚拟机执行快速入门操作。

最后,如果您使用推送订阅来接收消息,您的端点将需要是可公开访问的 HTTPS 地址,并且拥有由证书颁发机构签名的有效 SSL 证书。同样,该端点可以位于 GCP 之外。


0
投票

代码通过 Google 提供的客户端库连接到 PubSub

在开发中,运行这两个命令,身份验证会持续几个小时。

gcloud auth login
gcloud auth application-default login

在生产中,在此处复制 JSON 文件

~/.config/gcloud/application_default_credentials.json

例如

{
  "type": "service_account",
  "project_id": "PROJECT_ID",
  "private_key_id": "KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_EMAIL",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
}

文件是在 GCloud Web 控制台中创建的:它称为“服务帐户密钥”。

如您所见,它包含私钥,因此应将其视为秘密。

如果您需要,可以选择让密钥过期,如果不需要,则可以选择不过期。

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