【问题标题】:Pass certificates to AWS MQTT API from in-memory location instead of on-disk从内存位置而不是磁盘上将证书传递给 AWS MQTT API
【发布时间】:2021-01-31 09:43:27
【问题描述】:

我正在使用 Python 包 awsiotsdk 从 Python 环境设置 AWS IoT MQTT 连接。我已经按照这个例子https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/pubsub.py 进行了演示发布/订阅工作,所以我有所有的部分。

与演示的唯一区别是,在我的环境中,证书都驻留在内存而不是磁盘中。一个 hack 解决方案是将它们写入磁盘上的临时位置并按照示例进行操作。

我宁愿简单地实例化适当的 AWS 身份验证类,它可以接受类似文件的对象而不是字符串文件名。然而,遵循代码只会让我陷入 c-binding 死胡同。

如何使用内存证书创建 MQTT 客户端?

【问题讨论】:

  • 查看io.StringIOio.BytesIO - 您可以将字符串或字节写入这些(即内存中),它们看起来像一个文件对象。
  • 是的,但是awsiotsdk 不接受类似文件的对象,它只接受文件名字符串。也许是因为它交给了引擎盖下的一些 C api。至少我能说的最好。我是 SDK 新手,所以我需要更正需要更正的地方。

标签: python-3.x amazon-web-services aws-iot


【解决方案1】:

据我所知,这根本不可能。我的解决方案是使用 tempfile 包创建一个临时目录,我将证书写入该目录,然后在创建 MQTT 客户端时引用。它并不优雅,但它使我无需将证书作为外部依赖项进行管理(这是我想要避免的)。

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2022-10-07
    • 2022-10-19
    • 2021-12-29
    • 2019-06-02
    • 2012-06-24
    相关资源
    最近更新 更多