lamby 3.1.3 → 4.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.devcontainer/Dockerfile +1 -0
- data/.devcontainer/devcontainer.json +20 -0
- data/.github/workflows/test.yml +25 -0
- data/CHANGELOG.md +19 -2
- data/Gemfile.lock +106 -101
- data/README.md +10 -7
- data/bin/bootstrap +1 -4
- data/bin/setup +4 -4
- data/bin/test +4 -4
- data/bin/update +1 -3
- data/images/social.png +0 -0
- data/images/social2.png +0 -0
- data/lib/lamby/config.rb +9 -0
- data/lib/lamby/debug.rb +0 -6
- data/lib/lamby/logger.rb +3 -12
- data/lib/lamby/rack.rb +0 -3
- data/lib/lamby/railtie.rb +1 -6
- data/lib/lamby/version.rb +1 -1
- data/lib/lamby.rb +4 -1
- metadata +9 -41
- data/.github/workflows/cicd.yml +0 -17
- data/.ruby-version +0 -1
- data/Dockerfile +0 -7
- data/bin/_setup +0 -7
- data/bin/_test +0 -8
- data/docker-compose.yml +0 -15
- data/lib/lamby/sam_helpers.rb +0 -9
- data/lib/lamby/tasks.rake +0 -15
- data/lib/lamby/templates/alb/Dockerfile +0 -15
- data/lib/lamby/templates/alb/Dockerfile-build +0 -18
- data/lib/lamby/templates/alb/_build +0 -25
- data/lib/lamby/templates/alb/_deploy +0 -31
- data/lib/lamby/templates/alb/app.rb +0 -12
- data/lib/lamby/templates/alb/deploy +0 -8
- data/lib/lamby/templates/alb/docker-compose.yml +0 -19
- data/lib/lamby/templates/alb/template.yaml +0 -90
- data/lib/lamby/templates/alb.rb +0 -33
- data/lib/lamby/templates/http/Dockerfile +0 -15
- data/lib/lamby/templates/http/Dockerfile-build +0 -18
- data/lib/lamby/templates/http/_build +0 -25
- data/lib/lamby/templates/http/_deploy +0 -31
- data/lib/lamby/templates/http/app.rb +0 -12
- data/lib/lamby/templates/http/deploy +0 -8
- data/lib/lamby/templates/http/docker-compose.yml +0 -19
- data/lib/lamby/templates/http/template.yaml +0 -48
- data/lib/lamby/templates/http.rb +0 -33
- data/lib/lamby/templates/rest/Dockerfile +0 -15
- data/lib/lamby/templates/rest/Dockerfile-build +0 -18
- data/lib/lamby/templates/rest/_build +0 -25
- data/lib/lamby/templates/rest/_deploy +0 -31
- data/lib/lamby/templates/rest/app.rb +0 -12
- data/lib/lamby/templates/rest/deploy +0 -8
- data/lib/lamby/templates/rest/docker-compose.yml +0 -19
- data/lib/lamby/templates/rest/template.yaml +0 -84
- data/lib/lamby/templates/rest.rb +0 -33
- data/lib/lamby/templates/shared.rb +0 -17
- data/lib/lamby/templates.rake +0 -37
@@ -1,15 +0,0 @@
|
|
1
|
-
FROM public.ecr.aws/lambda/ruby:2.7
|
2
|
-
ARG RAILS_ENV
|
3
|
-
ENV RAILS_ENV=$RAILS_ENV
|
4
|
-
|
5
|
-
COPY . .
|
6
|
-
|
7
|
-
# == Cleanup Unused Files & Directories ==
|
8
|
-
RUN rm -rf \
|
9
|
-
log \
|
10
|
-
node_modules \
|
11
|
-
test \
|
12
|
-
tmp \
|
13
|
-
vendor/bundle/ruby/2.7.0/cache
|
14
|
-
|
15
|
-
CMD ["app.handler"]
|
@@ -1,18 +0,0 @@
|
|
1
|
-
FROM amazon/aws-sam-cli-build-image-ruby2.7
|
2
|
-
|
3
|
-
# Ensure minimum required SAM version.
|
4
|
-
ENV SAM_CLI_VERSION=1.23.0
|
5
|
-
RUN curl -L "https://github.com/aws/aws-sam-cli/releases/download/v${SAM_CLI_VERSION}/aws-sam-cli-linux-x86_64.zip" \
|
6
|
-
-o "aws-sam-cli-linux-x86_64.zip" && \
|
7
|
-
unzip -q aws-sam-cli-linux-x86_64.zip -d sam-installation && \
|
8
|
-
./sam-installation/install && \
|
9
|
-
rm -rf ./sam-installation ./aws-sam-cli-linux-x86_64.zip
|
10
|
-
|
11
|
-
# Node for JavaScript.
|
12
|
-
RUN curl -sL https://rpm.nodesource.com/setup_14.x | bash - && \
|
13
|
-
yum install -y nodejs && \
|
14
|
-
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo && \
|
15
|
-
rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg && \
|
16
|
-
yum install -y yarn
|
17
|
-
|
18
|
-
WORKDIR /var/task
|
@@ -1,25 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
set -e
|
3
|
-
|
4
|
-
if [ "$CI" != "true" ]; then
|
5
|
-
echo "== Cleaning dev dependencies for local deploy. Run ./bin/setup again afterward! =="
|
6
|
-
rm -rf ./.bundle \
|
7
|
-
./vendor/bundle \
|
8
|
-
./node_modules
|
9
|
-
fi
|
10
|
-
|
11
|
-
echo '== Bundle For Deployment =='
|
12
|
-
bundle lock --add-platform x86_64-linux
|
13
|
-
bundle config --local deployment true
|
14
|
-
bundle config --local without 'development test'
|
15
|
-
bundle config --local path './vendor/bundle'
|
16
|
-
bundle install --quiet --jobs 4
|
17
|
-
|
18
|
-
echo "== Environments & Configuration =="
|
19
|
-
# ./bin/rails \
|
20
|
-
# -rlamby \
|
21
|
-
# lamby:ssm:dotenv \
|
22
|
-
# LAMBY_SSM_PARAMS_PATH="/APPNAMEHERE/${RAILS_ENV}/env"
|
23
|
-
|
24
|
-
echo "== Asset Hosts & Precompiling =="
|
25
|
-
NODE_ENV='production' ./bin/rails assets:precompile
|
@@ -1,31 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
set -e
|
3
|
-
|
4
|
-
# https://github.com/aws/aws-sam-cli/issues/2447
|
5
|
-
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
|
6
|
-
IMAGE_REPOSITORY="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/APPNAMEHERE"
|
7
|
-
|
8
|
-
echo "== Lamby build =="
|
9
|
-
./bin/_build
|
10
|
-
|
11
|
-
echo "== SAM build =="
|
12
|
-
sam build \
|
13
|
-
--parameter-overrides \
|
14
|
-
RailsEnv="${RAILS_ENV}"
|
15
|
-
|
16
|
-
echo "== SAM package =="
|
17
|
-
sam package \
|
18
|
-
--region "$AWS_DEFAULT_REGION" \
|
19
|
-
--template-file ./.aws-sam/build/template.yaml \
|
20
|
-
--output-template-file ./.aws-sam/build/packaged.yaml \
|
21
|
-
--image-repository "$IMAGE_REPOSITORY" \
|
22
|
-
|
23
|
-
echo "== SAM deploy =="
|
24
|
-
sam deploy \
|
25
|
-
--region "$AWS_DEFAULT_REGION" \
|
26
|
-
--template-file ./.aws-sam/build/packaged.yaml \
|
27
|
-
--stack-name "APPNAMEHERE-${RAILS_ENV}" \
|
28
|
-
--image-repository "$IMAGE_REPOSITORY" \
|
29
|
-
--capabilities "CAPABILITY_IAM" \
|
30
|
-
--parameter-overrides \
|
31
|
-
RailsEnv="${RAILS_ENV}"
|
@@ -1,12 +0,0 @@
|
|
1
|
-
ENV['RAILS_SERVE_STATIC_FILES'] = '1'
|
2
|
-
require_relative 'config/boot'
|
3
|
-
require 'dotenv' ; Dotenv.load ".env.#{ENV['RAILS_ENV']}"
|
4
|
-
require 'lamby'
|
5
|
-
require_relative 'config/application'
|
6
|
-
require_relative 'config/environment'
|
7
|
-
|
8
|
-
$app = Rack::Builder.new { run Rails.application }.to_app
|
9
|
-
|
10
|
-
def handler(event:, context:)
|
11
|
-
Lamby.handler $app, event, context
|
12
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
version: '3.7'
|
2
|
-
services:
|
3
|
-
APPNAMEHERE:
|
4
|
-
build:
|
5
|
-
context: '.'
|
6
|
-
dockerfile: Dockerfile-build
|
7
|
-
entrypoint: ./bin/entrypoint
|
8
|
-
environment:
|
9
|
-
- RAILS_ENV=${RAILS_ENV-development}
|
10
|
-
- SAM_CLI_TELEMETRY=0
|
11
|
-
- AWS_PROFILE=${AWS_PROFILE-default}
|
12
|
-
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
13
|
-
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
14
|
-
- AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION-us-east-1}
|
15
|
-
- CI=${CI}
|
16
|
-
volumes:
|
17
|
-
- ${PWD}:/var/task
|
18
|
-
- ${HOME}/.aws:/root/.aws
|
19
|
-
- /var/run/docker.sock:/var/run/docker.sock
|
@@ -1,84 +0,0 @@
|
|
1
|
-
AWSTemplateFormatVersion: '2010-09-09'
|
2
|
-
Transform: AWS::Serverless-2016-10-31
|
3
|
-
Description: APPNAMEHERE Lambda (REST API)
|
4
|
-
|
5
|
-
Parameters:
|
6
|
-
|
7
|
-
RailsEnv:
|
8
|
-
Type: String
|
9
|
-
Default: production
|
10
|
-
AllowedValues:
|
11
|
-
- staging
|
12
|
-
- production
|
13
|
-
|
14
|
-
Resources:
|
15
|
-
|
16
|
-
RailsApi:
|
17
|
-
Type: AWS::Serverless::Api
|
18
|
-
Properties:
|
19
|
-
StageName: !Ref RailsEnv
|
20
|
-
EndpointConfiguration: REGIONAL
|
21
|
-
DefinitionBody:
|
22
|
-
swagger: 2.0
|
23
|
-
info: { title: !Ref 'AWS::StackName' }
|
24
|
-
basePath: !Join [ '', [ '/', !Ref RailsEnv ] ]
|
25
|
-
schemes: [ 'https' ]
|
26
|
-
paths:
|
27
|
-
/:
|
28
|
-
x-amazon-apigateway-any-method:
|
29
|
-
x-amazon-apigateway-integration:
|
30
|
-
uri:
|
31
|
-
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${RailsLambda.Arn}:live/invocations
|
32
|
-
httpMethod: POST
|
33
|
-
type: aws_proxy
|
34
|
-
/{resource+}:
|
35
|
-
x-amazon-apigateway-any-method:
|
36
|
-
parameters:
|
37
|
-
- name: resource
|
38
|
-
in: path
|
39
|
-
required: true
|
40
|
-
type: string
|
41
|
-
x-amazon-apigateway-integration:
|
42
|
-
uri:
|
43
|
-
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${RailsLambda.Arn}:live/invocations
|
44
|
-
httpMethod: POST
|
45
|
-
type: aws_proxy
|
46
|
-
x-amazon-apigateway-binary-media-types:
|
47
|
-
- '*/*'
|
48
|
-
|
49
|
-
RailsLambda:
|
50
|
-
Type: AWS::Serverless::Function
|
51
|
-
Metadata:
|
52
|
-
DockerContext: .
|
53
|
-
Dockerfile: Dockerfile
|
54
|
-
Properties:
|
55
|
-
MemorySize: 512
|
56
|
-
Timeout: 30
|
57
|
-
Environment:
|
58
|
-
Variables:
|
59
|
-
RAILS_ENV: !Ref RailsEnv
|
60
|
-
FunctionName: !Join [ '', [ 'APPNAMEHERE-', !Ref RailsEnv, '-', !Ref 'AWS::Region' ] ]
|
61
|
-
Events:
|
62
|
-
Root:
|
63
|
-
Type: Api
|
64
|
-
Properties:
|
65
|
-
Path: /
|
66
|
-
Method: ANY
|
67
|
-
RestApiId: !Ref RailsApi
|
68
|
-
RailsAppAll:
|
69
|
-
Type: Api
|
70
|
-
Properties:
|
71
|
-
Path: /{resource+}
|
72
|
-
Method: ANY
|
73
|
-
RestApiId: !Ref RailsApi
|
74
|
-
PackageType: Image
|
75
|
-
|
76
|
-
Outputs:
|
77
|
-
|
78
|
-
RailsApiUrl:
|
79
|
-
Description: API Gateway Endpoint
|
80
|
-
Value: !Sub "https://${RailsApi}.execute-api.${AWS::Region}.amazonaws.com/${RailsEnv}/"
|
81
|
-
|
82
|
-
RailsLambdaArn:
|
83
|
-
Description: Lambda ARN
|
84
|
-
Value: !GetAtt RailsLambda.Arn
|
data/lib/lamby/templates/rest.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
$LAMBY_INSTALLER_NAME = 'rest'
|
2
|
-
load 'lamby/templates/shared.rb'
|
3
|
-
|
4
|
-
say '==> Running Lamby API Gateway (REST API) installer...'
|
5
|
-
|
6
|
-
say 'Copying files...'
|
7
|
-
copy_file tpl_file('app.rb'), app_file('app.rb')
|
8
|
-
copy_file tpl_file('template.yaml'), app_file('template.yaml')
|
9
|
-
gsub_file app_file('template.yaml'), /APPNAMEHERE/, appname
|
10
|
-
copy_file tpl_file('Dockerfile'), app_file('Dockerfile')
|
11
|
-
copy_file tpl_file('Dockerfile-build'), app_file('Dockerfile-build')
|
12
|
-
copy_file tpl_file('docker-compose.yml'), app_file('docker-compose.yml')
|
13
|
-
gsub_file app_file('docker-compose.yml'), /APPNAMEHERE/, appname.downcase
|
14
|
-
|
15
|
-
say 'Adding to .gitignore...'
|
16
|
-
FileUtils.touch app_file('.gitignore')
|
17
|
-
append_to_file app_file('.gitignore'), <<~GITIGNORE
|
18
|
-
# Lamby
|
19
|
-
/.aws-sam
|
20
|
-
GITIGNORE
|
21
|
-
|
22
|
-
say 'Creating ./bin files for build and deploy...'
|
23
|
-
copy_file tpl_file('_build'), app_file('bin/_build')
|
24
|
-
gsub_file app_file('bin/_build'), /APPNAMEHERE/, appname.downcase
|
25
|
-
chmod app_file('bin/_build'), 0755
|
26
|
-
copy_file tpl_file('deploy'), app_file('bin/deploy')
|
27
|
-
gsub_file app_file('bin/deploy'), /APPNAMEHERE/, appname.downcase
|
28
|
-
chmod app_file('bin/deploy'), 0755
|
29
|
-
copy_file tpl_file('_deploy'), app_file('bin/_deploy')
|
30
|
-
gsub_file app_file('bin/_deploy'), /APPNAMEHERE/, appname.downcase
|
31
|
-
chmod app_file('bin/_deploy'), 0755
|
32
|
-
|
33
|
-
say 'Welcome to AWS Lambda and Rails 🎉', :green
|
@@ -1,17 +0,0 @@
|
|
1
|
-
def inst_name
|
2
|
-
$LAMBY_INSTALLER_NAME
|
3
|
-
end
|
4
|
-
|
5
|
-
def app_file(path)
|
6
|
-
Rails.root.join(path)
|
7
|
-
end
|
8
|
-
|
9
|
-
def tpl_file(path)
|
10
|
-
"#{__dir__}/#{inst_name}/#{path}"
|
11
|
-
end
|
12
|
-
|
13
|
-
def appname
|
14
|
-
k = Rails.application.class
|
15
|
-
p = k.respond_to?(:module_parent) ? k.module_parent : k.parent
|
16
|
-
p.name
|
17
|
-
end
|
data/lib/lamby/templates.rake
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
installers = {
|
2
|
-
'API Gateway (HTTP API)' => :http,
|
3
|
-
'API Gateway (REST API)' => :rest,
|
4
|
-
'Application Load Balancer' => :alb
|
5
|
-
}.freeze
|
6
|
-
|
7
|
-
namespace :lamby do
|
8
|
-
namespace :install do
|
9
|
-
|
10
|
-
installers.each do |name, task_name|
|
11
|
-
desc "Install Lamby files for #{name}"
|
12
|
-
task task_name do
|
13
|
-
exec "#{base_path} LOCATION=#{template(task_name)}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def template(task_name)
|
18
|
-
File.expand_path "../lamby/templates/#{task_name}.rb", __dir__
|
19
|
-
end
|
20
|
-
|
21
|
-
def bin_path
|
22
|
-
ENV['BUNDLE_BIN'] || './bin'
|
23
|
-
end
|
24
|
-
|
25
|
-
def base_path
|
26
|
-
if Rails::VERSION::MAJOR >= 5
|
27
|
-
"#{RbConfig.ruby} #{bin_path}/rails app:template"
|
28
|
-
else
|
29
|
-
"#{RbConfig.ruby} #{bin_path}/rake rails:template"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
desc "Install Lamby files for #{installers.first.first}"
|
36
|
-
task install: 'install:http'
|
37
|
-
end
|