Это мои заметки от развертывания приложения Rails Cowerplate в AWS Lambda (да, вы читаете это правильно), используя Lamby. По сути, это я прохожу через руководство быстрого начала. ( Вот моя производственная конечная точка -Не уверен, как долго это будет.)
Ссылки по теме:
- https://aws.amazon.com/lambda/
- https://lamby.custominktech.com
- https://lamby.custominktech.com/docs/quick_start
Следуйте за мной в Твиттере: 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')
- Редактировать
Шаблон.yamlCloudFormation/SAM -файл, добавив это вСвойствараздел вашегоRailsfunction. Это дополнение позволяет вашей политике времени выполнения Lambda читать конфигурации из хранилища параметров SSM ( см. FullTemplate.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»