AWS Lambda 导入错误: 无法导入模块 “lambda_function”

huangapple go评论119阅读模式
英文:

AWS Lambda import error: Unable to import module "lambda_function"

问题

I am trying to run a simple program in AWS Lambda. However, it is failing with DEFAULT_CIPHERS error. When I run the following program it fails with error ...unable to import lambda function:

  1. import json
  2. import boto3
  3. import os
  4. import requests
  5. def lambda_handler(event, context):
  6. file = '2011-02-12-0.json.gz'
  7. download_res = requests.get(f"https://data.gharchive.org/{file}")
  8. print(f"Files downloaded successfully - Filename: {file}")
  9. os.environ.setdefault('AWS_PROFILE', 'myid')
  10. s3 = boto3.client('s3')
  11. upload_res = s3.put_object(Bucket='my-demo-bucket3', Key=file, Body=download_res.content)
  12. print("Files Uploaded successfully")
  13. return upload_res

Error:

  1. Response
  2. {
  3. "errorMessage": "Unable to import module 'lambda_function': cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_' (/var/task/urllib3/util/ssl_.py)",
  4. "errorType": "Runtime.ImportModuleError",
  5. "requestId": "5d82baed-2ee6-41cd-a8e7-d24a59061dbc",
  6. "stackTrace": []
  7. }

Can anyone please help me sort this out.
Thanks.

英文:

I am trying to run a simple program in AWS Lambda. However, it is failing with DEFAULT_CIPHERS error. When I run the following program it fails with error ...unable to import lambda function:

  1. import json
  2. import boto3
  3. import os
  4. import requests
  5. def lambda_handler(event, context):
  6. file = '2011-02-12-0.json.gz'
  7. download_res = requests.get(f"https://data.gharchive.org/{file}")
  8. print(f"Files downloaded successfully - Filename: {file}")
  9. os.environ.setdefault('AWS_PROFILE', 'myid')
  10. s3 = boto3.client('s3')
  11. upload_res = s3.put_object(Bucket='my-demo-bucket3', Key=file, Body=download_res.content)
  12. print("Files Uploaded successfully")
  13. return upload_res

Error:

  1. Response
  2. {
  3. "errorMessage": "Unable to import module 'lambda_function': cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_' (/var/task/urllib3/util/ssl_.py)",
  4. "errorType": "Runtime.ImportModuleError",
  5. "requestId": "5d82baed-2ee6-41cd-a8e7-d24a59061dbc",
  6. "stackTrace": []
  7. }

Can anyone please help me sort this out.
Thanks.

答案1

得分: 1

问题出在软件包的版本问题。这两段代码的不同之处在于导致问题的boto3。在GitHub上有一个与此相关的已打开问题。解决方法,正如几个人在那里写的那样,是锁定urllib3的版本。可以在你的requirements.txt中添加类似以下内容:

  1. requests
  2. urllib3<2

第二个选项是将requests软件包锁定到2.29.0版本,就像有两个人提到的,这可以解决他们Lambda函数的问题。

要跟踪这个问题的进展,可以查看Github上的问题。

英文:

The issue is in the versioning of the packages. The difference in these 2 codes that makes the problem is boto3. There's an open issue on GitHub related to this.
A solution, as several people wrote there would be to pin down the version of urllib3

You can put something like this in your requirements.txt

  1. requests
  2. urllib3<2

The second option is to pin down the requests package to 2.29.0, as 2 guys mentioned this fixed issue with their Lambda functions.

To track the progress of this, you can check the issue in Github

huangapple
  • 本文由 发表于 2023年5月22日 14:39:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/76303563.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定