Рубрики
Uncategorized

Развернуть новое приложение Rails для AWS Lambda с помощью Lamby

Вы должны это сделать? Я не знаю. *Можешь так сделать? Ага. :). Tagged with Rails, AWS, DevOps, Lambda.

Это мои заметки от развертывания приложения Rails Cowerplate в AWS Lambda (да, вы читаете это правильно), используя Lamby. По сути, это я прохожу через руководство быстрого начала. ( Вот моя производственная конечная точка -Не уверен, как долго это будет.)

Ссылки по теме:

Следуйте за мной в Твиттере: https://twitter.com/heyjoshwood

Несколько вопросов без ответа у меня есть:

  • Как насчет Lambda’s 250 МБ максимально размер функции ? Будет ли это работать с большим приложением Rails?
  • А как насчет холодных начинаний? Даже приложение Boilerplate Rails занимает много времени на загрузку.
  • Почему Docker так медленно на macOS 😭

Обновление: Кен Коллинз, создатель драгоценного камня Ламби, ответил на некоторые из моих вопросов на Reddit. Проверьте тему Анкет

  • Создайте начальное приложение Rails:
  brew install awscli jq
  brew tap aws/tap
  brew install aws-sam-cli

  asdf shell ruby 2.7.1

  gem install rails -N

  rails new lamby_rails \
    --skip-action-mailer --skip-action-mailbox --skip-action-text \
    --skip-active-record --skip-active-storage --skip-puma \
    --skip-action-cable --skip-spring --skip-listen --skip-turbolinks \
    --skip-system-test --skip-bootsnap

  cd lamby_rails

  git add .
  git commit -m 'initial'
  • Редактировать App/Controllers/Application_controller.rb :
  class ApplicationController < ActionController::Base
    def index
      render html: "

Hello Lamby

".html_safe end end

Редактировать config/routes.rb :

  Rails.application.routes.draw do
    root to: "application#index"
  end
  • Сохранить прогресс:
  git add -p
  git commit -m 'hello lamby'
  • Установите драгоценные камни Lamby:
  bundle add lamby aws-sdk-ssm
  • Редактировать Gemfile :
  - gem "lamby", "~> 2.0"
  + gem "lamby", "~> 2.0", require: false
  • Завершить установку Ламби:
  ./bin/rake -r lamby lamby:install

  git add -p
  git status
  git add .
  git commit -m 'install lamby'
  • Я установил свои учетные данные AWS здесь:
  # ~/.aws/credentials
  [lamby_rails]
  aws_access_key_id = VALUE
  aws_secret_access_key = SECRET_VALUE
  • И конфигурация региона здесь:
  # ~/.aws/config
  [lamby_rails]
  output = json
  region = us-west-1
  • Я установил свой aws_profile с помощью Direnv Анкет Редактировать .envrc :
  export AWS_PROFILE=lamby_rails

затем беги:

  direnv allow
  • Настройка SSM W/Rails Master Key:
  aws ssm put-parameter \
    --name "/config/lamby_rails/env/RAILS_MASTER_KEY" \
    --type "SecureString" \
    --value $(cat config/master.key)
  • Редактировать app.rb и добавить эту строку сразу после Требуется 'lamby' :
  ENV['RAILS_MASTER_KEY'] =
    Lamby::SsmParameterStore.get!('/config/lamby_rails/env/RAILS_MASTER_KEY')
  • Редактировать Шаблон.yaml CloudFormation/SAM -файл, добавив это в Свойства раздел вашего Railsfunction . Это дополнение позволяет вашей политике времени выполнения Lambda читать конфигурации из хранилища параметров SSM ( см. Full Template.yml ):
  Policies:
    - Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action:
            - ssm:GetParameter
            - ssm:GetParameters
            - ssm:GetParametersByPath
            - ssm:GetParameterHistory
          Resource:
            - !Sub arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/config/lamby_rails/*
  • Сохранить прогресс:
  git add -p
  git commit -m 'configure lamby'
  • Редактировать .envrc (Измените имя ведра):
  export CLOUDFORMATION_BUCKET=lamby-rails-josh
  export AWS_DEFAULT_REGION=us-west-1

Не забывай:

  direnv allow
  • Теперь беги:
  aws s3 mb "s3://$CLOUDFORMATION_BUCKET"

  ./bin/deploy
  • Это использует Docker для выпечки приложения Rails Lambda. Это может занять много времени на MacOS. Пойдите немного кофе или чая.:)
  $ time ./bin/deploy

  Successfully created/updated stack - lambyrails-production-us-west-1 in None
  ./bin/deploy  17.45s user 9.86s system 5% cpu 9:04.13 total

(Это время сборки/развертывания на 8-ядерном MacBook Pro 🤔)

Оригинал: «https://dev.to/joshuap/deploy-a-new-rails-app-to-aws-lambda-using-lamby-3i32»