Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Lambda & Ruby/Rails with SAM

AWS Lambda & Ruby/Rails with SAM

Ken Collins

March 06, 2019
Tweet

More Decks by Ken Collins

Other Decks in Programming

Transcript

  1. AWS Lambda
    & Ruby/Rails with SAM

    View Slide

  2. Congratulations!
    The simple fact that
    you are sitting here
    listening to me,
    means you've made a
    glorious contribution
    to Science!
    Tragic, but
    informative.
    Cave Johnson

    View Slide

  3. Ken Collins Staff Engineer @CustomInk
    @MetaSkills

    View Slide

  4. View Slide

  5. ⠀ ⠀ ⠀

     


     

     

    View Slide

  6. KNOWLEDGE
    Rails &
    Lambda
    Ruby &
    Lambda
    Tech Intro
    AWS SAM
    Objectives & Results

    View Slide

  7. View Slide

  8. View Slide

  9. Change The World
    One Lambda at a Time!

    View Slide

  10. Using Ruby with AWS Lambda & SAM
    https://github.com/757rb/hello-757rb-lambda

    View Slide

  11. Custom Ink | Tech Blog
    https://technology.customink.com

    View Slide

  12. https://dctechslack.herokuapp.com
    https://slackin757dev.herokuapp.com
    DCTech || 757Dev

    View Slide

  13. Tech Intro

    View Slide

  14. Strap
    Bootstrap your macOS development system.
    GitHub Project
    https://github.com/MikeMcQuaid/strap

    View Slide

  15. • ./bin/
    • bootstrap, setup, build, server, 

    deploy, test, …
    • Usually Bash
    Strap

    View Slide

  16. AWS Lambda

    View Slide

  17. View Slide

  18. AWS SAM
    GitHub Project
    https://github.com/awslabs/serverless-application-model/

    View Slide

  19. $ sam

    View Slide

  20. https://github.com/awslabs/serverless-
    application-model/blob/master/versions/
    2016-10-31.md

    View Slide

  21. https://docs.aws.amazon.com/
    AWSCloudFormation/latest/UserGuide/aws-
    template-resource-type-ref.html
    CLOUDFORMATION

    View Slide

  22. $ sam local start-api

    View Slide

  23. $ sam build --use-container

    View Slide

  24. $ sam package …
    $ sam deploy …

    View Slide

  25. Ruby &
    Lambda

    View Slide

  26. Project Pillars
    • Local Development Feedback
    • Using Gems with Native Extensions
    • Using DynamoDB

    View Slide

  27. Contrived Architecture
    DynamoDB
    HTTP /plos?query={query}

    View Slide

  28. View Slide

  29. Docker Image
    lambci/lambda:ruby2.5

    View Slide

  30. Local Dev Deps

    View Slide

  31. Easy Development &
    Browser Refreshes

    View Slide

  32. Patterns
    • Directories (app, test, etc)
    • Lean Handler & PORO Usage
    • Debug HTML. Event, Context, & ENV
    • Minitest, TravisCI, & Capybara*


    *not really

    View Slide

  33. Aws::Record
    GitHub Project
    https://github.com/aws/aws-sdk-ruby-record

    View Slide

  34. DynamoDB

    View Slide

  35. Used in IAM
    Execution Role
    DynamoDB

    View Slide

  36. View Slide

  37. Patterns…

    View Slide

  38. View Slide

  39. Patterns
    • Easy/Lazy Development & Test
    • Table Migrations
    • SimpleTable On Demand Defaults

    View Slide

  40. Using Ruby with AWS Lambda & SAM
    https://github.com/757rb/hello-757rb-lambda

    View Slide

  41. Rails &
    Lambda

    View Slide

  42. Product Site
    http://rubyonjets.com

    View Slide

  43. Ruby on Jets

    View Slide

  44. Ruby on Jets

    View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. Little Gotcha List
    • Docker Shared Volume Perf
    • Logging & RAILS_LOG_TO_STDOUT
    • Keeping Package Size Down.
    • Invoke URL & Custom Domains

    View Slide

  56. View Slide

  57. Coming Soon
    • Quality Rack Integration. Session,
    Cookies, & More.
    • Deploy asset:precompile to S3.
    • Encrypted Session Secret via AWS
    System Manager Param Store.
    • Better Gemfile dev/test groups.

    View Slide

  58. View Slide

  59. Lambda Layers

    View Slide

  60. --help

    View Slide

  61. View Slide

  62. RailsConf
    2019

    View Slide

  63. https://dctechslack.herokuapp.com
    https://slackin757dev.herokuapp.com
    DCTech || 757Dev

    View Slide

  64. View Slide