lamma 0.2.4 → 0.2.5
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 +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
|
[](https://codeclimate.com/github/ayemos/lamma/coverage)
|
5
5
|
[](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.
|