DEV Community

.NET8ランタイムでLambdaをテストした時にハマったこと

Lambdaが.NET8にも対応でき、NativeAOTもサポートされることとなった。
NativeAOTは.NET7からサポートされた機能ではあるものの、.NET7はLambdaではカスタムランタイム扱いとなるためかなりハードルが高かった。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/dotnet-native-aot.html

今日はdotnet lambda invoke-functionを使ってテストを実施した際に想定しない結果が返り、時間を浪費した話を紹介する。

dotnet lambda の --payload は文字列も渡すことができるが、ファイルを渡すこともできる。

公式ドキュメントの例に倣って

dotnet lambda invoke-function myDotnetFunction --payload "hoge"
とすると、本来であれば
Payload:
"HOGE"
が返るはずが、hogeファイルがCLI実行時のカレントディレクトリに存在するとそのファイルを呼び出してしまい意図しないエラーに苦しむこととなる。

hogeではなく、パスを渡す必要があったので、dic/hogeなどで渡した場合にはdic/hogeというファイルがあった場合にそのファイルが参照されることになるので、さらに混乱することとなる。

気をつけて実行してみてほしい

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/csharp-package-cli.html

Top comments (0)