python 2.7.X 亚马逊客户端使用什么更好 - boto 或 boto3?

what's better to use for a python 2.7.X amazon client - boto or boto3?

我正在使用 boto3 来使用亚马逊的 kms 服务。

def __init__(self):
    self.kms_client = boto3.client('kms')

def encrypt_text(self, text):
    response = self.kms_client.encrypt(
        KeyId = self.global_key_alias,
        Plaintext = text
    )
    return response['CiphertextBlob']

def decrypt_text(self, encrypted_text):

    # official docs state that encrypted_text should be a byte(doesn't exists in python 2)
    # currently it's working when sending a string, but it's dangerous
    response = self.kms_client.decrypt(
        CiphertextBlob = encrypted_text
    )

我正在使用 boto3,因为新功能将在那里开发。

正如注释所说,我发送的是一个字符串,而不是声明您需要发送字节类型的官方文档。

我想知道这在未来是否会改变?然后我的 api 到亚马逊将毫无用处,因为我没有 bytes 输入 python 2.7.9

有什么意见吗?想法?

您指的这些 "official docs" 在哪里?指针会有所帮助。

我认为这确实是一个关于Python 2.x 和3.x 之间兼容性的问题。在 Python 2.x 中,一个 byte 实际上是一个 str。在Python3.x中,有一个实际的bytes类型。

您可以使用 six 包来帮助您消除 Python 版本之间的这些差异。六中有一个six.binary_type映射到Python中的str2.x和Python3.x中的bytes

我认为您不必担心您的代码无法与未来版本的 boto3 一起使用,但您确实需要担心它在将来某个时间与 Python 3.x 一起使用。