【问题标题】:Lamnda Python 3.8 GPG decryption can not find gpg binaryLambda Python 3.8 GPG解密找不到gpg二进制
【发布时间】:2021-03-23 19:48:59
【问题描述】:

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

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

错误:

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

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

gpg 二进制文件在 Lambda 中可用吗?我怎样才能做到这一点?

【问题讨论】:

    标签: python-3.x gnupg python-gnupgp


    【解决方案1】:

    您必须捆绑 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)
    

    【讨论】:

    • 我最终用 Lambda 打包了 gog 二进制文件,您能否添加有关如何获取二进制文件的说明?为了获得二进制文件,我启动了一个 EC2 实例并获得了它们: 1. 来自 '/usr/bin/gpg' 的 gpg 文件 2. 来自 '/usr/lib64/' 的 lib 文件
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多