我将总结一下我的问题。
我有一个包含多个。net lambda(3.1)的解决方案,我使用无服务器部署,所有这些都在旧架构(x86_64)中工作得很好,但是当我将架构设置更改为arm64(并看到它更新了控制台中的实际lambda)时,每当我实际运行lambda时,它就会崩溃。
Unable to load assembly 'Lambda.Api'.: LambdaException
19 Oct 2021 09:22:15,116 [WARN] (invoke@invoke.c:331 errno: None) run_dotnet(dotnet_path, &args) failed
Unknown application error occurred
我有三个问题。
- 如何从日志中获取有关故障的更多信息?我试着添加日志,但没有显示,这个错误发生得太早,我需要找到一种方法来调试本地进程,也许看看我需要修复的依赖关系。
- 这个问题是由于其他的依赖关系吗?还有什么原因呢?
- 如果这是由DLL依赖关系引起的,我如何找到哪一个?
我不确定,但可能您必须在包装期间传递arm64
参数
dotnet lambda package -farch arm64
详细信息我只是有一个非常类似的问题,从x86切换到arm64的。net 6 lambda函数。执行函数时的错误是:
Unhandled exception. System.BadImageFormatException: Could not load file or assembly 'Amazon.Lambda.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an incorrect format.
我正在部署使用无服务器框架引用zip文件的功能。修复方法是更新创建zip文件的命令,但是我的第一次尝试没有成功。"runtime"(——runtime linux-arm64)参数是不够的,尽管在AWS GitHub页面中有文档。
有必要添加"function-architecture";参数也是如此(还是相反?)。成功的包命令如下所示:
dotnet lambda package --package-type zip --output-package function.zip --configuration "Release" --function-architecture arm64 --runtime linux-arm64