我在 C# 中创建了 AWS Lambda 函数部署程序包。但是,当我尝试调用函数时,Lambda 会返回以下错误之一:“找不到模块”、“无法加载模块”或“找不到类”。 我该如何排查此问题?
简短描述
如果 C# Lambda 函数返回以下任何错误,则该函数的部署程序包文件夹结构配置不正确:
要解决此问题,必须用正确的文件夹结构构建 C# Lambda 函数部署程序包。有两种方法可以使用正确的文件夹结构构建和部署 C# Lambda 函数部署程序包:
解决方法
使用 .NET Core CLI 和 Amazon.Lambda.Tools 扩展
1. 运行以下命令,以安装原定设置的 Lambda .NET 模板,并将 Amazon.Lambda.Tools 扩展添加到 .NET Core CLI:
dotnet new -i 'Amazon.Lambda.Templates::*'
2. 使用您已安装的模板之一创建新 Lambda 函数,或者将 Amazon.Lambda.Tools 扩展添加到现有项目。
使用您已安装的模板之一创建新 Lambda 函数
从 Lambda 函数的项目根目录中的 .NET Core CLI 运行以下命令:
**重要提示:**请将 {function-name} 替换为您的函数的名称。将 {aws-region} 替换为您希望函数所在的 AWS 区域。
dotnet new lambda.EmptyFunction --name {function-name} --profile default --region {aws-region}
将 Amazon.Lambda.Tools 扩展添加到现有项目
从 Lambda 函数的项目根目录中的 .NET Core CLI 运行以下命令:
dotnet tool install -g Amazon.Lambda.Tools
**注意:**Amazon.Lambda.Tools 扩展将提示您提供任何缺少的必需参数。
3. 运行以下命令下载部署程序包的依赖项:
**重要提示:**将 {your-function-directory} 替换为函数目录的名称。
cd {your-function-directory}
dotnet restore
注意:如果您收到了不兼容错误,请确保您使用了与 Lambda 工具兼容的 .NET Core 版本。如需下载较早版本的 .NET Core,请参阅 .NET 下载归档网站。
4. 通过运行以下命令来构建 Lambda 部署程序包:
dotnet lambda deploy-function
**注意:**或者,您可以从头开始构建 Lambda 部署程序包,并单独部署。有关说明,请参阅使用 .NET Core CLI 部署 AWS Lambda 项目。
5. .NET Core CLI 会提示您输入函数名称,并为该函数分配 AWS Identity and Access Management (IAM) 角色。输入函数名称,并为该函数分配 IAM 角色。然后您的函数已创建。
使用 AWS Toolkit for Visual Studio
1. 下载并安装 AWS Toolkit for Visual Studio。
2. 创建并构建 AWS Lambda Project (.NET Core) 项目。有关说明,请参阅 AWS Lambda 开发人员指南中的使用 AWS Toolkit for Visual Studio 中的 AWS Lambda 模板和 AWS Toolkit for Visual Studio。
**重要提示:**确保函数处理程序签名采用以下格式:
ASSEMBLY::TYPE::METHOD
如需确认正确设置了函数的格式,请查看函数 src/{function-name} 目录下的文件。有关更多信息,请参阅 .NET Core CLI 和采用 C# 编写的 AWS Lambda 函数处理程序。