c# & aws lambda

Download C# & AWS Lambda

Post on 09-Apr-2017

73 views

Category:

Technology

5 download

Embed Size (px)

TRANSCRIPT

  • C# on AWS Lambda

    1 @phermens

  • About me

    Pat Hermens

    Father of two

    Based in Rotterdam

    Lead Developer at Coolblue

    Still have a soft-spot for VB6

    https://hermens.com.au/ 2

    @phermens

    https://hermens.com.au/https://hermens.com.au/

  • Every day a little more Dutch

    3

  • A little bit of history

    4 @phermens

  • Launched in Nov 2014.5

    @phermens

  • C# support in Dec 2016.6

    @phermens

  • Officially only supports .NET Core.7

    @phermens

  • AWS was first of the major providers.8

    @phermens

  • They have an open-source SDKhttps://github.com/aws/aws-sdk-net/ 9

    @phermens

    https://github.com/aws/aws-sdk-net/https://github.com/aws/aws-sdk-net/

  • They also have a great dotnet repohttps://github.com/aws/aws-lambda-dotnet/ 10

    @phermens

    https://github.com/aws/aws-lambda-dotnet/https://github.com/aws/aws-lambda-dotnet/

  • & most of my tooling is from here11

    @phermens

  • Its Hello world time!

    12 @phermens

  • 13 @phermens

    Hello World! (including ILambdaContext)

  • Relatively simple configuration14

    @phermens

  • Wait, we need more than code!

    15 @phermens

  • 16 @phermens

    Set up an account

  • Install the CLI

    17 @phermens

  • 18 @phermens

  • 19 @phermens

    Regions? AZs?

  • 20 @phermens

    IAM?

  • 21 @phermens

    Required values can be set in code!

  • 22 @phermens

    or on the command line!

  • NOW its Hello world time!

    23 @phermens

  • 24 @phermens

    Hello World! (including ILambdaContext)

  • Deploying Hello-World

    25 @phermens

  • 26 @phermens

    Running deploy-function & invoke-function

  • Calling our Hello function

    27 @phermens

  • 28 @phermens

    We can use the Amazon NuGet package(s)

  • We can use AWS SNS29

    @phermens

  • We can use any webhook-type integration30

    @phermens

  • Creating a Hello-World-Caller

    31 @phermens

  • 32 @phermens

    Pretty straightforward using the SDK

  • Just F5 in VS Code!33

    @phermens

  • Larger architectures?

    34 @phermens

  • Our infra team had a fun exercise...35

    @phermens

  • CloudFormation - scripted infrastructure36

    @phermens

  • Normally looks like this...37

    @phermens

  • but can also look like this!38

    @phermens

  • Add trigger to your Lambda39

    @phermens

  • Pick your integration - whatever you want!40

    @phermens

  • Or just, deploy-serverless with the CLI41

    @phermens

  • AWS Serverless Application Modelhttp://github.com/awslabs/ 42

    @phermens

    http://github.com/awslabs/http://github.com/awslabs/

  • http://serverless.com/framework/docs/ 43

    @phermens

    http://serverless.com/framework/docs/http://serverless.com/framework/docs/

  • So, what does this mean for Coolblue?44

    @phermens

  • This makes it look simple!45

    @phermens

  • Lets recap some gotchas

    46 @phermens

  • 47 @phermens

    Timings can vary wildly!

  • Default values can bite you!48

    @phermens

  • Know your costs! 800,000 sec = 9.25 dayshttps://aws.amazon.com/lambda/pricing/ 49

    @phermens

    https://aws.amazon.com/lambda/pricing/https://aws.amazon.com/lambda/pricing/

  • Almost everything is case-sensitive!50

    @phermens

    PS> dotnet lambda deploy-function HelloWorld-EUWest# New Lambda function created

    PS> dotnet lambda invoke-function helloworld-euwest -p "Pat"# Error invoking Lambda function: Function not found: arn:aws:lambda:eu-west-1:955206359773:function:helloworld-euwest

  • ILambdaContext should ALWAYS be last51

    @phermens

    public string SayHi(ILambdaContext context, string name = "World"){

    // do something}

    RESPONSE: (only on invocation, after deployment){ "errorType": "LambdaException", "errorMessage":

    "Method 'SayHi' of type 'MyFirstLambdaFunction.HelloWorld' is not supported:the method has 2 parameters, but the second parameter is not of type'Amazon.Lambda.Core.ILambdaContext'."

    }

  • Read the FAQs! https://aws.amazon.com/lambda/faqs/ 52

    @phermens

    Q: How are compute resources assigned to an AWS Lambda function?In the AWS Lambda resource model, you choose the amount of memory you want for your function, and are allocated proportional CPU power and other resources.

    For example, choosing 256MB of memory allocates approximately twice as much CPU power to your Lambda function as requesting 128MB of memory and half as much CPU power as choosing 512MB of memory. You can set your memory in 64MB increments from 128MB to 1.5GB.

    https://aws.amazon.com/lambda/faqs/https://aws.amazon.com/lambda/faqs/

  • Containers can be reused!https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/ 53

    @phermens

    https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/

  • Handy links

    54 @phermens

    Tooling https://github.com/aws/aws-sdk-net/ https://github.com/aws/aws-lambda-dotnet/

    Documentation http://github.com/awslabs/ http://serverless.com/framework/docs/ https://aws.amazon.com/lambda/faqs/

    https://github.com/aws/aws-sdk-net/https://github.com/aws/aws-sdk-net/https://github.com/aws/aws-lambda-dotnet/https://github.com/aws/aws-lambda-dotnet/http://github.com/awslabs/http://github.com/awslabs/http://serverless.com/framework/docs/http://serverless.com/framework/docs/https://aws.amazon.com/lambda/faqs/https://aws.amazon.com/lambda/faqs/

  • https://aws.amazon.com/documentation/ 55

    @phermens

    https://aws.amazon.com/documentation/https://aws.amazon.com/documentation/

  • 56 @phermens

  • Thanks!

    57 @phermens

    Tonights demos are on GitHub (but theyre really nothing special!)

    https://github.com/pheonix25/lambda-helloworld

    https://github.com/pheonix25/lambda-helloworldcaller

    https://github.com/pheonix25/lambda-helloworldhttps://github.com/pheonix25/lambda-helloworldhttps://github.com/pheonix25/lambda-helloworldcallerhttps://github.com/pheonix25/lambda-helloworldcaller

  • Thanks!

    58 @phermens