微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Lamnda Python 3.8 GPG 解密找不到 gpg 二进制文件

如何解决Lamnda Python 3.8 GPG 解密找不到 gpg 二进制文件

我正在尝试使用 lambda 函数来解密进入 S3 的文件,我下载文件没有问题,但是当我尝试解密它们时,找不到 gpg。我曾尝试同时使用 python-gnupggnupg,但都没有提到 gnupg 在操作系统上不可用。下面是我在 python 中对 GPG 进行实例化的代码 它适用于 python 3.7,但如果我升级到 3.8,Lambda 使用 AMazon Linux 2,它不附带 gpg。我如何让它在 Lambda 中与 python 3.8 一起工作?

gpg = gnupg.GPG(gnupghome='/tmp')

错误

OSError: Unable to run gpg (gnupg) - it may not be available

我发现的所有示例似乎都没有做任何额外的事情。我正在为我的函数打包 python-gnugp 包和所有其他 python 包

Lambda 中是否提供 gpg 二进制文件?我怎样才能做到这一点?

解决方法

您必须捆绑 gpg 二进制文件及其依赖项并在您的包中交付它们。在我的包中,我将它们捆绑到一个名为“gpg”的文件夹中,然后当我在我的 Lambda 函数中使用 gpg 时,我会这样做:

def lambda_handler(event,context):
    old = os.environ.get("LD_LIBRARY_PATH")
    if old:
        os.environ["LD_LIBRARY_PATH"] = "./gpg" + ":" + old
    else:
        os.environ["LD_LIBRARY_PATH"] = "./gpg"
    
    gpg = gnupg.GPG(gnupghome='/tmp',gpgbinary='./gpg/gpg2',verbose=False)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?