node without servers aws-lambda

Download Node without servers aws-lambda

Post on 09-Aug-2015

79 views

Category:

Technology

2 download

Embed Size (px)

TRANSCRIPT

  1. 1. Node Without Servers: Event-Driven Computing with AWS Lambda Brian Klaas Johns Hopkins Bloomberg School of Public Health bklaas@jhu.edu @brian_klaas www.iterateme.com
  2. 2. Events
  3. 3. What is and how does it work? What good can do for me?
  4. 4. + =
  5. 5. Code Memory setting Timeout setting
  6. 6. Event
  7. 7. Full AWS Linux AMI (ami-dfc39aef, Linux Kernel 3.14.35-28.38.amzn1.x86_64) Node v0.10.33 ImageMagick AWS JS SDK v2.1.22 Up to 1024MB RAM and 512MB of ephemeral disk storage
  8. 8. * * May not actually be Docker
  9. 9. Every event Every cong change Every code change = new ( )
  10. 10. Lambda = one function
  11. 11. exports.handler = function(event, context) { console.log('Hello', event); // more JS goes here context.done(null, 'Success'); }
  12. 12. Initialization code Handler code Code terminates Timeout context.done context.success context.fail All callbacks nished Event Context ?
  13. 13. Never assume Lambda will reuse a container.
  14. 14. Pricing: Charged by Compute Time Free Tier First million requests are free 400,000 GB-seconds of compute time 220 hours of free compute time per month @ 512MB of RAM Paid Tier $0.20 per 1 million requests thereafter $0.00001667 for every GB-second http://aws.amazon.com/lambda/pricing * You also have to pay for in/out data transfer fees
  15. 15. EventDriven Computing
  16. 16. Event notication Run a compute cycle Shut down
  17. 17. Where do events come from?
  18. 18. DynamoDB S3 AWS SDK Kinesis Cognito SNS Custom EventsCloudFormation
  19. 19. S3 Fast, durable, cheap storage Events on le put/post, copy
  20. 20. Many AWS services can post to SNS GitHub has a post-commit hook SNS
  21. 21. All SDKs support Lambda function invocation Java, Ruby, Node, Python, JavaScript, PHP, .NET, iOS, Android, and the CLI AWS SDK Custom Events
  22. 22. Lambda in Action
  23. 23. 1 Template Example
  24. 24. IAM Identity Access Management
  25. 25. IAM Users Groups Roles AccessKey + SecretKey
  26. 26. IAM
  27. 27. IAM Roles = JSON { "Version":"2008-10-17", "Id":"http referrer policy example", "Statement":[ { "Sid":"Allow get requests referred by www.mysite.com and mysite.com", "Effect":"Allow", "Principal":"*", "Action":"s3:GetObject", "Resource":"arn:aws:s3:::example-bucket/*", "Condition":{ "StringLike":{ "aws:Referer":[ "http://www.mysite.com/*", "http://mysite.com/*" ] } } } ] }
  28. 28. How do we know its done?
  29. 29. When responding to events from within AWS, we dont.
  30. 30. 4 Notifying that Its Done
  31. 31. Options for notifying that work is complete SQS SNS (http, SMS, email) DynamoDB table File updating in S3
  32. 32. Only one Lambda function per S3 bucket.
  33. 33. 5 Custom Events
  34. 34. AWS SDK Custom Events AWS CLI
  35. 35. Event body [Event context]
  36. 36. Custom events are synchronous calls Default invocation-type: RequestResponse invocation-type: Event for async events
  37. 37. Invoking via the CLI using ColdFusion
  38. 38. Invoking via the CLI aws lambda invoke --function-name myFunctionName --payload '{"key1":"value1", "key2":"value2", "key3":"value3"}' outfile.txt Name of your Lambda function Response is written to a le. This is the name of that le. JSON passed in to the Lambda function as the event structure. Note you can specify --payload le://input.txt to use a le instead.
  39. 39. Ondemand Node functionality
  40. 40. What Good is Lambda Anyway?
  41. 41. Asynchronous task server Background job processor
  42. 42. S3 Event Handler
  43. 43. Media conversion service ImageMagick Native modules AWS Elastic Transcoder
  44. 44. Realtime analytics aggregator
  45. 45. Microservice backend?
  46. 46. Lambda is great when every event is independent and can be processed incrementally.
  47. 47. Beyond JS/Node
  48. 48. Statically compile on an Amazon Linux AMI Install the module as part of your Node app on the same AMI ZIP up the function, binary, and the node_modules folder Native Node Modules https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/
  49. 49. Make sure its compiled for the Linux AMD64 architecture Make sure it can run standalone or is visible to /bin/bash/ or /usr/bin/python Use child_process.spawnSync() to make sure the child process nishes before context.success/done() executes Include the executable in the ZIP le you upload to Lambda Any Compiled Executable https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/
  50. 50. Native Java support announced April 9 Java
  51. 51. Go Do!
  52. 52. Code at github.com/brianklaas Session evaluation! Brian Klaas Johns Hopkins Bloomberg School of Public Health bklaas@jhu.edu @brian_klaas www.iterateme.com

Recommended

View more >