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
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lamby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken Collins
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -129,25 +129,24 @@ executables: []
|
|
129
129
|
extensions: []
|
130
130
|
extra_rdoc_files: []
|
131
131
|
files:
|
132
|
-
- ".
|
132
|
+
- ".devcontainer/Dockerfile"
|
133
|
+
- ".devcontainer/devcontainer.json"
|
134
|
+
- ".github/workflows/test.yml"
|
133
135
|
- ".gitignore"
|
134
|
-
- ".ruby-version"
|
135
136
|
- CHANGELOG.md
|
136
137
|
- CODE_OF_CONDUCT.md
|
137
|
-
- Dockerfile
|
138
138
|
- Gemfile
|
139
139
|
- Gemfile.lock
|
140
140
|
- LICENSE.txt
|
141
141
|
- README.md
|
142
142
|
- Rakefile
|
143
|
-
- bin/_setup
|
144
|
-
- bin/_test
|
145
143
|
- bin/bootstrap
|
146
144
|
- bin/console
|
147
145
|
- bin/setup
|
148
146
|
- bin/test
|
149
147
|
- bin/update
|
150
|
-
-
|
148
|
+
- images/social.png
|
149
|
+
- images/social2.png
|
151
150
|
- lamby.gemspec
|
152
151
|
- lib/lamby.rb
|
153
152
|
- lib/lamby/config.rb
|
@@ -160,38 +159,7 @@ files:
|
|
160
159
|
- lib/lamby/rack_rest.rb
|
161
160
|
- lib/lamby/railtie.rb
|
162
161
|
- lib/lamby/runner.rb
|
163
|
-
- lib/lamby/sam_helpers.rb
|
164
162
|
- lib/lamby/ssm_parameter_store.rb
|
165
|
-
- lib/lamby/tasks.rake
|
166
|
-
- lib/lamby/templates.rake
|
167
|
-
- lib/lamby/templates/alb.rb
|
168
|
-
- lib/lamby/templates/alb/Dockerfile
|
169
|
-
- lib/lamby/templates/alb/Dockerfile-build
|
170
|
-
- lib/lamby/templates/alb/_build
|
171
|
-
- lib/lamby/templates/alb/_deploy
|
172
|
-
- lib/lamby/templates/alb/app.rb
|
173
|
-
- lib/lamby/templates/alb/deploy
|
174
|
-
- lib/lamby/templates/alb/docker-compose.yml
|
175
|
-
- lib/lamby/templates/alb/template.yaml
|
176
|
-
- lib/lamby/templates/http.rb
|
177
|
-
- lib/lamby/templates/http/Dockerfile
|
178
|
-
- lib/lamby/templates/http/Dockerfile-build
|
179
|
-
- lib/lamby/templates/http/_build
|
180
|
-
- lib/lamby/templates/http/_deploy
|
181
|
-
- lib/lamby/templates/http/app.rb
|
182
|
-
- lib/lamby/templates/http/deploy
|
183
|
-
- lib/lamby/templates/http/docker-compose.yml
|
184
|
-
- lib/lamby/templates/http/template.yaml
|
185
|
-
- lib/lamby/templates/rest.rb
|
186
|
-
- lib/lamby/templates/rest/Dockerfile
|
187
|
-
- lib/lamby/templates/rest/Dockerfile-build
|
188
|
-
- lib/lamby/templates/rest/_build
|
189
|
-
- lib/lamby/templates/rest/_deploy
|
190
|
-
- lib/lamby/templates/rest/app.rb
|
191
|
-
- lib/lamby/templates/rest/deploy
|
192
|
-
- lib/lamby/templates/rest/docker-compose.yml
|
193
|
-
- lib/lamby/templates/rest/template.yaml
|
194
|
-
- lib/lamby/templates/shared.rb
|
195
163
|
- lib/lamby/version.rb
|
196
164
|
- vendor/.keep
|
197
165
|
homepage: https://github.com/customink/lamby
|
@@ -209,9 +177,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
209
177
|
version: '0'
|
210
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
179
|
requirements:
|
212
|
-
- - "
|
180
|
+
- - ">"
|
213
181
|
- !ruby/object:Gem::Version
|
214
|
-
version:
|
182
|
+
version: 1.3.1
|
215
183
|
requirements: []
|
216
184
|
rubygems_version: 3.1.2
|
217
185
|
signing_key:
|
data/.github/workflows/cicd.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
name: CI/CD
|
2
|
-
on: [push]
|
3
|
-
jobs:
|
4
|
-
cicd:
|
5
|
-
runs-on: ubuntu-latest
|
6
|
-
steps:
|
7
|
-
- name: Checkout
|
8
|
-
uses: actions/checkout@v1
|
9
|
-
- name: Bootstrap
|
10
|
-
run: |
|
11
|
-
./bin/bootstrap
|
12
|
-
- name: Setup
|
13
|
-
run: |
|
14
|
-
./bin/setup
|
15
|
-
- name: Test
|
16
|
-
run: |
|
17
|
-
./bin/test
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.7.0
|
data/Dockerfile
DELETED
data/bin/_setup
DELETED
data/bin/_test
DELETED
data/docker-compose.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
version: '3.7'
|
2
|
-
services:
|
3
|
-
cicd:
|
4
|
-
build: .
|
5
|
-
environment:
|
6
|
-
- AWS_REGION=${AWS_REGION-us-east-1}
|
7
|
-
- AWS_PROFILE=${AWS_PROFILE-default}
|
8
|
-
- RAILS_ENV=${RAILS_ENV-test}
|
9
|
-
- AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION-us-east-1}
|
10
|
-
- SAM_CLI_TELEMETRY=0
|
11
|
-
- DIDPWD=${PWD}
|
12
|
-
volumes:
|
13
|
-
- ~/.aws:/root/.aws:delegated
|
14
|
-
- .:/var/task:delegated
|
15
|
-
- /var/run/docker.sock:/var/run/docker.sock
|
data/lib/lamby/sam_helpers.rb
DELETED
data/lib/lamby/tasks.rake
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
namespace :lamby do
|
2
|
-
|
3
|
-
namespace :ssm do
|
4
|
-
|
5
|
-
desc 'Create a Dotenv file.'
|
6
|
-
task :dotenv do
|
7
|
-
require 'lamby/ssm_parameter_store'
|
8
|
-
path = ENV['LAMBY_SSM_PARAMS_PATH']
|
9
|
-
raise ArgumentError, 'The LAMBY_SSM_PARAMS_PATH env is required.' unless path
|
10
|
-
Lamby::SsmParameterStore.dotenv(path)
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
@@ -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,90 +0,0 @@
|
|
1
|
-
AWSTemplateFormatVersion: '2010-09-09'
|
2
|
-
Transform: AWS::Serverless-2016-10-31
|
3
|
-
Description: APPNAMEHERE Lambda (ALB)
|
4
|
-
|
5
|
-
Parameters:
|
6
|
-
|
7
|
-
RailsEnv:
|
8
|
-
Type: String
|
9
|
-
Default: production
|
10
|
-
AllowedValues:
|
11
|
-
- staging
|
12
|
-
- production
|
13
|
-
VpcId:
|
14
|
-
Type: AWS::EC2::VPC::Id
|
15
|
-
Subnets:
|
16
|
-
Type: List<AWS::EC2::Subnet::Id>
|
17
|
-
|
18
|
-
Resources:
|
19
|
-
|
20
|
-
RailsLoadBalancer:
|
21
|
-
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
|
22
|
-
Properties:
|
23
|
-
Name: APPNAMEHERE
|
24
|
-
Scheme: internet-facing
|
25
|
-
Subnets: !Ref Subnets
|
26
|
-
SecurityGroups:
|
27
|
-
- !Ref RailsSecurityGroup
|
28
|
-
|
29
|
-
RailsLoadBalancerTargetGroup:
|
30
|
-
Type: AWS::ElasticLoadBalancingV2::TargetGroup
|
31
|
-
DependsOn: RailsLambdaInvokePermission
|
32
|
-
Properties:
|
33
|
-
TargetType: lambda
|
34
|
-
TargetGroupAttributes:
|
35
|
-
- Key: lambda.multi_value_headers.enabled
|
36
|
-
Value: true
|
37
|
-
Targets:
|
38
|
-
- Id: !GetAtt RailsLambda.Arn
|
39
|
-
|
40
|
-
RailsLoadBalancerHttpListener:
|
41
|
-
Type: 'AWS::ElasticLoadBalancingV2::Listener'
|
42
|
-
Properties:
|
43
|
-
DefaultActions:
|
44
|
-
- TargetGroupArn: !Ref RailsLoadBalancerTargetGroup
|
45
|
-
Type: forward
|
46
|
-
LoadBalancerArn: !Ref RailsLoadBalancer
|
47
|
-
Port: 80
|
48
|
-
Protocol: HTTP
|
49
|
-
|
50
|
-
RailsSecurityGroup:
|
51
|
-
Type: AWS::EC2::SecurityGroup
|
52
|
-
Properties:
|
53
|
-
GroupDescription: Allow HTTP
|
54
|
-
VpcId: !Ref VpcId
|
55
|
-
SecurityGroupIngress:
|
56
|
-
- IpProtocol: tcp
|
57
|
-
FromPort: 80
|
58
|
-
ToPort: 80
|
59
|
-
CidrIp: 0.0.0.0/0
|
60
|
-
|
61
|
-
RailsLambdaInvokePermission:
|
62
|
-
Type: AWS::Lambda::Permission
|
63
|
-
Properties:
|
64
|
-
FunctionName: !GetAtt RailsLambda.Arn
|
65
|
-
Action: 'lambda:InvokeFunction'
|
66
|
-
Principal: elasticloadbalancing.amazonaws.com
|
67
|
-
|
68
|
-
RailsLambda:
|
69
|
-
Type: AWS::Serverless::Function
|
70
|
-
Metadata:
|
71
|
-
DockerContext: .
|
72
|
-
Dockerfile: Dockerfile
|
73
|
-
Properties:
|
74
|
-
MemorySize: 512
|
75
|
-
Timeout: 30
|
76
|
-
Environment:
|
77
|
-
Variables:
|
78
|
-
RAILS_ENV: !Ref RailsEnv
|
79
|
-
FunctionName: !Join [ '', [ 'APPNAMEHERE-', !Ref RailsEnv, '-', !Ref 'AWS::Region' ] ]
|
80
|
-
PackageType: Image
|
81
|
-
|
82
|
-
Outputs:
|
83
|
-
|
84
|
-
RailsLoadBalancerDNSNAme:
|
85
|
-
Description: Application Load Balancer DNS Name
|
86
|
-
Value: !GetAtt RailsLoadBalancer.DNSName
|
87
|
-
|
88
|
-
RailsLambdaArn:
|
89
|
-
Description: Lambda ARN
|
90
|
-
Value: !GetAtt RailsLambda.Arn
|
data/lib/lamby/templates/alb.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
$LAMBY_INSTALLER_NAME = 'alb'
|
2
|
-
load 'lamby/templates/shared.rb'
|
3
|
-
|
4
|
-
say '==> Running Lamby Application Load Balancer 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,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,48 +0,0 @@
|
|
1
|
-
AWSTemplateFormatVersion: '2010-09-09'
|
2
|
-
Transform: AWS::Serverless-2016-10-31
|
3
|
-
Description: APPNAMEHERE Lambda (HTTP API)
|
4
|
-
|
5
|
-
Parameters:
|
6
|
-
|
7
|
-
RailsEnv:
|
8
|
-
Type: String
|
9
|
-
Default: production
|
10
|
-
AllowedValues:
|
11
|
-
- staging
|
12
|
-
- production
|
13
|
-
|
14
|
-
Resources:
|
15
|
-
|
16
|
-
RailsLambda:
|
17
|
-
Type: AWS::Serverless::Function
|
18
|
-
Metadata:
|
19
|
-
DockerContext: .
|
20
|
-
Dockerfile: Dockerfile
|
21
|
-
Properties:
|
22
|
-
MemorySize: 512
|
23
|
-
Timeout: 30
|
24
|
-
Environment:
|
25
|
-
Variables:
|
26
|
-
RAILS_ENV: !Ref RailsEnv
|
27
|
-
FunctionName: !Join [ '', [ 'APPNAMEHERE-', !Ref RailsEnv, '-', !Ref 'AWS::Region' ] ]
|
28
|
-
Events:
|
29
|
-
RailsApiProxy:
|
30
|
-
Type: HttpApi
|
31
|
-
Properties:
|
32
|
-
ApiId: !Ref RailsApi
|
33
|
-
PackageType: Image
|
34
|
-
|
35
|
-
RailsApi:
|
36
|
-
Type: AWS::Serverless::HttpApi
|
37
|
-
Properties:
|
38
|
-
StageName: !Ref RailsEnv
|
39
|
-
|
40
|
-
Outputs:
|
41
|
-
|
42
|
-
RailsApiUrl:
|
43
|
-
Description: API Gateway Endpoint
|
44
|
-
Value: !Sub "https://${RailsApi}.execute-api.${AWS::Region}.amazonaws.com/${RailsEnv}/"
|
45
|
-
|
46
|
-
RailsLambdaArn:
|
47
|
-
Description: Lambda ARN
|
48
|
-
Value: !GetAtt RailsLambda.Arn
|
data/lib/lamby/templates/http.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
$LAMBY_INSTALLER_NAME = 'http'
|
2
|
-
load 'lamby/templates/shared.rb'
|
3
|
-
|
4
|
-
say '==> Running Lamby API Gateway (HTTP 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
|