Я зашифровал переменную окружения в функции AWS Lambda с помощью AWS KMS. Затем я попытался расшифровать переменную в коде, используя пример кода, предоставляемого AWS, который адаптирован к моей переменной:
import os
import boto3
from base64 import b64decode
keys = {}
def get_variable(variable):
encrypted = os.environ[f'{variable}']
decrypted = boto3.client('kms').decrypt(CiphertextBlob=b64decode(encrypted))['Plaintext']
keys[variable] = decrypted
get_variable('port')
def lambda_handler(event,context):
port = keys['port']
return port
Я протестировал функцию, но она выдает следующую ошибку:
An error occurred during JSON serialization of response: b'5934' is not JSON serializable
Traceback (most recent call last):
File "/var/lang/lib/python3.6/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/var/lang/lib/python3.6/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/var/lang/lib/python3.6/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/var/runtime/awslambda/bootstrap.py", line 110, in decimal_serializer
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: b'5934' is not JSON serializable
Тем не менее, переключение Lambda с Python 3.6 на Python 3.7 делает его отлично работающим. Есть ли способ решить эту проблему, чтобы мне не пришлось менять версию Python?