我有一个使用无服务器框架来管理和部署AWS服务的项目。在
serverless.yml
文件中定义了一个状态函数和 3 个 Lambda 函数,如下所示:
functions:
FileUploading:
handler: wesii_pipelines.handlers.file_uploading_handler
InternalUploadEvent:
handler: wesii_pipelines.handlers.internal_upload_event_handler
GenerateTemporaryCreds:
handler: wesii_pipelines.handlers.generate_temporary_s3_creds_handler
events:
- http:
path: s3creds
method: post
stepFunctions: ${file(serverless.sfn.yml)}
resources: ${file(serverless.resources.yml)}
并且有对三个文件
serverless.sfn.yml
、serverless.resources.yml
和serverless.env.yml
的引用。这 3 个函数的定义包含在 wesii_pipelines
文件内的 handlers.py
文件夹中,如下所示:
def file_uploading_handler(event, context):
def internal_upload_event_handler(event, context):
def generate_temporary_s3_creds_handler(event, context):
在上次部署后(我尝试将 Lambda 函数的 Python 运行时版本从 3.7 更新到 3.11),每次执行步骤函数都会失败,并给出以下错误:
Handler 'file_uploading_handler' missing on module 'wesii_pipelines.handlers'
我一年内没有进行任何部署,因此我没有更改项目使用的任何 aws 资源。
即使尝试使用旧版本的 Python 3.7 重新部署也会出现同样的错误,因此这让我认为无服务器框架构建部署并将 Lambda 函数的名称与其定义相关联的方式发生了变化。
什么可能导致此错误?
通过更新Serverless框架及使用的相关插件版本解决问题。