2016-02-18 2 views
-1

Я использую boto3 для использования услуг amazon's kms.что лучше использовать для python 2.7.X amazon client - boto или boto3?

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, так как там будет создана новая функция.

как говорится в примечании, я посылаю строку вместо официальных документов, в которой говорится, что вам нужно отправить тип байта.

Мне интересно, может ли это измениться в будущем? и тогда My api to amazon будет бесполезным, так как у меня нет bytes Тип в python 2.7.9

Есть комментарии? идеи?

+0

Мы не знаем, как Amazon изменит свой клиентский API в будущем. – deceze

ответ

6

Где эти «официальные документы» вы имеете в виду? Указатель был бы полезен.

Я думаю, что это действительно вопрос о совместимости между Python 2.x и 3.x. В Python 2.x, byte действительно str. В Python 3.x существует фактический тип bytes.

Вы можете использовать пакет six, чтобы помочь вам сгладить эти различия между версиями Python. В шестерке есть six.binary_type, который сопоставляется с str в Python 2.x и bytes в Python 3.x.

Я не думаю, что вам нужно беспокоиться о том, что ваш код не работает с будущей версией boto3, но вам нужно беспокоиться об этом, работая с Python 3.x в будущем.