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.
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