gpt4 book ai didi

python - pysftp 库在 AWS lambda 层中不起作用

转载 作者:行者123 更新时间:2023-12-03 21:57:18 25 4
gpt4 key购买 nike

我想使用 将文件上传到 EC2 实例pysftp 库(Python 脚本)。所以我创建了小的 Python 脚本,它使用下面的行来连接

pysftp.Connection(
host=Constants.MY_HOST_NAME,
username=Constants.MY_EC2_INSTANCE_USERNAME,
private_key="./mypemfilelocation.pem",
)
some code here .....
pysftp.put(file_to_be_upload, ec2_remote_file_path)
此脚本将使用 .pem 文件将文件从我的本地 Windows 机器上传到 EC2 实例,并且它可以正常工作。
现在我想用 来做这个 Action AWS lambda 与 API 网关 功能。
所以我已将 Python 脚本上传到 AWS lambda。现在我不确定如何在 AWS lambda 中使用 pysftp 库,所以我找到了在 AWS lambda 层中添加 pysftp 库层的解决方案。我做了

pip3 install pysftp -t ./library_folder


我制作了上述文件夹的 zip 并添加到 AWS lambda 层中。
但是我仍然有很多错误,比如一个一个:-

No module named 'pysftp'

No module named 'paramiko'

Undefined Symbol: PyInt_FromLong

cannot import name '_bcrypt' from partially initialized module 'bcrypt' (most likely due to a circular import)

cffi module not found


我只是淡出上述错误我没有找到合适的解决方案。如何在我的 AWS lambda 中无缝使用 pysftp 库?

最佳答案

我建 pysftp层并使用 python 3.8 在我的 lambda 上测试它。只是为了查看导入和基本打印:

import json
import pysftp

def lambda_handler(event, context):
# TODO implement
print(dir(pysftp))
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}

我使用以下 docker 工具来构建 pysftp层:
  • https://github.com/lambci/docker-lambda

  • 所以我做了什么 pysftp曾是:
    # create pysftp fresh python 3.8 environment
    python -m venv pysftp

    # activate it
    source pysftp/bin/activate

    cd pysftp

    # install pysftp in the environemnt
    pip3 install pysftp

    # generate requirements.txt
    pip freeze > requirements.txt

    # use docker to construct the layer
    docker run --rm -v `pwd`:/var/task:z lambci/lambda:build-python3.8 python3.8 -m pip --isolated install -t ./mylayer -r requirements.txt

    zip -r pysftp-layer.zip .

    剩下的就是将 zip 上传到 s3,在 AWS 控制台中创建新层,设置 Compatible runtime到 python 3.8 并在我的测试 lambda 函数中使用它。

    您也可以查看 here如何使用此 docker 工具(我使用的 docker 命令基于该链接中的内容)。

    希望这可以帮助

    关于python - pysftp 库在 AWS lambda 层中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61337007/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com