DnsClient.NET icon indicating copy to clipboard operation
DnsClient.NET copied to clipboard

Unhandled Exception when used in AWS Lambda Environment

Open RufusJWB opened this issue 7 years ago • 6 comments

Just to let you know: When your library is embedded into a program that is executed in an AWS Lambda environment, it throws an Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/sys/class/net/lo/mtu'.

After some research it turned out, the problem is in the method NetworkInterface.GetAllNetworkInterfaces(); which seems to be not always working under Linux. I opened a stackoverflow thread: https://stackoverflow.com/questions/46567897/how-to-prevent-filenotfoundexception-in-getallnetworkinterfaces-when-called-in

RufusJWB avatar Oct 04 '17 14:10 RufusJWB

That's a bug in dotnet core which should be fixed in .net core 2.0... Just have to find time to target netstandard2.0 for this lib one day...

MichaCo avatar Oct 04 '17 22:10 MichaCo

Yes, indeed: https://github.com/dotnet/corefx/issues/24422

RufusJWB avatar Oct 05 '17 05:10 RufusJWB

The next version will have a netstandard2.0 target, Maybe those things will be fixed. Anyways, even if it is not fixed, you'll have to work around by determine the DNS endpoints manually with code which works on the platform you are running it on. This library cannot close all those gaps ;) But let me know how it goes anyways

MichaCo avatar May 28 '18 18:05 MichaCo

I can confirm that this is still a problem in lambda even after upgrading to dotnetcore 2.1.0

sudsy avatar Jul 31 '18 02:07 sudsy

ok, that's unfortunate. I'll reopen the issue for tracking. Not sure if I can do anything to fix it though...

DnsClient should work though when you don't use "autodiscovery" of DNS servers and pass in one or more, right?

MichaCo avatar Jul 31 '18 08:07 MichaCo

Yes, It works without autodiscovery.

My workaround for anyone else experiencing this issue is to use a bash command to get the name server to query.

var nameServer = $"cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2".Bash().Trim();

Using a bash ShellHelper I found.

sudsy avatar Jul 31 '18 23:07 sudsy