lamma 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +1 -0
- data/README.md +10 -4
- data/examples/hello/lammda.yml +8 -0
- data/lamma.gemspec +1 -1
- data/lib/lamma/cli.rb +4 -3
- data/lib/lamma/cli/create.rb +1 -1
- data/lib/lamma/cli/deploy.rb +1 -1
- data/lib/lamma/cli/init.rb +11 -6
- data/lib/lamma/cli/rollback.rb +1 -1
- data/lib/lamma/cli/show.rb +1 -1
- data/lib/lamma/code.rb +2 -2
- data/lib/lamma/environment.rb +2 -0
- data/lib/lamma/function.rb +3 -3
- data/lib/lamma/runtime.rb +5 -1
- data/lib/lamma/templates/python3_6/lambda_function.py.erb +13 -0
- data/lib/lamma/templates/python3_6/lamma.yml.erb +8 -0
- data/lib/lamma/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c924bb615fcc7c4b5f4baa03624dddf90cb7ab4b6836ac0921658f2477b9e258
|
4
|
+
data.tar.gz: 7b645cecaf5342501c9b8b256861e156f6f1231b38da0b0c0f906dcb6600ce18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74b3b5bd632f8fd27a6b7d6c84779952476df001b3d47b26c6a2c3e55a03ff72f564c71c1283001d3ab7a15884c15d9115a6d06dfc71452734b41df434f9914f
|
7
|
+
data.tar.gz: 2e4d4b8e122a32eca8e92856d42473b2050e09a3c4d204c7d03e211932f0de856cb5b3463c29ee388241beec9d63fb1f8e852ae37e70f937f0d3460c88045bd7
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[![Test Coverage](https://codeclimate.com/github/ayemos/lamma/badges/coverage.svg)](https://codeclimate.com/github/ayemos/lamma/coverage)
|
5
5
|
[![Issue Count](https://codeclimate.com/github/ayemos/lamma/badges/issue_count.svg)](https://codeclimate.com/github/ayemos/lamma)
|
6
6
|
|
7
|
-
It will help [
|
7
|
+
It will help [AWS Lambda](http://aws.amazon.com/lambda/) developers to,
|
8
8
|
- Create new function,
|
9
9
|
- Deploy current code,
|
10
10
|
- and to Rollback last deployment.
|
@@ -35,15 +35,21 @@ export AWS_ACCESS_KEY_ID = [YOUR_AWS_ACCESS_KEY_ID]
|
|
35
35
|
export AWS_SECRET_ACCESS_KEY = [YOUR_AWS_SECRET_ACCESS_KEY]
|
36
36
|
```
|
37
37
|
|
38
|
+
## Examples
|
39
|
+
see `./examples`
|
40
|
+
|
38
41
|
# Todo
|
39
|
-
- [
|
42
|
+
- [x] Support Automatic IAM Role initialization
|
40
43
|
- [ ] Support dead letter queue configuration
|
41
|
-
- [
|
42
|
-
- [
|
44
|
+
- [x] Support environment variables
|
45
|
+
- [x] Support KMS encripted variable configuration
|
43
46
|
- [ ] Support VPC configuration
|
44
47
|
- [ ] Prepare init templates
|
45
48
|
- [x] python2.7
|
49
|
+
- [ ] python3
|
46
50
|
- [ ] node4.3
|
47
51
|
- [ ] node4.3 edge
|
48
52
|
- [ ] C#
|
49
53
|
- [ ] Java8
|
54
|
+
- [ ] Support permission setting (add another command ?)
|
55
|
+
- [ ] Support python3 runtime
|
data/examples/hello/lammda.yml
CHANGED
data/lamma.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "lamma"
|
8
8
|
spec.version = Lamma::VERSION
|
9
9
|
spec.authors = ["Yuichiro Someya"]
|
10
|
-
spec.email = ["ayemos.
|
10
|
+
spec.email = ["me@ayemos.me"]
|
11
11
|
|
12
12
|
spec.summary = %q{Deploy toolset for Amazon Lambda functions.}
|
13
13
|
spec.description = %q{Deploy toolset for Amazon Lambda functions..}
|
data/lib/lamma/cli.rb
CHANGED
@@ -20,7 +20,7 @@ module Lamma
|
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'deploy', 'Upload local lambda function to AWS and deploy.'
|
23
|
-
method_option :
|
23
|
+
method_option :conf_path, aliases: '-c', type: :string
|
24
24
|
method_option :alias, aliases: '-a', type: :string
|
25
25
|
method_option :message, aliases: '-m', type: :string
|
26
26
|
def deploy
|
@@ -29,7 +29,7 @@ module Lamma
|
|
29
29
|
end
|
30
30
|
|
31
31
|
desc 'rollback', 'Rollback last deploy.'
|
32
|
-
method_option :
|
32
|
+
method_option :conf_path, aliases: '-c', type: :string
|
33
33
|
method_option :alias, aliases: '-a', type: :string
|
34
34
|
def rollback
|
35
35
|
require 'lamma/cli/rollback'
|
@@ -37,7 +37,7 @@ module Lamma
|
|
37
37
|
end
|
38
38
|
|
39
39
|
desc 'create', 'Create new remote function.'
|
40
|
-
method_option :
|
40
|
+
method_option :conf_path, aliases: '-c', type: :string
|
41
41
|
def create
|
42
42
|
require 'lamma/cli/create'
|
43
43
|
Create.new(options, self).run
|
@@ -46,6 +46,7 @@ module Lamma
|
|
46
46
|
desc 'init FUNCTION_NAME', 'Initialize local function'
|
47
47
|
method_option :runtime, aliases: '-r', type: :string, required: true
|
48
48
|
method_option :role_arn, aliases: %w(--role-arn -R), type: :string
|
49
|
+
method_option :skip_git, aliases: %w(--skip-git -G), type: :boolean
|
49
50
|
def init(function_name)
|
50
51
|
require 'lamma/cli/init'
|
51
52
|
Init.new(options, function_name, self).run
|
data/lib/lamma/cli/create.rb
CHANGED
data/lib/lamma/cli/deploy.rb
CHANGED
@@ -14,7 +14,7 @@ module Lamma
|
|
14
14
|
def initialize(options, thor)
|
15
15
|
@options = options
|
16
16
|
@thor = thor
|
17
|
-
@conf_path = search_conf_path(options['
|
17
|
+
@conf_path = search_conf_path(options['conf_path'] || Lamma::DEFAULT_CONF_PATH)
|
18
18
|
end
|
19
19
|
|
20
20
|
def run
|
data/lib/lamma/cli/init.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'fileutils'
|
1
2
|
require 'aws-sdk'
|
2
3
|
require 'uri'
|
3
4
|
require 'json'
|
@@ -43,10 +44,12 @@ module Lamma
|
|
43
44
|
|
44
45
|
def run
|
45
46
|
if Dir.exist?(target)
|
46
|
-
|
47
|
+
Lamma.logger.fatal "Directory '#{target}' already exists."
|
48
|
+
exit(1)
|
47
49
|
end
|
48
50
|
|
49
51
|
tpath = File.join(File.dirname(__FILE__), '..', 'templates', runtime.to_dirname)
|
52
|
+
p tpath
|
50
53
|
templates = Dir.glob(File.join(tpath, '**/*.erb')).map do |path|
|
51
54
|
tar_file = path[tpath.length..path.length - 5] # /foo/bar/templates/RUNTIME/baz/lambda_function.py.erb => /baz/lambda_function.py
|
52
55
|
|
@@ -54,7 +57,7 @@ module Lamma
|
|
54
57
|
end.to_h
|
55
58
|
|
56
59
|
unless Dir.exist?(target)
|
57
|
-
FileUtils.makedirs(target)
|
60
|
+
::FileUtils.makedirs(target)
|
58
61
|
end
|
59
62
|
|
60
63
|
role_arn = options['role_arn']
|
@@ -82,10 +85,12 @@ module Lamma
|
|
82
85
|
end
|
83
86
|
|
84
87
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
88
|
+
unless options['skip_git']
|
89
|
+
p options
|
90
|
+
Lamma.logger.info "Initializing git repo in #{target}"
|
91
|
+
Dir.chdir(target) do
|
92
|
+
`git init`
|
93
|
+
end
|
89
94
|
end
|
90
95
|
end
|
91
96
|
|
data/lib/lamma/cli/rollback.rb
CHANGED
@@ -14,7 +14,7 @@ module Lamma
|
|
14
14
|
def initialize(options, thor)
|
15
15
|
@options = options
|
16
16
|
@thor = thor
|
17
|
-
@conf_path = search_conf_path(options['
|
17
|
+
@conf_path = search_conf_path(options['conf_path'] || Lamma::DEFAULT_CONF_PATH)
|
18
18
|
end
|
19
19
|
|
20
20
|
def run
|
data/lib/lamma/cli/show.rb
CHANGED
data/lib/lamma/code.rb
CHANGED
@@ -69,10 +69,10 @@ module Lamma
|
|
69
69
|
if @prebuild
|
70
70
|
Lamma.logger.info 'Running prebuild script...'
|
71
71
|
raise unless system(@prebuild)
|
72
|
-
elsif
|
72
|
+
elsif [Lamma::Runtime::PYTHON_27, Lamma::Runtime::PYTHON_36].include?(@function.runtime.type) \
|
73
73
|
&& File.exist?(File.join(@source_path, 'requirements.txt'))
|
74
74
|
raise unless system("pip", "install", "-r", "requirements.txt", "-t", ".")
|
75
|
-
elsif [Lamma::Runtime::EDGE_NODE_43, Lamma::Runtime::NODE_43].include?(@function.runtime) \
|
75
|
+
elsif [Lamma::Runtime::EDGE_NODE_43, Lamma::Runtime::NODE_43].include?(@function.runtime.type) \
|
76
76
|
&& File.exist?(File.join(@source_path, 'package.json'))
|
77
77
|
raise unless system("npm", "install", "--production")
|
78
78
|
end
|
data/lib/lamma/environment.rb
CHANGED
data/lib/lamma/function.rb
CHANGED
@@ -152,11 +152,11 @@ module Lamma
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def dead_letter_config
|
155
|
-
DeadLetterConfig.new(@conf.fetch('dead_letter_config', {}))
|
155
|
+
@dead_letter_config ||= DeadLetterConfig.new(@conf.fetch('dead_letter_config', {}))
|
156
156
|
end
|
157
157
|
|
158
158
|
def environment
|
159
|
-
Environment.new(@conf.fetch('environment', {}))
|
159
|
+
@environment ||= Environment.new(@conf.fetch('environment', {}))
|
160
160
|
end
|
161
161
|
|
162
162
|
def vpc_config
|
@@ -173,7 +173,7 @@ module Lamma
|
|
173
173
|
'index.handler'
|
174
174
|
when Runtime::EDGE_NODE_43
|
175
175
|
'index.handler'
|
176
|
-
when Runtime::PYTHON_27
|
176
|
+
when Runtime::PYTHON_27, Runtime::PYTHON_36
|
177
177
|
'lambda_function.lambda_handler'
|
178
178
|
end
|
179
179
|
end
|
data/lib/lamma/runtime.rb
CHANGED
@@ -11,6 +11,7 @@ module Lamma
|
|
11
11
|
NODE_43 = 30
|
12
12
|
EDGE_NODE_43 = 31
|
13
13
|
PYTHON_27 = 40
|
14
|
+
PYTHON_36 = 41
|
14
15
|
|
15
16
|
def initialize(str)
|
16
17
|
@type =
|
@@ -25,6 +26,8 @@ module Lamma
|
|
25
26
|
::Lamma::Runtime::EDGE_NODE_43
|
26
27
|
when /^python([-_\.\s]*2(\.?7)?)?$/i
|
27
28
|
::Lamma::Runtime::PYTHON_27
|
29
|
+
when /^python([-_\.\s]*3(\.?6)?)?$/i
|
30
|
+
::Lamma::Runtime::PYTHON_36
|
28
31
|
else
|
29
32
|
raise ArgumentError.new("invalid runtime. #{str}")
|
30
33
|
end
|
@@ -35,7 +38,8 @@ module Lamma
|
|
35
38
|
JAVA_8 => 'java8',
|
36
39
|
NODE_43 => 'nodejs4.3',
|
37
40
|
EDGE_NODE_43 => 'nodejs4.3-edge',
|
38
|
-
PYTHON_27 => 'python2.7'
|
41
|
+
PYTHON_27 => 'python2.7',
|
42
|
+
PYTHON_36 => 'python3.6',
|
39
43
|
}
|
40
44
|
|
41
45
|
def to_s
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import json
|
2
|
+
|
3
|
+
|
4
|
+
print('Loading function')
|
5
|
+
|
6
|
+
|
7
|
+
def lambda_handler(event, context):
|
8
|
+
#print("Received event: " + json.dumps(event, indent=2))
|
9
|
+
print("value1 = " + event['key1'])
|
10
|
+
print("value2 = " + event['key2'])
|
11
|
+
print("value3 = " + event['key3'])
|
12
|
+
return event['key1'] # Echo back the first key value
|
13
|
+
#raise Exception('Something went wrong')
|
data/lib/lamma/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lamma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuichiro Someya
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
version: '3.0'
|
125
125
|
description: Deploy toolset for Amazon Lambda functions..
|
126
126
|
email:
|
127
|
-
- ayemos.
|
127
|
+
- me@ayemos.me
|
128
128
|
executables:
|
129
129
|
- lamma
|
130
130
|
extensions: []
|
@@ -163,6 +163,8 @@ files:
|
|
163
163
|
- lib/lamma/shared_helpers.rb
|
164
164
|
- lib/lamma/templates/python2_7/lambda_function.py.erb
|
165
165
|
- lib/lamma/templates/python2_7/lamma.yml.erb
|
166
|
+
- lib/lamma/templates/python3_6/lambda_function.py.erb
|
167
|
+
- lib/lamma/templates/python3_6/lamma.yml.erb
|
166
168
|
- lib/lamma/version.rb
|
167
169
|
- lib/lamma/vpc_config.rb
|
168
170
|
homepage: https://github.com/ayemos/Lamma
|
@@ -186,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
188
|
version: '0'
|
187
189
|
requirements: []
|
188
190
|
rubyforge_project:
|
189
|
-
rubygems_version: 2.
|
191
|
+
rubygems_version: 2.7.1
|
190
192
|
signing_key:
|
191
193
|
specification_version: 4
|
192
194
|
summary: Deploy toolset for Amazon Lambda functions.
|