dix*_*hom 56 python amazon-s3 amazon-web-services boto3 aws-lambda
使用 AWS Lambda 抓取网站并将数据保存在 S3 上。
当我执行 Lambda 时,出现以下错误消息。
{“errorMessage”:“无法导入模块“lambda_function”:无法从“urllib3.util.ssl_”(/opt/python/urllib3/util/ssl_.py)导入名称“DEFAULT_CIPHERS””,“errorType”:“运行时.ImportModuleError", "requestId": "fb66bea9-cbad-4bd3-bd4d-6125454e21be", "stackTrace": [] }
最小 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
Run Code Online (Sandbox Code Playgroud)
Lambda 上添加了一层。使用以下命令将文件保存在python
文件夹中,冻结在 zip 文件中,然后作为层上传到 AWS Lambda。
!pip install requests -t ./python --no-user
!pip install pandas -t ./python --no-user
!pip install beautifulsoup4 -t ./python --no-user
Run Code Online (Sandbox Code Playgroud)
horserace-dx
已存在raw
存在我搜索“无法从‘urllib3.util.ssl_’导入名称‘DEFAULT_CIPHERS’”并找到了一些建议。我用以下代码制作了图层,然后再次尝试,但没有成功。
!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
Run Code Online (Sandbox Code Playgroud)
那么我应该怎样做才能达到我想要达到的目的呢?任何建议将不胜感激。
Dan*_*l T 60
\n\n无法从“urllib3.util.ssl_”导入名称“DEFAULT_CIPHERS”
\n
您遇到此问题是因为您\xe2\x80\x99 使用的 botocore 尚不支持 urllib3 2.0。
\nurllib3<2
由于您\xe2\x80\x99正在部署到AWS Lambda,因此\xe2\x80\x99需要在项目中显式固定,以确保\xe2\x80\x99不会将urllib3 2.0引入到您的环境中。
\n(来源)
urllib3<2\n
Run Code Online (Sandbox Code Playgroud)\n请按照本指南了解如何使用 .zip 文件存档部署 Python Lambda 函数。
\n如果您无法通过 .zip 文件使其工作,请考虑通过容器映像进行部署,而不是遵循本指南。
\n小智 35
就我而言,我只是指定了请求版本(运行时 python3.9) -
requests==2.28.2
Run Code Online (Sandbox Code Playgroud)
它起作用了。
小智 10
我通过设置解决了urllib3<2
。urllib3 2.0 发生了重大变化。
例如,如果您有一个requirement.txt 文件,则urllib3<2
向该文件添加一行。
请参阅此以获得更好的解释:https://github.com/psf/requests/issues/6443#issuecomment-1535667256
小智 5
就我而言,我在使用 Transformer 库时遇到此错误。我解决了这个问题pip install urllib3<2
执行以下命令。
pip install requests==2.25.0 -t ./python --no-user pip install beautifulsoup4 -t ./python --no-user pip install pytz -t ./python --no-user
在PyPI上,从numpy和pandas页面下载以下whl文件
解压缩文件并将内容移动到python
文件夹中。
压缩该python
文件夹并将其上传到 AWS Lambda Layer。
将图层设置为 Lambda。
然后代码运行没有错误。
归档时间: |
|
查看次数: |
69547 次 |
最近记录: |