如何禁用 gcp pubsub 模拟器的消息加密?

How to disable message encryption for gcp pubsub emulator?

我正在使用 the official GCP PubSub emulator 在本地测试集成。

我想通过经典 curl/postman 工具发送消息,但它变得越来越复杂,因为此模拟器需要对传入消息进行加密。

例如,如果我们这样发送:

curl --location --request POST 'http://localhost:8091/v1/projects/my-project/topics/transactions:publish' \
--header 'Content-Type: application/json' \
--data-raw '{"messages":[{"data":"{\"foo\":\"baz\"}","attributes":{}}]}'

然后,我得到 400:

{
    "error": {
        "code": 400,
        "message": "Payload isn't valid for request.",
        "status": "INVALID_ARGUMENT"
    }
}

由于收到的消息无效。它需要加密,如果我嗅探加密的主体,它就可以工作。

但是在本地.加密消息运行

为了在 GCP 中禁用加密,我可以按照 this guide 但是它不适用于本地模拟器 运行 - 没有 GCP 环境或者我不知道该怎么做。

是否有禁用模拟器解密的选项?如果不是在哪里报告,则没有 GitHub 项目。

好吧,我花了一些时间才理解,但我认为你混淆了两件事:加密和编码。

PubSub 中的数据值未加密,而是以 base64 编码提供。这里不需要加密。 Base64编码是一种原始编码,防止数据丢失,编码类型,特殊字符,二进制数据和无聊的兼容东西。

注意:在装有 pubsub 模拟器的本地计算机上,数据在静态和传输中未加密。在 Google 云上,使用 PubSub 服务,数据在传输中和静态时都被加密


通过 curl 你可以使用这个命令(使用 linux OS)

curl --location --request POST 'http://localhost:8091/v1/projects/my-project/topics/transactions:publish' \
--header 'Content-Type: application/json' \
--data-raw "{\"messages\":[{\"data\":\"$(echo "{\"foo\":\"baz\"}" | base64 -)\",\"attributes\":{}}]}"

是的,反斜杠很无聊...

我不知道邮递员怎么办