2016-08-25 6 views
0

파이썬 클래스에 몇 가지 메소드가 포함되어 있으며이를 람다 함수로 실행하고 테스트하려고합니다. 람다 환경에서 실행하는 데 문제가 있습니다. 람다 함수에서 클래스를 사용하는 예제를 찾지 못했습니다. 핸들러를 수정하고 모듈을 가져 오는 중 일부 오류가 있습니다. 람다 함수에서 클래스를 사용할 수 있습니까? (내 파일을 zip 파일로 업로드하려고했지만 결과는 동일합니다.)aws lambda 환경에서 Python 클래스를 어떻게 실행할 수 있습니까?

+1

당신은 AWS 파이썬 코드를 작성할 수 있습니다 람다는 당신이 다른 어떤 목적으로도 좋아할 것입니다. 람다 함수에 대한 로그에 문제가 있습니까? – birryree

+1

문제를 일으키는 코드 섹션을 게시하면보다 쉽게 ​​도움을받을 수 있습니다 :-) –

+0

디버깅 도움말 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에 원하는 질문에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서 그것을 재현하는 데 필요한 가장 짧은 코드. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 방법. http://stackoverflow.com/help/mcve –

답변

1

aws lambda에서 아래 코드를 실행하는 방법에 대해서도 동일한 의구심을 가지고 있습니다. Crypto.Cipher 가져 오기에서 암호화 가져 오기 임의 에서


수입 base64로 수입 hashlib

AES

클래스 AESCipher (객체) :

def __init__(self, key): 
    self.bs = 32 
    self.key = hashlib.sha256(AESCipher.str_to_bytes(key)).digest() 

@staticmethod 
def str_to_bytes(data): 
    u_type = type(b''.decode('utf8')) 
    if isinstance(data, u_type): 
     return data.encode('utf8') 
    return data 

def _pad(self, s): 
    return s + (self.bs - len(s) % self.bs) * AESCipher.str_to_bytes(chr(self.bs - len(s) % self.bs)) 

@staticmethod 
def _unpad(s): 
    return s[:-ord(s[len(s)-1:])] 

def encrypt(self, raw): 
    raw = self._pad(AESCipher.str_to_bytes(raw)) 
    iv = Random.new().read(AES.block_size) 
    cipher = AES.new(self.key, AES.MODE_CBC, iv) 
    return base64.b64encode(iv + cipher.encrypt(raw)).decode('utf-8') 
def decrypt(self, enc): 
    enc = base64.b64decode(enc) 
    iv = enc[:AES.block_size] 
    cipher = AES.new(self.key, AES.MODE_CBC, iv) 
    return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8') 

    cipher = AESCipher(key='abcd') 
    encrypted = cipher.encrypt("Hello World") 
    print(encrypted) 
    new_cipher = AESCipher(key='abcd') 
    decrypted = new_cipher.decrypt('y1sJ7uJITflG81eKHUWd+JkGlOyj3v/iR5HFyiIJv3u9ZpWFCX/XW+A5HS4iPBVb') 
    print(decrypted) 
관련 문제