【问题标题】:How to create password encrypted zip file in python through AWS lambda如何通过 AWS lambda 在 python 中创建密码加密的 zip 文件
【发布时间】:2022-11-04 09:49:40
【问题描述】:

我正在尝试通过在 python 3.9 上运行的 lambda 创建一个受密码保护的 zip 文件

我曾尝试使用 pyminizip 和 pyzipper,但两个库都遇到错误

对于pyminizip,我不断遇到 Unable to import module 'lambda_function': No module named 'pyminizip'

对于pyzipper,我不断遇到 OSError: Cannot load native module 'Cryptodome.Hash._SHA1': Not found '_SHA1.cpython-39-x86_64-linux-gnu.so', Cannot load '_SHA1.abi3.so': /var/task/Cryptodome/Util/../Hash/_SHA1.abi3.so: invalid ELF header, Not found '_SHA1.so'

对于库,我尝试将其作为层附加或将其与我的部署包一起压缩为 zip,但我仍然遇到与上述相同的错误。

我可以知道有人成功地在 lambda 中使用 python 将密码加密为 zip 文件吗?

非常感谢。

【问题讨论】:

    标签: python-3.x amazon-web-services aws-lambda zip


    【解决方案1】:

    您没有发布您的代码、您的操作系统等。您是否使用您的代码上传了 lib 和 so 文件?

    因为我不太了解你做了什么,所以我使用 ubuntu、pyminizip 和 python 3.7 创建了一个简单的 lambda 来测试它。

    首先,在项目文件夹中安装 pyminizip:

    pip install pyminizip -t .
    

    请注意,您将看到一个新文件夹和一个新的 so 文件:

    请注意,您需要将两者都上传到 lambda。

    现在,只需编写您的代码。我创建了一个简单的脚本,它读取我用我的代码上传的 json,并将其压缩保存在 lambda 的 tmp 文件夹中:

    import os
    
    import pyminizip
    
    
    def lambda_handler(event, context):        
        print(os.path.exists("/tmp/test.zip"))
        pyminizip.compress("test.json", None, "/tmp/test.zip", "awesomepassword", 9)
        return "ok"
    

    您可以在下面看到 lambda 的文件夹结构:

    就这样。如果您测试您的 lambda,您会发现它运行良好。

    【讨论】:

    • 非常感谢您的回复,我目前正在运行 python 3.9 作为我的 lambda 运行时,但我仍然遇到同样的错误。请查看我的答案,我在其中上传了有关我的部署包的更多信息
    • 我的部署包中有相同的设置,但我仍然遇到 python 3.9 (i.stack.imgur.com/zFznu.png) 的相同问题 使用的代码是这个 (i.stack.imgur.com/L6skg.png) ,我在顶部添加了“import pyminizip”,完全不知道我错过了什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2010-12-26
    • 2011-12-04
    • 2016-08-29
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多