aws / aws-lambda-dotnet

Libraries, samples and tools to help .NET Core developers develop AWS Lambda functions.
Apache License 2.0
1.57k stars 478 forks source link

Support to .NET Core 2.0 #149

Closed AlbertoMonteiro closed 6 years ago

AlbertoMonteiro commented 7 years ago

.NET Core 2.0 was just release https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/

When AWS Lambda will support .NET Core 2.0?

normj commented 7 years ago

Looks like it is not quite out yet but close.

I can't give you release time but we know how important the .NET Core 2.0 release is.

Kralizek commented 7 years ago

What's going to be the strategy?

Are we going to have a new runtime to choose from? Or will all .net lambda automatically upgraded to .net core 2.0?

bjorg commented 7 years ago

I will be at re:Invent when it's announced screaming my head off like I did last year! :)

AlbertoMonteiro commented 7 years ago

@normj the issue is back!!! https://github.com/dotnet/announcements/issues/24

genifycom commented 7 years ago

Norm, will Razor continue to be an issue with .NET Core 2.0 or is it too early to say?

slang25 commented 7 years ago

Just to be clear, .NET Standard 2.0 has been released, .NET Core 2.0 is still in the works.

normj commented 7 years ago

@genifycom I can't guarantee anything yet but in .NET Core 2.0 Razor views can be precompiled at packaging time which solves the problem Lambda has with Razor views in our current runtime. Also precompilation will be critical to keep the cold startup time down.

@Kralizek Please don't take anything in this thread as an announcement for .NET Core 2.0 support in Lambda, just know we realize how important that release is. Given that disclaimer our next iteration for .NET Core Lambda will be a new runtime to pick. We wouldn't want to automatically upgrade existing functions. .NET Core 2.0 does have some breaking changes and developers will need to test their functions on .NET Core 2.0.

@bjorg I should be at re:Invent as well. I'd love to catch up and hearing what you guys are up to with AWS.

AlbertoMonteiro commented 7 years ago

Thanks for the feedback @normj

Kralizek commented 7 years ago

@normj don't worry! We are pretty happy with .NET Core 1.0 so far :) but glad to know which direction you would be taking if you were to support a new runtime version!

damianh commented 7 years ago

https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/

Start your engines lads :)

gotmike commented 7 years ago

previously, it was mentioned that Lambda would support all LTS versions of .net core...

now, v1.1.2 is LTS (https://www.microsoft.com/net/core/support)

when will this be supported? or is it already?

normj commented 7 years ago

@gotmike It has been said that Lambda only supports LTS versions of their supported runtimes not that all LTS versions will be supported.

.NET Core 1.1 has some low build infrastructure changes that makes it not a simple engineering effort and at this point we want to focus our engineering effort on the new versions of .NET Core which I'm sure most of you would prefer.

I'm going to close this issue because the need is obvious and when we have something to announce there will be lots of messaging.

josiahpeters commented 7 years ago

@normj Can you suggest the best way to follow updates for aws-lambda-dotnet? Should I try following one of the AWS Blogs like: https://aws.amazon.com/blogs/aws/category/aws-lambda/ or https://aws.amazon.com/blogs/developer/category/net/

I'm very interested in future announcements for .NET Core 2.0 support for lambdas and other similar developments. If there isn't an official information channel to follow, I can go ahead and setup a Google Search alert for ".NET Core 2.0 Lambda" or something similar.

normj commented 7 years ago

For AWS .NET related news I would suggest our .NET Blog https://aws.amazon.com/blogs/developer/category/net/ and our twitter handle https://twitter.com/awsfornet. That is where I post .NET news.

peterdeme commented 7 years ago

Is there any particular reason why only LTS versions are supported? I mean if we have a .NET Core 2 app in our solution and we want another app as a Lambda, and they both have our DataAccessLayer referenced, we need to have the DataAccessLayer .NETStandard 1.6 so the Lambda project can reference it. image

That actually blocks us from having EF Core upgraded. That's a pretty huge blocker, I'm sure we are not the only dev team facing this problem. I just don't understand it, because even Beanstalk supports it.

gotmike commented 7 years ago

@peterdeme -- yes, we are also needing the EF features in (at least) v1.1

seems to me that there must be something going on that's causing problems b/c it's been a really long time now and the "LTS" thing doesn't really seem to be true. before, the guidance was to check for "LTS Support" on the MS page, but apparently that's not the case anymore.

@normj -- where can we track the LTS part for the runtime? i can't find that anywhere.

specifically, we need to be able to implement complex types in entity framework, something that apparently is only available in v1.1 and above. until then, we're forced to use an Azure App Service.

wilsonat commented 7 years ago

I wish there was a way to get a little more transparency with the .NET Core support plans/timeline. I get that there's a lot of behind-the-scenes work that goes into hosting a new version of the runtime, but, it would at least be nice to have some sort of target---even if it's just 2017 Q4.

My team is starting to move pretty hard into the serverless space, and the fact that we don't have any information about Core 2.0 support makes me start to question how viable AWS will be for our .NET team.

We've been really happy with the .NET support, so far, (and appreciate all your hard work), but the lack of a public road map makes it really difficult to plan.

normj commented 7 years ago

I understand your frustration and believe me we are pushing as hard as we can for the next iteration of .NET Core Lambda. I apologize I can't talk in much detail but I'll try and shed as much light as I can.

Lambda runtimes are more complicated than a Beanstalk environment. For a runtime we have to construct a hosting environment for the code. Where as Beanstalk we basically run the latest installer on the new AMI iteration.

We learned a lot from our current .NET Core Lambda implementation and want to make sure we take those lessons learned into the next version. Remember when we launched Lambda support the dotnet CLI wasn't even GA yet. So we want to do some rework around the hosting environment to handle features like Razor pages and localization resources. We need to put that extra effort into it now because once a runtime goes live it is hard to make changes that won't affecting any currently running Lambda functions.

Also with a new runtime it involves coordinating with a lot of teams each with their own schedule. And we all know schedules get shifted around so predicting a date is difficult and at Amazon we don't like to talk about a date until we are sure we can't make that date.

I know there is a ton of version difficulties with .NET Core 1.x. That is primary due to the fact in .NET Core 1.x NuGet packages took a dependency on .NETStandard.Library NuGet package even when they were targeting .NET Standard which pinned the package to a specific version of .NET Core. The good news for the future is libraries targeting .NET Standard 2.0 no longer have to declare a dependency to .NETStandard.Library NuGet package which will, in theory, unpin them from a specific version of .NET Core.

damianh commented 7 years ago

Not sure where to say this but... if you are going to encourage full-.net-apps-web-apps-in-a-lambda (which is indeed very useful) then the lambda function deployment package size limit of 50MB will need to be raised. Azure has no such limits.

michaelthwaite commented 6 years ago

Any update on this? My development environment is constantly rolling forwards into 2.0 land - I have to keep manually backing it out and, unfortunately, that means some components can no longer be supported on Lambda without major package surgery!

An update would be welcome.

rbbullard42 commented 6 years ago

I'm really excited to see what you guys have once this is released. Big changes and improvements from .NET Core 1.0 to .NET core 2.0. Good luck and I appreciate the extra hard work and diligence you guys are putting into this project.

matt-hammond commented 6 years ago

It would be really useful to understand when this is likely to land, even at a high level, to help plan our work. No need for a firm commitment, an indication of the earliest we might expect it in terms of weeks/months/quarters would be very helpful.

Many thanks.

Thaina commented 6 years ago

@normj I think we could do things like it had been done for nodejs. There was a time that nodejs4 and nodejs6 need to be selected separately. Actually I think you should support every language in this scheme, has 2-3 versions that stable to choose from and deprecate the old one one by one. These was far more better for people who want to start working on better environment

damianh commented 6 years ago

I suspect the radio silence will last until re:invent at end of Nov for marketing reasons. Quite annoying that we'll have to wait another month to find out what the plans are.

liam-reilly commented 6 years ago

I could really do with knowing when .NET Core 2 is going to be available in Lambda. It influences a project I am just preparing to kick off. If it's not going to be anytime soon I will make other choices but if it might be released by early december say then .NET Core 2 lambdas here we come!

Kralizek commented 6 years ago

Yeah, don't tell me about that... Today we realized that a Lambda that was meant to pre-process some massive data import will have to rely to an external node.js lambda to be able to support XSLT transformations...

RobertPaulson90 commented 6 years ago

What's the status? Core 2.0 has matured greatly, so I'm really looking forward to using Lambda with it.

fulghum commented 6 years ago

Stay tuned... we will have more details to share later this month. We're really excited about .NET Core 2.0 at AWS and like @normj mentioned earlier in this thread, we've been putting some serious thought and effort into making the next iteration of .NET Core on Lambda integrate even more cleanly to support several other key use cases.

raRaRa commented 6 years ago

:drum:

I guess we'll see some updates this week? :)

CheeseNPort commented 6 years ago

As the comment said end of the month, perhaps it would be announced as part of reinvent this week.

michaelthwaite commented 6 years ago

I hope so too! I'm in the middle of a wasted day because, somewhere in my code I have a NuGet package that wants NetStandard Library 1.6.1 so, my lambda function is failing, failing, failing.

I'm currently running it on an EC2 instance, what a mess.

Kralizek commented 6 years ago

In the wishlist for lambda, I would add the possibility of running them in VPC without the absurd requirement of 15s+ cold start.

AbbTek commented 6 years ago

@Kralizek have you tried increasing the memory of the lambda, especially with .Net or Java, increasing the memory speed up the cold start a lot, in my case, the cold start sometimes was 20 seconds with 128Mb, and now it is around 2 seconds with 1536 MB. But yes VPC also increases the cold start.

raRaRa commented 6 years ago

@AbbTek Yikes, 20 seconds with 128MB? I really hope that Lambda running .NET Core 2 will take less than 2 seconds on 128Mb. Going to be damn expensive to run it with 1536MB. (in my use case at least). Otherwise I'm probably going to look into Apex + Golang :disappointed:

Kralizek commented 6 years ago

@raRaRa @AbbTek there is little that we can do on our side, and .NET Core 2.0 will not help, it's an infrastructure problem of AWS/VPC/Lambda... see #174

See also: https://robertvojta.com/aws-journey-api-gateway-lambda-vpc-performance-452c6932093b

normj commented 6 years ago

Yesterday I did my .NET Core session at our AWS re:Invent conference. In my session, .NET Core 2.0 Lambda support was officially pre announced and it is coming soon. To help prove it was coming soon, we actually demoed running an ASP.NET Core application with Razor pages using our upcoming .NET Core 2.0 runtime from the us-west-2 region.

We also demoed upcoming .NET Core 2.0 X-Ray support as well. That will probably come out around the same time as .NET Core 2.0 Lambda support. .NET Core 1.0 didn't have some of the API we needed to port the existing .NET Framework version to .NET Core. There has also been a lot of work done to make it easier to use X-Ray for .NET in the upcoming version.

The session will be posted online soon and I'll post a link for those that wanted to see that demo.

Since this has becoming the home for everybody to talk about .NET Core 2.0 support I'm going to reopen the issue.

KFayal commented 6 years ago

Norm, I have been so disappointed with Re:Invent this year. I wish I could have attended your session. I had some questions about the c# implementation of Lambda and now with Cloud9 I’m wondering if it will be easier to deploy from there instead of having to do it solely from VS.

normj commented 6 years ago

@KFayal Sorry re:Invent is not working for you this year. If you want to try and get together while we are both here to talk about your questions I'll be free after my session on VSTS today at the MGM. That ends at 4:15. Tomorrow I don't fly out till the evening so you can reach me via my twitter handle socketnorm to set a meeting spot.

Thaina commented 6 years ago

@normj I would like to appreciate but I was learnt that the word "soon" of amazon can be 2 years without any movement. Please use another word that would be more secure

normj commented 6 years ago

@Thaina As you have found in the past it is Amazon's Policy is not talk about release dates so I can't add to much there. I knew if we just said it was coming soon that would give you that valid feeling that it is some ambiguous time in the future. My hope with the doing the live demo from a production endpoint it would demonstrate we really mean soon.

normj commented 6 years ago

My session is online if anybody wants to see the .NET Core 2.0 Lambda demo with X-Ray support. The Lambda part starts about 13 minutes into the talk. There is also some cool ECS Fargate support we talked about after the Lambda section.

https://www.youtube.com/watch?v=IfF1E2RJ6Do

matantal1 commented 6 years ago

@normj Hi Norm, Where can i signup for the preview?

jbenguira commented 6 years ago

Amazon, please please please, release .NET Core 2.0 in december, we badly need it for our Cloud Backend platform (https://cloudbackend.appdrag.com/)

We are waiting this since August :)

damianh commented 6 years ago
rui-ktei commented 6 years ago

I have to add some comments to help speed this thing up... I want .net core 2.0 lambda literally now : ) Can't wait any longer

MikeN3 commented 6 years ago

After seeing the .Net Core 2.0 announcement, along with the live production demos, at the AWS Lambda re:Invent 2017. With this blog post (https://aws.amazon.com/blogs/developer/category/net/), could we realistically see .Net Core 2.0 support added by the end of December?

normj commented 6 years ago

@damianh Lambda function size is determined by the service and not the .NET Core runtime which is what we cover here. If you would like that increased I suggest letting the Lambda team know through their forums. Out of curiosity what makes your functions so large? Larger functions have a higher cold start time which is why they are generally discouraged.

The support plan hasn't been finalized but we know that .NET Core 2.0 is critical to developer needs and so we aren't going to wait for it to be LTS. The biggest lesson we learned with the current .NET Core 1.0 was the delineation between LTS and FTS on .NET Core 1.X didn't really work out as the .NET Core team expected. As you all know once 1.1 came out and most all of the libraries and frameworks moved to that causing so many of the versioning difficulties with .NET Core 1.0. So a lot of the work we are doing with the new .NET Core runtime is making it easier to on board new versions so we are able to be quicker at responding to shifts to new runtimes like we saw between 1.0 and 1.1. That does not mean we will on board every .NET Core version but if we find that is what the community needs like when .NET Core 1.1 became the defacto version everybody was using we can respond quicker to that.

Not much I can say on release date. It won't be released in December but hopefully, fingers crossed, not much longer after this month.

Kralizek commented 6 years ago

damn! a post from @normj here and i was already opening the champagne...

normj commented 6 years ago

Sorry :(

When we get the support out my post will be filled with the happiest emojis so you can quickly see the good news.

screig commented 6 years ago

image

Cant wait to see this!