lamby 3.1.3 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +1 -0
  3. data/.devcontainer/devcontainer.json +20 -0
  4. data/.github/workflows/test.yml +25 -0
  5. data/CHANGELOG.md +19 -2
  6. data/Gemfile.lock +106 -101
  7. data/README.md +10 -7
  8. data/bin/bootstrap +1 -4
  9. data/bin/setup +4 -4
  10. data/bin/test +4 -4
  11. data/bin/update +1 -3
  12. data/images/social.png +0 -0
  13. data/images/social2.png +0 -0
  14. data/lib/lamby/config.rb +9 -0
  15. data/lib/lamby/debug.rb +0 -6
  16. data/lib/lamby/logger.rb +3 -12
  17. data/lib/lamby/rack.rb +0 -3
  18. data/lib/lamby/railtie.rb +1 -6
  19. data/lib/lamby/version.rb +1 -1
  20. data/lib/lamby.rb +4 -1
  21. metadata +9 -41
  22. data/.github/workflows/cicd.yml +0 -17
  23. data/.ruby-version +0 -1
  24. data/Dockerfile +0 -7
  25. data/bin/_setup +0 -7
  26. data/bin/_test +0 -8
  27. data/docker-compose.yml +0 -15
  28. data/lib/lamby/sam_helpers.rb +0 -9
  29. data/lib/lamby/tasks.rake +0 -15
  30. data/lib/lamby/templates/alb/Dockerfile +0 -15
  31. data/lib/lamby/templates/alb/Dockerfile-build +0 -18
  32. data/lib/lamby/templates/alb/_build +0 -25
  33. data/lib/lamby/templates/alb/_deploy +0 -31
  34. data/lib/lamby/templates/alb/app.rb +0 -12
  35. data/lib/lamby/templates/alb/deploy +0 -8
  36. data/lib/lamby/templates/alb/docker-compose.yml +0 -19
  37. data/lib/lamby/templates/alb/template.yaml +0 -90
  38. data/lib/lamby/templates/alb.rb +0 -33
  39. data/lib/lamby/templates/http/Dockerfile +0 -15
  40. data/lib/lamby/templates/http/Dockerfile-build +0 -18
  41. data/lib/lamby/templates/http/_build +0 -25
  42. data/lib/lamby/templates/http/_deploy +0 -31
  43. data/lib/lamby/templates/http/app.rb +0 -12
  44. data/lib/lamby/templates/http/deploy +0 -8
  45. data/lib/lamby/templates/http/docker-compose.yml +0 -19
  46. data/lib/lamby/templates/http/template.yaml +0 -48
  47. data/lib/lamby/templates/http.rb +0 -33
  48. data/lib/lamby/templates/rest/Dockerfile +0 -15
  49. data/lib/lamby/templates/rest/Dockerfile-build +0 -18
  50. data/lib/lamby/templates/rest/_build +0 -25
  51. data/lib/lamby/templates/rest/_deploy +0 -31
  52. data/lib/lamby/templates/rest/app.rb +0 -12
  53. data/lib/lamby/templates/rest/deploy +0 -8
  54. data/lib/lamby/templates/rest/docker-compose.yml +0 -19
  55. data/lib/lamby/templates/rest/template.yaml +0 -84
  56. data/lib/lamby/templates/rest.rb +0 -33
  57. data/lib/lamby/templates/shared.rb +0 -17
  58. 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: 3.1.3
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-04-19 00:00:00.000000000 Z
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
- - ".github/workflows/cicd.yml"
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
- - docker-compose.yml
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: '0'
182
+ version: 1.3.1
215
183
  requirements: []
216
184
  rubygems_version: 3.1.2
217
185
  signing_key:
@@ -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
@@ -1,7 +0,0 @@
1
- FROM public.ecr.aws/sam/build-ruby2.7:1.26.0
2
-
3
- # Asset Pipeline
4
- RUN curl -sL https://rpm.nodesource.com/setup_12.x | bash - && \
5
- yum install -y nodejs
6
-
7
- WORKDIR /var/task
data/bin/_setup DELETED
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- echo '== Installing dependencies =='
5
- bundle lock --add-platform x86_64-linux
6
- bundle config set --local path 'vendor/bundle'
7
- bundle install
data/bin/_test DELETED
@@ -1,8 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- export RAILS_ENV="test"
5
-
6
- bundle exec rake test
7
- LAMBY_TEST_DYNAMIC_HANDLER=1 bundle exec rake test
8
- LAMBY_RACK_DEFLATE_ENABLED=1 bundle exec rake test_deflate
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
@@ -1,9 +0,0 @@
1
- module Lamby
2
- module SamHelpers
3
-
4
- def sam_local?
5
- ENV['AWS_SAM_LOCAL'] == 'true'
6
- end
7
-
8
- end
9
- end
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,8 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- export RAILS_ENV=${RAILS_ENV:=production}
5
-
6
- docker-compose run \
7
- APPNAMEHERE \
8
- ./bin/_deploy
@@ -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
@@ -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,8 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- export RAILS_ENV=${RAILS_ENV:=production}
5
-
6
- docker-compose run \
7
- APPNAMEHERE \
8
- ./bin/_deploy
@@ -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
@@ -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