从不同文件夹中的不同文件导入函数时,aws lambda 函数不起作用

问题描述 投票:0回答:1

我拥有最简单的 Python 函数,并且能够将其部署为 AWS Lambda 函数。

该函数的代码是这样的

处理程序.py

导入json

def ask(event, context):
    body = {
        "message": f"Go Serverless v3.0! Your function executed successfully! Length ",
        "input": event,
    }

    response = {"statusCode": 200, "body": json.dumps(body)}

    return response

serverless.yml是这个

服务:rag-se-aws-lambda 框架版本:'3'

provider:
  name: aws
  runtime: python3.11

package:
  individually: true

functions:
  ask:
    handler: handler.ask
    events:
      - httpApi:
          path: /
          method: post

现在我在文件

src/my_function.py
中开发了一个函数 my_function,我想像这样在 handler.py 中使用它

import json
from src.my_function import my_function

    def ask(event, context):
        my_function()
        body = {
            "message": f"Go Serverless v3.0! Your function executed successfully! Length ",
            "input": event,
        }
    
        response = {"statusCode": 200, "body": json.dumps(body)}
    
        return response

当我使用相同的 serverless.yml 配置部署新版本的函数时,我收到以下运行时错误

无法导入模块“handler”:没有名为“my_function”的模块

顺便说一句,如果文件 my_function.py 移动到定义 handler.py 的同一根文件夹中,则一切正常。

使用 AWS Lambda python 函数时,我应该怎么做才能从不同的文件夹导入函数?

python aws-lambda
1个回答
0
投票

由于文件夹位置有所不同,只需将您的

src
文件夹添加到 Python 的
sys.path
即可让它找到您的内容:

import json
import sys
import os

src_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'src')
sys.path.append(src_dir)

from my_function import my_function

def ask(event, context):
    my_function()
    body = {
        "message": "Go Serverless v3.0! Your function executed successfully!",
        "input": event,
    }

    response = {"statusCode": 200, "body": json.dumps(body)}

    return response
© www.soinside.com 2019 - 2024. All rights reserved.