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

Lamnda Python 3.8 GPG decryption can not find gpg binary

我正在尝试使用 lambda 函数来解密进入 S3 的文件,我下载文件时没有问题,但是当我尝试解密它们时找不到 gpg。我已尝试同时使用 python-gnupggnupg,但均未能提及 gnupg 在 OS 上不可用。在 python 中我的 isntatiating 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)