【问题标题】:Using aws encryption SDK in python AWS lambda在 python AWS lambda 中使用 aws 加密 SDK
【发布时间】:2018-11-26 14:55:26
【问题描述】:

我尝试使用 aws 加密库在 AWS Lambda 中使用 KMS 密钥加密/解密数据(使用 python)。但是,在运行 lambda 时出现错误(抱怨找不到共享库,稍后我将使用确切的库进行更新)。我猜 SDK 使用的共享库没有安装在 AWS lambda 环境中。

这是我正在使用的 SDK:https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/python.html

在构建我的包时,我正在执行 pip install aws-encryption-sdk 和加密。

谁能给我指点如何解决它?

更新:

这是错误信息:

Unable to import module 'lambdaMain': libffi-d78936b1.so.6.0.4: cannot open shared object file: No such file or directory

更新 2: 对于那些想知道解决方案的人。我在错误的平台上构建了库。在与您使用的任何 lambda 运行时兼容的亚马逊 AMI 上进行 pip 安装等操作非常重要。

【问题讨论】:

  • 你能说得更具体点吗?确切的错误信息是什么?您是手动构建 Lambda 包吗?你在使用 Serverless/SAM/Zappa/etc 吗?
  • 我用错误消息更新了问题。我正在构建服务器上手动构建 lambda 包。不使用 serverless/sam/zappa

标签: python amazon-web-services aws-lambda


【解决方案1】:

aws-encryption-sdkrequires 密码库:

SDK 需要所有平台上的加密库。全部 pip 版本在 Windows 上安装和构建密码库。 pip 8.1 及更高版本在 Linux 上安装和构建加密。如果你 正在使用早期版本的 pip 而您的 Linux 环境没有 拥有构建密码库所需的工具,您需要 安装它们。有关更多信息,请参阅在 Linux。

好像 Lambda 环境没有所需的库,所以需要添加。

可惜Miserlou的lambda-packages没有,需要自己编译。

耦合指针:

【讨论】:

  • 谢谢,我去看看!
【解决方案2】:

我在尝试打包我的库/要求时遇到了多个问题,以下是为我解决问题的步骤:

1) 使用 Amazon Linux AMI 创建一个新的 EC2 实例

2) 安装任何要求 sudo yum install python36 python36-virtualenv python36-pip -y

3) 使用python3创建新的虚拟环境virtualenv -p python3 .

4) 使用 pip3 安装任何要求 pip3 install aws_encryption_sdk

5) 必须添加 lib 和 lib64 中的所有内容(包括隐藏文件)

zip -r -9 /tmp/export.zip lib64/python3.6/site-packages/* lib64/python3.6/site-packages/.*
zip -r -9 /tmp/export.zip lib/python3.6/site-packages/* lib/python3.6/site-packages/.*
zip -r -9 /tmp/export.zip main.py   

希望这会有所帮助。

【讨论】:

  • 我还需要添加系统库。所以我将/usr/local/lib64/python3.6/site-packages/ 的内容复制到lib64/python3.6/site-packages//usr/local/lib/python3.6/site-packages/lib/python3.6/site-packages/ 确保使用cp -r /usr/local/lib/python3.6/site-packages/.* 所以它会复制隐藏文件。
  • 我刚刚得到了 libffi-806b1a9d.so.6.0.4 文件并用我的代码分发了它。蟒蛇 3.6。我试了一下,它奏效了。在我的代码中,我只是将它与 cryptografy 一起发布。
猜你喜欢
  • 2020-02-24
  • 2017-09-10
  • 2018-02-22
  • 2021-04-23
  • 2020-09-22
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多