AWS Lambda突破了用于解密环境变量的代码

时间:2019-05-14 14:26:38

标签: python scikit-learn aws-lambda python-multiprocessing joblib

出于安全原因,我想在lambda函数中放入一些加密的环境变量,其中包括pandas,numpy,psycopg2和sklearn作为额外的python包。

该函数运行正常,但是当我引入以下代码解密变量时,它将停止工作:

import os
from base64 import b64decode

keys = {}
def get_variables(variable):
    encrypted = os.environ[f'{variable}']
    decrypted = boto3.client('kms').decrypt(CiphertextBlob=b64decode(encrypted))['Plaintext']
    keys[variable] = str(decrypted, 'utf-8') 

for variable in ['dbname','port','user','password','host']:
   get_variables(variable)

def lambda_handler(event,context):

   code
   result = keys['password']
   return result

具体来说,破坏一切的部分是这一行

result = keys['password']

代码是正确的,因为我已经在另一个Lambda函数中对其进行了测试(加上它基于lambda本身提供的示例),并且出现的错误如下:

/var/task/sklearn/externals/joblib/_multiprocessing_helpers.py:38: UserWarning: [Errno 38] Function not implemented.  joblib will operate in serial mode
  warnings.warn('%s.  joblib will operate in serial mode' % (e,))

我不知道该怎么做。

0 个答案:

没有答案