What I want to achieve

使用AWS Lambda抓取网站并将数据保存到S3.

The issues I'm having

当我执行Lambda时,出现以下错误消息.

{"errorMessage":"无法导入模块‘lambda_unction’:无法 从‘urllib3.util.ssl_’导入名称‘Default_ciphers’ (/opt/python/urllib3/util/ssl_.py)","errorType": "Runtime.ImportModuleError","questID": "fb66bea9-cad-4bd3-bd4d-6125454e21be","stacktrace":[]}

Code

最小Lambda代码如下所示.

import requests
import boto3 

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    upload_res = s3.put_object(Bucket='horserace-dx', Key='/raw/a.html', Body='testtext')
    
    return event

向Lambda添加了一个层.使用以下命令将文件保存在python文件夹中,并将其冻结为压缩文件,然后将其作为一个层上传到AWS Lambda.

!pip install requests -t ./python --no-user
!pip install pandas -t ./python --no-user
!pip install beautifulsoup4 -t ./python --no-user
  • horserace-dx存在
  • 文件夹raw存在
  • Lambda的角色设置得很好.它可以对S3进行读写
  • Lambda的运行时是Python3.9.本地计算机的python版本为3.9.13.

What I did so far

我谷歌"无法从‘urllib3.util.ssl_’导入名称‘Default_ciphers’",并找到了一些建议.我用下面的代码制作了这一层,并再次try ,但没有成功.

!pip install requests -t ./python --no-user
!pip install pandas -t ./python --no-user
!pip install beautifulsoup4 -t ./python --no-user
!pip install urllib3==1.26.15 -t ./python --no-user

那么,我应该做些什么来实现我想要实现的目标呢?如有任何建议,我们将不胜感激.

推荐答案

  1. 执行以下命令.

    PIP安装请求==2.25.0-t./python--无用户 Pip安装美观的Soup4-t./python--无用户 Pip安装pytz-t./python--无用户

  2. 在PYPI上,从Numpy和Pandas的页面下载以下WHL文件

  • Numpy-1.24.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Pandas-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  1. 解压缩文件并将内容移动到python文件夹.

  2. 压缩python文件夹并将其上传到AWS Lambda Layer.

  3. 将层设置为Lambda.

  4. 然后,代码运行时没有错误.

Python相关问答推荐

使用Python Great Expectations和python-oracledb

绘制系列时如何反转轴?

无法使用python.h文件; Python嵌入错误

由于瓶颈,Python代码执行太慢-寻求性能优化

计算所有前面行(当前行)中列的值

Chatgpt API不断返回错误:404未能从API获取响应

返回nxon矩阵的diag元素,而不使用for循环

我从带有langchain的mongoDB中的vector serch获得一个空数组

从收件箱中的列中删除html格式

运行终端命令时出现问题:pip start anonymous"

OR—Tools中CP—SAT求解器的IntVar设置值

Pre—Commit MyPy无法禁用非错误消息

Pandas计数符合某些条件的特定列的数量

计算每个IP的平均值

多处理队列在与Forking http.server一起使用时随机跳过项目

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

在极中解析带有数字和SI前缀的字符串

Matplotlib中的字体权重

Flask Jinja2如果语句总是计算为false&

重置PD帧中的值