当前位置: 首页 > 知识库问答 >
问题:

python中的AWS Lambda导入模块错误

秦才
2023-03-14

我正在创建一个AWS Lambda python部署包。我使用一个外部依赖请求。我安装了外部依赖使用AWS留档http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html.下面是我的python代码。

import requests

print('Loading function')

s3 = boto3.client('s3')


def lambda_handler(event, context):
    #print("Received event: " + json.dumps(event, indent=2))

    # Get the object from the event and show its content type
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
    try:
        response = s3.get_object(Bucket=bucket, Key=key)
        s3.download_file(bucket,key, '/tmp/data.txt')
        lines = [line.rstrip('\n') for line in open('/tmp/data.txt')]
        for line in lines:
            col=line.split(',')
            print(col[5],col[6])
        print("CONTENT TYPE: " + response['ContentType'])
        return response['ContentType']
    except Exception as e:
        print(e)
        print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
        raise e

创建了压缩项目目录的内容并上传到lambda(压缩目录内容,而不是目录)。当我执行函数时,我得到了下面提到的错误。

START RequestId: 9e64e2c7-d0c3-11e5-b34e-75c7fb49d058 Version: $LATEST
**Unable to import module 'lambda_function': No module named lambda_function**

END RequestId: 9e64e2c7-d0c3-11e5-b34e-75c7fb49d058
REPORT RequestId: 9e64e2c7-d0c3-11e5-b34e-75c7fb49d058  Duration: 19.63 ms  Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 9 MB

请帮我调试错误。

共有3个答案

穆宏胜
2023-03-14

这个问题的另一个来源是压缩文件的权限。它必须至少是世界范围内可读的。(minchmod 444

我在压缩Python文件之前运行了以下内容,它工作正常。

chmod u=rwx,go=r
谭毅然
2023-03-14

如果您正在上载zip文件。确保压缩的是目录的内容,而不是目录本身。

梁季
2023-03-14

错误是由于lambda函数的文件名引起的。在创建lambda函数时,它将请求lambda函数处理程序。您必须将其命名为Python\u File\u name。方法名称。在这个场景中,我将其命名为lambda。lambda_handlerlambda.py是文件名)。

 类似资料:
  • 问题内容: 我一直在使用python dns模块。我试图在新的Linux安装上使用它,但该模块未加载。我试图清理并安装,但安装似乎无法正常进行。 更新了python版本和pip版本命令的输出 非常感谢你的帮助。 注意:-我在新计算机上安装了防火墙。我不确定它是否会影响导入。但我试图禁用它,但它似乎仍然无法正常工作。 问题答案: 我遇到了与dnspython相同的问题。 我的解决方案是从他们的官方G

  • 根据这个答案,您可以使用来使用类似这样的相对导入: 为什么相对导入不适用于sklearn。特征提取。文本 我验证了是一个具有以下功能的模块: 编辑 “不工作”,我的意思是它不导入模块。 我正在使用Python 3.4 绝对方式工作: 相对方式不:

  • 主要内容:import 模块名 as 别名,from  模块名 import 成员名 as 别名使Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。 前面章节中,已经看到使用 import 导入模块的语法,但实际上

  • 我需要在Python中导入一个名为array_queue的模块。我检查了一下,如果我不使用它,就会出现一个提示:“array_queue imported but unused”。但是,如果我使用它并运行该程序,则会出现以下情况: ModuleNotFounderRror:没有名为“array_queue”的模块

  • 3.3 Python模块导入 与C++类似的,在Python中导入其他模块时,也需要相关处理。 需求:首先新建一个Python文件A,再创建Python文件UseA,在UseA中导入A并调用A的实现。 实现: 新建两个Python文件,使用 import 实现导入关系; 添加可执行权限、编辑配置文件并执行UseA。 1.新建两个Python文件并使用import导入 文件A实现(包含一个变量):

  • 问题内容: 我正在尝试使用该软件包在R中导入python模块。该模块可以在这里找到。我克隆了存储库并运行成功。如果打开python shell,则可以导入。但是,当我尝试将其导入RStudio时,出现以下错误: 我在macOS Sierra版本10.12.6上并通过Anaconda安装了python 3.6。我也尝试过给出python的路径为: 当我从终端运行python时,我得到: 不确定pyt