Спарсить веб-сайт с помощью AWS Lambda и сохранить данные на S3.
Проблемы, с которыми я столкнулся
Когда я запускаю Lambda, появляется следующее сообщение об ошибке.
{ "errorMessage": "Невозможно импортировать модуль 'lambda_function': невозможно
импортировать имя 'DEFAULT_CIPHERS' из 'urllib3.util.ssl_'
(/opt/python/urllib3/util/ssl_.py)", "errorType":
"Runtime.ImportModuleError", "requestId":
"fb66bea9-cbad-4bd3-bd4d-6125454e21be", "stackTrace": []
< h1>Код
Минимальный лямбда-код следующий.
Код: Выделить всё
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
Код: Выделить всё
!pip install requests -t ./python --no-user
!pip install pandas -t ./python --no-user
!pip install beautifulsoup4 -t ./python --no-user
- Ведроhorserace-dx существует
- Папка raw существует
Роль лямбды задана правильно. Он может читать и записывать в S3. - Среда выполнения Lambda — Python 3.9. Версия Python на локальном компьютере – 3.9.13.
Я гугл " невозможно импортировать имя «DEFAULT_CIPHERS» из «urllib3.util.ssl_» и нашел несколько предложений. Я создал слой с помощью следующего кода и тщетно пытался еще раз.
Код: Выделить всё
!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
Подробнее здесь: https://stackoverflow.com/questions/764 ... -lambda-us