lamby 3.1.3 → 4.0.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.beta1
|
|
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
|