从适用于 DynamoDB 的 AWS 控制台使用二进制值

Using Binary Values from AWS Console for DynamoDB

我们正在使用一组用 Python 编写的 Lambda 函数来读取数据并将数据写入 DynamoDB table,包括一个压缩二进制数据列。 Lambda 函数运行良好,能够成功解压二进制数据并使用它。

我们最近收到一个问题,要求我们进入控制台并调查 DynamoDB 中的二进制数据 table。这是我们 运行 遇到问题的时候。

当我们压缩数据时,Python 显示如下:

b'x\x9c\xed\x99\xcfO\xdb0\x14\xc7\xef\xfc\x15V\xcf\x14%M\xe9\xc6n]\t\x10\t\x95\n\x18\x97\xa9\xb2\x8c'

但是,在 AWS 控制台中,我们看到的值看起来更像这样:

'eJzsveuOHUmSHvgqifo1i1U6/H7Zf1lkspoDMkkkydKMBIHoqa7daexEt7a6WoBD0LvL7GSeZJi5hceh5cnkYoaUutnD7zMPjzgR'

将第二个值放入 Python 并尝试解压缩它不起作用,即使我将其转换为字节数组或将其作为二进制文件或其他任何方式读取也是如此。

有谁知道通过 AWS 控制台获取更接近第一个值的好方法,或者至少将第二个值转换为第一个值,以便我们可以 运行 通过解压缩功能得到它并获得实际价值?如果没有,至少有人可以给我这两种格式的术语吗?它们显然都是二进制数据,但我确信有一个很好的名称来描述它们在这里是如何编码或表示的。

谢谢!

DynamoDB 控制台向您显示底层二进制属性值的 base64 编码表示。

我假设这样做是合理的,以便控制台可以安全地显示任意二进制属性值。

如果你解码显示的值,如下,你可以恢复原来的Python字节:

base64.b64decode('eJzsv...')
# Result is: b'x\x9c\xec\xbd...'