Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
John Chang (張書源)
Technology Evangelist
January, ...
What to Expect from the Session
• Brief Introduction to AWS Lambda
• Why .NET Core
• New .NET Core Lambda tooling
• Lots o...
AWS Lambda Crash Course
• Compute part of the AWS serverless architecture
• Zero administration
• Event-driven scaling
• N...
Why .NET Core?
• Performance
• Modularized design
• Low memory usage
• Open Source
• Built and validated for Amazon Linux
...
.NET Core Development
• .NET Core 1.0
• https://www.microsoft.com/net/download/core
• Visual Studio 2015 Update 3
• Visual...
Declaring Lambda Functions
• Static or instance methods
• Must have a default constructor for instance methods
• Can take ...
• async methods must return a Task or Task<T>
Declaring Lambda Functions
public async Task FunctionHandler<T>(T obj, ILamb...
Invoking Lambda Functions
Invoking from AWS Lambda Event Sources
• Function executes in response to events in AWS
services
• A few of the supported ...
Invoking with the AWS SDKs
• Invoke methods using any SDK
• Great for mobile apps
• Manage credentials with Amazon Cognito...
Invoking from Amazon API Gateway
• Frontend of the AWS Serverless architecture
• Expose Lambda functions as HTTP API
• Man...
Demo Time
Demo:
Responding to AWS Events
Recap
• Created a new Lambda project in Visual Studio
• Learned how serialization works
• Learned about the handler format...
Demo:
Cross Platform: Command Line
Yeoman Project Generators
• Project generator ecosystem
• Installable via npm:
• Node.js dependency
• npm install –g yo
• ...
Recap Cross-Platform Demo
• Created a project with Yeoman
• npm install –g yo generator-aws-lambda-dotnet
• yo aws-lambda-...
Demo:
Serverless Application
Demo Application Architecture
internet
GetBlogs()
GetBlog()
AddBlog()
RemoveBlog()
API Gateway
AWS Lambda
Amazon DynamoDB
...
Our Serverless Application Deployment
Visual Studio
Project
Amazon S3
AWS CloudFormation
App bundle
(.zip)
Serverless
temp...
Recap Serverless Application
• Created an AWS Serverless application
• Learned about the serverless.template file
• Expose...
ASP.NET Core and Web API
• ASP.NET Core is the web framework for .NET Core
• Includes framework for building Web API appli...
How can we use ASP.NET Core in Lambda?
• Amazon API Gateway Proxy Integration
• Forwards all requests to a Lambda Function...
ASP.NET Core Web API Architecture
IIS /
Nginx
Kestrel
ASP.NET
Core
Hosting
User’s Web API
Controllers
Internet
ASP.NET Core Architecture on Lambda
API
Gateway
Lambda
ASP.NET
Core
Hosting
User’s Web API
Controllers
Internet
Demo:
ASP.NET Core Web API
Recap ASP.NET Core Web API Demo
• Used existing ASP.NET Core framework
• No change to controller code
• Used API Gateway P...
Useful Links
• AWS Toolkit for Visual Studio
• https://aws.amazon.com/visualstudio/
• AWS Lambda .NET GitHub
• https://git...
Other Related Sessions
CMP211 - Getting Started with Serverless Architectures
SRV202 – What’s New with AWS Lambda
DEV301 -...
Thank you!
Remember to complete
your evaluations!
Upcoming SlideShare
Loading in …5
×

AWS Lambda in C#

6,273 views

Published on

You can now develop your AWS Lambda functions in C# using the .NET Core 1.0 runtime.

The easiest way to get started is with the AWS Toolkit for Visual Studio, which includes project templates for individual C# Lambda functions, full C# serverless applications, and also tools to publish both projects types to AWS.

To manually create a C# Lambda function, you simply specify the Lambda runtime parameter as “netcore1.0” and upload the ZIP of all NuGet dependencies as well as your own published DLL assemblies through the AWS CLI or AWS Lambda console. Alternatively, you can use AWS CloudFormation through the AWS Serverless Application Specification for deploying your C# Lambda function.

Published in: Technology
  • Login to see the comments

AWS Lambda in C#

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. John Chang (張書源) Technology Evangelist January, 2017 Serverless Development with C# and AWS Lambda
  2. 2. What to Expect from the Session • Brief Introduction to AWS Lambda • Why .NET Core • New .NET Core Lambda tooling • Lots of exciting demos!
  3. 3. AWS Lambda Crash Course • Compute part of the AWS serverless architecture • Zero administration • Event-driven scaling • Never pay for idle time • Upload your code and go
  4. 4. Why .NET Core? • Performance • Modularized design • Low memory usage • Open Source • Built and validated for Amazon Linux • Allow AWS to respond to security issues • Cross Platform • Develop on any platform and run on Amazon Linux
  5. 5. .NET Core Development • .NET Core 1.0 • https://www.microsoft.com/net/download/core • Visual Studio 2015 Update 3 • Visual Studio 2015 Tools (Preview 2) • Target framework netcoreapp1.0 • Package with .NET Core CLI “dotnet publish” • Upload as a zip file
  6. 6. Declaring Lambda Functions • Static or instance methods • Must have a default constructor for instance methods • Can take 0 or 1 input parameters public void FunctionHandler() public void FunctionHandler(S3Event evnt) public string FunctionHandler(S3Event evnt, ILambdaContext context) • Optional ILambdaContext parameter
  7. 7. • async methods must return a Task or Task<T> Declaring Lambda Functions public async Task FunctionHandler<T>(T obj, ILambdaContext context) public void FunctionHandler<T>(T obj, ILambdaContext context) • No generic methods public async Task FunctionHandler(S3Event evnt, ILambdaContext context) // return void public async Task<MyType> FunctionHandler(S3Event evnt, ILambdaContext context)
  8. 8. Invoking Lambda Functions
  9. 9. Invoking from AWS Lambda Event Sources • Function executes in response to events in AWS services • A few of the supported services • Amazon S3 • Amazon DynamoDB • Amazon Kinesis • …. • Scheduled Events
  10. 10. Invoking with the AWS SDKs • Invoke methods using any SDK • Great for mobile apps • Manage credentials with Amazon Cognito var client = new AmazonLambdaClient(cognitoCredentials, RegionEndpoint.USWest2); var request = new InvokeRequest { FunctionName = "ProcessGameScore", Payload = gameStats }; InvokeResponse response = await client.InvokeAsync(request);
  11. 11. Invoking from Amazon API Gateway • Frontend of the AWS Serverless architecture • Expose Lambda functions as HTTP API • Manages authentication, versioning, monitoring and more
  12. 12. Demo Time
  13. 13. Demo: Responding to AWS Events
  14. 14. Recap • Created a new Lambda project in Visual Studio • Learned how serialization works • Learned about the handler format • assemblyname::namespaced-classname::methodname • Published from Visual Studio • Configured AWS event source • Invoked the Lambda function from Visual Studio
  15. 15. Demo: Cross Platform: Command Line
  16. 16. Yeoman Project Generators • Project generator ecosystem • Installable via npm: • Node.js dependency • npm install –g yo • AWS Lambda generators • npm install –g generator-aws-lambda-dotnet • yo aws-lambda-dotnet
  17. 17. Recap Cross-Platform Demo • Created a project with Yeoman • npm install –g yo generator-aws-lambda-dotnet • yo aws-lambda-dotnet • Develop with any editor • Command line deployment with the .NET CLI and Amazon.Lambda.Tools NuGet package • dotnet lambda <command> <args> • In preview
  18. 18. Demo: Serverless Application
  19. 19. Demo Application Architecture internet GetBlogs() GetBlog() AddBlog() RemoveBlog() API Gateway AWS Lambda Amazon DynamoDB AWS CloudFormation Stack
  20. 20. Our Serverless Application Deployment Visual Studio Project Amazon S3 AWS CloudFormation App bundle (.zip) Serverless template 2: Request stack …other resources Lambda Functions …other resources API Gateway 4: Stack launched 3: Fetch template
  21. 21. Recap Serverless Application • Created an AWS Serverless application • Learned about the serverless.template file • Exposed Lambda functions as a HTTP API • Deployed using AWS CloudFormation
  22. 22. ASP.NET Core and Web API • ASP.NET Core is the web framework for .NET Core • Includes framework for building Web API applications • Define API controllers to respond to requests • Maps request data to function parameters [Route("api/[controller]")] public class ValuesController : Controller { // PUT api/values/5 [HttpPut("{id}")] public void Put(int id, [FromBody]string value) { ... } ...
  23. 23. How can we use ASP.NET Core in Lambda? • Amazon API Gateway Proxy Integration • Forwards all requests to a Lambda Function • Lambda Function • Converts how requests and responses are represented between API Gateway and ASP.NET Core • Implemented by Amazon.Lambda.AspNetCoreServer NuGet package • Currently in preview
  24. 24. ASP.NET Core Web API Architecture IIS / Nginx Kestrel ASP.NET Core Hosting User’s Web API Controllers Internet
  25. 25. ASP.NET Core Architecture on Lambda API Gateway Lambda ASP.NET Core Hosting User’s Web API Controllers Internet
  26. 26. Demo: ASP.NET Core Web API
  27. 27. Recap ASP.NET Core Web API Demo • Used existing ASP.NET Core framework • No change to controller code • Used API Gateway Proxy Integration to forward all requests • Lambda function translates between API Gateway and ASP.NET Core • Amazon.Lambda.AspNetCoreServer NuGet Package • In preview • Looked at the handler source in GitHub
  28. 28. Useful Links • AWS Toolkit for Visual Studio • https://aws.amazon.com/visualstudio/ • AWS Lambda .NET GitHub • https://github.com/aws/aws-lambda-dotnet • AWS .NET Developer Blog • https://aws.amazon.com/blogs/developer/category/net/ • AWS Lambda Developer Guide • http://docs.aws.amazon.com/lambda/latest/dg/welcome.html • AWS Toolkit for Visual Studio Guide • http://docs.aws.amazon.com/toolkit-for-visual- studio/latest/user-guide/welcome.html
  29. 29. Other Related Sessions CMP211 - Getting Started with Serverless Architectures SRV202 – What’s New with AWS Lambda DEV301 - Amazon CloudWatch Logs and AWS Lambda: A Match Made in Heaven MBL306 - Serverless Authentication and Authorization: Identity Management for Serverless Architectures SVR311 - The State of Serverless Computing
  30. 30. Thank you!
  31. 31. Remember to complete your evaluations!

×