使用
gcloud
CLI 启动 PubSub 模拟器并相应加载环境变量后,gcloud
CLI 仍通过我们的 Google 生产帐户进行身份验证。基本上,我们做到了:
# Starting the emulator in one shell
gcloud beta emulators pubsub start
# In a different shell
$(gcloud beta emulators pubsub env-init)
gcloud pubsub topics list
但是,我们的制作主题列在这里。预期的输出将是一个空列表,因为我们试图列出新启动的 PubSub 模拟器中的主题,该模拟器在启动时不包含任何内容。
我们习惯于启动 Bigtable 模拟器并使用
cbt
CLI 毫无问题地连接到它,因为它可以识别 BIGTABLE_EMULATOR_HOST
。是否可以使用相同类型的工具来管理/检查 PubSub 模拟器资源?看起来 gcloud
不知道 *_EMULATOR_HOST
变量。
提前谢谢您,
PS:我们
gloud version
的输出:
Google Cloud SDK 182.0.0
alpha 2017.09.15
beta 2017.09.15
bigtable
bq 2.0.27
cbt
core 2017.12.01
gcloud
gsutil 4.28
kubectl
pubsub-emulator 2017.09.15
Google 公共问题跟踪器 中存在针对此功能的功能请求。工程团队已了解此请求,目前正在调查,预计预计到达时间尚未确定。所有进一步的通信都将在该功能请求中进行。
有同样的问题,这对我有用
Google 团队并不真正赞成此功能,他们的理由对我来说是有道理的。您可以在@Jordan 提供的链接中阅读它。
解决方法是手动覆盖 API 端点。
首先,找出模拟器的端口号(运行命令时已经有了它:))
# gcloud beta emulators pubsub env-init
export PUBSUB_EMULATOR_HOST=0.0.0.0:8538
然后覆盖
gcloud
的 API 端点以指向您的模拟器。请注意,格式必须为 http://localhost:PORT/
(必须是 http
协议而不是 https
并且必须以 /
结尾)。
gcloud config set api_endpoint_overrides/pubsub http://$PUBSUB_EMULATOR_HOST/
不要忘记将其恢复回来
gcloud config unset api_endpoint_overrides/pubsub