从内存位置而不是磁盘位置将证书传递给 AWS MQTT API

Pass certificates to AWS MQTT API from in-memory location instead of on-disk

我正在使用 Python 程序包 awsiotsdk 从 Python 环境设置 AWS IoT MQTT 连接。我按照这个例子 https://github.com/aws/aws-iot-device-sdk-python-v2/blob/main/samples/pubsub.py 并让演示 publish/subscribe 开始工作,所以我拥有了所有的部分。

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

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

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

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