Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.NET Core 3.1 (LTS) has been released #554

Closed
raRaRa opened this issue Dec 3, 2019 · 130 comments
Closed

.NET Core 3.1 (LTS) has been released #554

raRaRa opened this issue Dec 3, 2019 · 130 comments
Labels
feature-request A feature should be added or improved.

Comments

@raRaRa
Copy link

raRaRa commented Dec 3, 2019

.NET Core 3.1 (LTS) has been released - https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/

Any plans to support it any time soon? Thanks.

@normj
Copy link
Member

normj commented Dec 3, 2019

Its an LTS and will be supported. It will just take sometime to get .NET Core 3.1 ready for Lambda and deployed out.

@klaytaybai klaytaybai added the feature-request A feature should be added or improved. label Dec 3, 2019
@hounddog22030
Copy link
Contributor

Its an LTS and will be supported. It will just take a sometime to get .NET Core 3.1 ready for Lambda and deployed out.

If there's anything I can do to help out, please let me know.

@ckuetbach
Copy link

Will there be a speedup for the cold start time?

.NET Core 3.1 has some features like AOT compile

  • PublishReadyToRun
  • PublishTrimmed

@beeradmoore
Copy link

@normj should people subscribe to this issue for updates or is there another .NET Core 3.1 issue which we should follow for progress?

@normj normj pinned this issue Dec 7, 2019
@normj
Copy link
Member

normj commented Dec 8, 2019

We can use this issue to track updates. Unfortunately I probably won't be able to provide much of status updates till it is out.

@daseintheworld
Copy link

Will there be a speedup for the cold start time?

.NET Core 3.1 has some features like AOT compile

  • PublishReadyToRun
  • PublishTrimmed

In case the answer is yes for the comment, will it be possible to run and test the 'compiled lambda' from a local environment? I would eagerly set a linux environment for it :)

@rati-dzidziguri
Copy link

Any update here?

@beeradmoore
Copy link

@rati-dzidziguri

As above from @normj

We can use this issue to track updates. Unfortunately I probably won't be able to provide much of status updates till it is out.

@rati-dzidziguri
Copy link

@beeradmoore
My question was about ETA. That would be helpful to know ETA for this as we could prepare accordingly.

@Kralizek
Copy link

@rati-dzidziguri Amazon seldom discloses their ETA when it comes to releases.

@normj
Copy link
Member

normj commented Dec 13, 2019

@rati-dzidziguri I understand and appreciate you wanting an ETA so you can plan accordingly. In reality it is for that reason we generally don't give an ETA because we try really hard to not make promises that we are not 100% sure we can keep. I would hate to give you an ETA and you make your roadmap based on that and we then me miss that ETA you expected throwing all of your plans into disarray.

For now if you really are needing .NET Core 3.1 features then i suggest using .NET Core 3.1 as a Lambda Custom Runtime which is explained here (except change references from .NET Core 3.0 to .NET Core 3.1). Then when the native .NET Core 3.1 support comes along you will have a very simple migration of changing a few settings on your Lambda function.

@daseintheworld
Copy link

@normj One reason made me decide that I can't use the custom runtime feature with the 'LambdaEntry' class is the 'monolithic architectural' aspect of the implementation approach. Every API request comes through the only one entry lambda and 'distributed' to controllers of the ASP .net project is what the custom runtime structure intended, which is definitely convenient but includes structural downside for cases like I want. I want every command/query request to become lambda each. Since then I can get a scalabillity on managing deployment packages that I can split some functions and manage codes anytime I want.
This is why I am waiting for the official runtime to be supported that I can construct a bundle of 'single purposed lambdas' using SAM written in a template with 'runtime : .netcore 3.1' config.

Please give me an advice if I am going wrong :)

@martincostello
Copy link
Contributor

You can definitely achieve multiple lambda functions from one code base using the Lambda Bootstrapper and the custom runtime feature.

I have a suite of 16 lambdas that are deployed from one application, rather than a “monolith”.

This is achieved by using the _handler environment variable to pick the method to use at runtime, rather than the hard-coded one-to-one mapping shown in the blog post’s sample code.

I think of it as a console app which receives a switch that tells it what action to “become” when started up.

@daseintheworld
Copy link

daseintheworld commented Dec 15, 2019

@martincostello
Thank you for the kind suggestion! I can figure out what your case may look like. You might have placed the switch logic in the Main or Startup class that it can be determined it's functionality on the first stage of the runtime. And it can solve the 'only-monolithic' issue, of course. Very clever approach :)

But still, there is one (if not many) consideration I have to think of, especially when I imagine working as a team. Using custom runtime and determining the 'functional identity' on startup will get rid of the possibility of SAM. For easy example for us, API gateway cannot be defined while deploying a lambda, which means we have to manually generate one for it.
I know I'm exaggerating here because we can make something SAM-like configuration using the bootstrap script as aws tutorial explained. But it won't completely satisfy us since it is using a linux script which means
(1) it can be embarrassing for new-comers, and sometimes it will become a learning curve.
(2) it will discard the benefit of the serverless template's expressiveness because it is literally a script, not a document.

I think the serverless template works as a semi-document of what the server looks like and how it works, which will not only be shared within a development team but even with some insightful non-technicians. and SAM is a well-defined concept that in the near future one's abstract representations of an application will make it possible to be reused by another team using totally different languages and platforms. These aspects still undeniably motivate me to stick to use 'the serverless template' feature.

@CumpsD
Copy link

CumpsD commented Dec 20, 2019

Some nice dates ahead to release this, 25 dec, 1 january come to mind ;)

@normj
Copy link
Member

normj commented Dec 22, 2019

Happy holidays all, I wish I could give you all .NET Core 3.1 Lambda runtime for Christmas but I think 2020 is going to be an exciting your for .NET and AWS.

@raRaRa
Copy link
Author

raRaRa commented Dec 22, 2019

Happy holidays all, I wish I could give you all .NET Core 3.1 Lambda runtime for Christmas but I think 2020 is going to be an exciting your for .NET and AWS.

No worries, enjoy the holidays! Can't wait to see what you have for us in 2020! :)

@neetika123
Copy link

waiting for lambda native support on .NetCore3.1

@abukres
Copy link

abukres commented Jan 23, 2020

There's a disk size limit to lambda functions. I think it's 250 megs and when using the custom runtime, we have to send all of asp.net core assemblies along with our app. I reached that limit when AWS was unzipping my zip package. I had to do some cleanup to reduce the space used by my app. When native support comes out, we don't have to package our app with .core's assemblies.

@erikdac
Copy link

erikdac commented Jan 23, 2020

Is there any estimate on when we can expect this to be released?

We are waiting to upgrade to .Net core 3.1 until there is native support for it.

@abukres
Copy link

abukres commented Jan 23, 2020

Is there any estimate on when we can expect this to be released?

We are waiting to upgrade to .Net core 3.1 until there is native support for it.

If you go back and read the replies, you'll read from normj that they won't give any estimates.

@clearwaterstream
Copy link

If you go back and read the replies, you'll read from normj that they won't give any estimates.

Mmmm normally -- yes. But if enough folks show up with pitch forks then maybe a hint of a release date will be given out to quell the unrest 😁

@VagyokC4
Copy link

I remember a while back when AWS spent a long time preparing the 2.1 native images. They said something to the effect that they redesigned the process to make deploying future versions easier and faster to stand-up. Enter NetCore 3.1 and almost two months later and it's still not available :(

You know Azure had this 3.1 image available Day 1. I'm beginning to see why the US Government choose Azure as their cloud provider for JEDI.

We just got the green light from our stakeholders to start targeting Azure as our primary provider leaving AWS as the backup. With silly delays like this, I'm sure we are not the only ones.

@Rajaniyer
Copy link

I remember a while back when AWS spent a long time preparing the 2.1 native images. They said something to the effect that they redesigned the process to make deploying future versions easier and faster to stand-up. Enter NetCore 3.1 and almost two months later and it's still not available :(

You know Azure had this 3.1 image available Day 1. I'm beginning to see why the US Government choose Azure as their cloud provider for JEDI.

We just got the green light from our stakeholders to start targeting Azure as our primary provider leaving AWS as the backup. With silly delays like this, I'm sure we are not the only ones.

I agree with you. My org doesnt allow custom runtime and we are kind of stuck with 2.1. When it comes to EF & Postgres along with spatial operations, it is too much pain. We have been waiting for this to be done. Too bad that it is not done yet.

@abukres
Copy link

abukres commented Jan 23, 2020

I remember a while back when AWS spent a long time preparing the 2.1 native images. They said something to the effect that they redesigned the process to make deploying future versions easier and faster to stand-up. Enter NetCore 3.1 and almost two months later and it's still not available :(

You know Azure had this 3.1 image available Day 1. I'm beginning to see why the US Government choose Azure as their cloud provider for JEDI.

We just got the green light from our stakeholders to start targeting Azure as our primary provider leaving AWS as the backup. With silly delays like this, I'm sure we are not the only ones.

Does JEDI use .NET Core to make the assumption that's why the government went with Azure?

@assyadh
Copy link
Contributor

assyadh commented Jan 23, 2020

Hi everyone,

I am actively working on bringing the support for .NET Core 3.1 in Lambda. It takes some time because a lot of work was done by Microsoft in how they build the runtime. I am working on incorporating these changes to bring you a native runtime.

@JamesQMurphy
Copy link

@assyadh Thank you! I do not believe the delays are "silly"; in fact, I would rather wait for a solid working version. I love that AWS Lambda supports .NET Core and I appreciate that you are continuing to support it, as promised.

@Kralizek
Copy link

I don't understand the urge. It's not that we don't have a LTS environment right now.

Obviously we want to use the new toys but the .NET team at AWS has only a fixed amount of resources and they can't do everything at once.

Besides, I am not longing for the need of rushing and updating all the functions' runtime in fear of being out of servicing terms.

@raRaRa
Copy link
Author

raRaRa commented Mar 31, 2020

Great job @normj and everyone at AWS! 🥳

Here's the link to the blog for those scrolling to the bottom
https://aws.amazon.com/blogs/compute/announcing-aws-lambda-supports-for-net-core-3-1/

@raRaRa raRaRa closed this as completed Mar 31, 2020
@albertocorrales
Copy link

awesome, thanks a million for adding support to dotnet core 3.1!!!

@normj
Copy link
Member

normj commented Mar 31, 2020

@andyKalman Not yet on PowerShell 7. I'm doing some final touch ups on the AWSLambdaPSCore module and then will get that released the 2.0.0 version of AWSLambdaPSCore to the gallery.

@andyKalman
Copy link

I appreciate the quick reply @normj . I did see #607 after the fact so good to see it looks to be a quick followup. Is there another issue to track so I can stop the comments here? :) Thanks again.

@petarrepac
Copy link

Congrats!
And thank you AWS and .NET Team!
Much appreciated.

@CraigHead
Copy link

Thank you to everyone who helped make this happen! This is a huge release and it shows a lot of hard work went into it! Nice! 🎉🥳

@hiroCat
Copy link

hiroCat commented Mar 31, 2020

Thanks!! 👏 👏 🎉 🎉

@morquan
Copy link

morquan commented Mar 31, 2020

Congrats guys, looking forward to upgrading.

@genisbarrera
Copy link

Thanks!

@HolloFox
Copy link

Awesome work, keen to upgrade these lambdas.

@joel-morland
Copy link

Great work! Thank you @normj 👏 👏

@SureshD84
Copy link

Great work Team!

@normj normj unpinned this issue Apr 1, 2020
@akrsmv
Copy link

akrsmv commented Apr 1, 2020

Eager to jump on Lambda workers with dotnet 3.1 Async Streams +AWS AppSync/GraphQL subscriptions.
AWS Team, Many Many Thanks !

@bartoszsiekanski
Copy link

OMG, guys you rules! Amazing! Woohoo! 😄😄😄

@hrytskivr
Copy link

THANKS!

@normj
Copy link
Member

normj commented Apr 1, 2020

@andyKalman I pushed out version 2.0.0 of the AWSLambdaPSCore module which now uses PowerShell 7. I'm planning on putting out a blog post on the PS7 support but it acts the same as the existing PowerShell 6 support just uses 7.

@tr33squid
Copy link

@andyKalman I pushed out version 2.0.0 of the AWSLambdaPSCore module which now uses PowerShell 7. I'm planning on putting out a blog post on the PS7 support but it acts the same as the existing PowerShell 6 support just uses 7.

Does the new version of AWSLambdaPSCore update any of the configurations within my existing Lambda functions if i publish them with the new version? Like will it point it towards dotnet3.1 and ps7?

@normj
Copy link
Member

normj commented Apr 2, 2020

@tr33squid Yes if you deploy with 2.0.0 it will use .NET Core 3.1 and PS7

@Rajivhost
Copy link

Thanks a lot and great job AWS team!!

@neetika123
Copy link

Hi everyone,

I am actively working on bringing the support for .NET Core 3.1 in Lambda. It takes some time because a lot of work was done by Microsoft in how they build the runtime. I am working on incorporating these changes to bring you a native runtime.

Thanks to AWS-Lambda .NET core team

@neetika123
Copy link

Hi,
I am getting this error when trying to execute AWS-Lambda
It was not possible to find any compatible framework version.
The specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found.
any suggestions ??

@gregorylyons
Copy link

Hi,
I am getting this error when trying to execute AWS-Lambda
It was not possible to find any compatible framework version.
The specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found.
any suggestions ??

You need to install the 3.1.0 SDK.

@weare8
Copy link

weare8 commented Apr 24, 2020 via email

@neetika123
Copy link

I believe Microsoft.AspNetCore.App should be removed from your project dependencies, not anymore needed for Core 3.1.0, I had to remove it to build and deploy the service I upgraded from 2.1.

On Fri, Apr 24, 2020 at 3:24 AM Gregory Lyons @.***> wrote: Hi, I am getting this error when trying to execute AWS-Lambda It was not possible to find any compatible framework version. The specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found. any suggestions ?? You need to install the 3.1.0 SDK. — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#554 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMSHCOLW5WJDS7CCAFDMP4TROE5ENANCNFSM4JU5UTJA .
-- Best, George George Taskos Senior Solutions Architect WeAre8 230 Park Avenue, 3th fl. West New York, NY 10169 (917) 717-9067 weare8.com Private Entrance, 71 Vanderbilt Ave 3rd Floor

Thanks for your reply,
Actually this error was due to my silly mistake. I forgot to remove runtime: dotnetcore2.1 in my serverless.yml. Now issue solved.

@onionhammer
Copy link

Anyone do any updated benchmark/comparisons on this? All I can find are old ones with a custom runtime..

@davidruhmann
Copy link

Anyone do any updated benchmark/comparisons on this? All I can find are old ones with a custom runtime..

Here is a good one.
https://medium.com/@zaccharles/a-close-look-at-net-core-3-1-on-aws-lambda-9ccec4dd96be

Also my personal experience updating a 2.1 complex lambda to 3.1 on a 512mb lambda size saw almost exact same performance (cold and warm start). Both the 2.1 and 3.1 lambda uses lambda layer, optimized publish, newtonsoft (might see perf improvement with Microsoft json in 3.1), tiered compilation off, and RTR for 3.1.

From my metrics, it seems to gain slight performance with dotnet 3.1 runtime, but lose performance on Amazon Linux 2 and dotnet 3.1 initialization. (2.1 uses Amazon Linux 1.) Making gains a wash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request A feature should be added or improved.
Projects
None yet
Development

No branches or pull requests