我拥有最简单的 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 函数时,我应该怎么做才能从不同的文件夹导入函数?
由于文件夹位置有所不同,只需将您的
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