python的dynamodb加密客户端

dynamodb-encryption-sdk的Python项目详细描述


Latest VersionSupported Python VersionsCode style: blackDocumentation Statushttps://travis-ci.org/aws/aws-dynamodb-encryption-python.svg?branch=masterhttps://ci.appveyor.com/api/projects/status/6mh2v0nusujldu72/branch/master?svg=true

Amazon DynamoDB Encryption Client for Python提供了Amazon DynamoDB项的客户端加密,以帮助您在将表数据发送到dynamodb之前保护表数据。它 提供完全兼容的Amazon DynamoDB Encryption Client的实现 用Amazon DynamoDB Encryption Client for Java

您可以在Read the Docs找到最新的python文档,并可以找到最新的 我们的primary documents中的完整文档。

你可以在GitHub上找到我们的消息来源。

开始

必需先决条件

  • python 2.7或3.4+

安装

注意

如果尚未安装cryptography,则可能需要安装其他 操作的cryptography installation guide中详细说明的先决条件 系统。

$ pip install dynamodb-encryption-sdk

概念

有关在使用时需要理解的重要概念的详细说明 客户,请查看我们的Concepts Guide

用法

帮助客户

我们提供看起来和感觉像低级客户机(EncryptedClient)的帮助客户机, 可用的服务资源(EncryptedResource)和表资源(EncryptedTable) 从boto3库。在大多数情况下,一旦配置好,这些客户机就可以准确地使用 就像从boto3创建标准客户机一样,您的项目将被透明地加密 写时解密,读时解密。

我不能对助手客户做什么?

对于大多数用途,helper客户端(一旦配置)可以用作 boto3客户端。然而,有几个案例并非如此。

更新项目

因为我们不知道你可能对一个项目进行的部分更新涵盖了所有 在您的项中的签名属性中,我们不允许助手客户端上有update_item

这是因为如果只更新一些已签名的属性,那么下次尝试 若要读取该项,签名验证将失败。

属性过滤

因为我们不知道项中的哪些属性是签名的,所以helper客户端不允许 任何属性筛选。

对于get_itembatch_get_itemscan,这包括使用AttributesToGetProjectionExpression

对于scan,这还包括使用SelectSPECIFIC_ATTRIBUTESALL_PROJECTED_ATTRIBUTES

这是因为如果不检索所有签名属性,签名验证将 失败。

项目加密器

helper客户端提供了一个熟悉的接口,但是实际的项目加密和解密 由低级项加密程序处理。你通常不需要与这些 低级功能,但对于某些高级用例,它可能是有用的。

如果您选择直接使用项加密程序函数,则需要提供 CryptoConfig每次呼叫。

>>>fromdynamodb_encryption_sdk.encrypted.itemimportdecrypt_python_item,encrypt_python_item>>>plaintext_item={...'some':'data',...'more':5...}>>>encrypted_item=encrypt_python_item(...item=plaintext_item,...crypto_config=my_crypto_config...)>>>decrypted_item=decrypt_python_item(...item=encrypted_item,...crypto_config=my_crypto_config...)

我应该什么时候使用项目加密程序?

一个您可能希望直接使用项加密器的用例示例是 正在处理DynamoDB Stream中的项。因为您直接接收项目数据,并且 在dynamodb json格式中,可以使用decrypt_dynamodb_item函数来解密 流中的项。我们还提供助手transformation functions

高级使用

默认情况下,helper客户端使用属性操作和加密材料提供程序 生成提供给项加密程序的CryptoConfig。用于一些高级用途 在案例中,您可能需要为特定操作提供自定义的CryptoConfig

助手客户端上的所有数据平面操作(获取项、放置项等)都接受crypto_config 除了底层boto3客户机接受的所有参数之外的参数。

如果提供了此参数,则CryptoConfig将用于该操作 客户通常会为您构建的。

>>>fromdynamodb_encryption_sdk.encrypted.tableimportEncryptedTable>>>encrypted_table=EncryptedTable(...table=table,...materials_provider=my_crypto_materials_provider...)>>>encrypted_table.put_item(...Item=my_standard_item...)# this uses the crypto config built by the helper>>>encrypted_table.put_item(...Item=my_special_item,...crypto_config=my_special_crypto_config...)# this uses my_special_crypto_config

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?