sumomo 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af1b2093782a8048484a483a3df1f032ffe2e975
4
- data.tar.gz: 554b97c4ed4fc116fc5923937433e0266e8db3d5
3
+ metadata.gz: eedd627e371d22547e9f4a25f5eb7f913116a391
4
+ data.tar.gz: 3ed9a3f02775ede22c5072ea0b1f9136e9242489
5
5
  SHA512:
6
- metadata.gz: ba55671ca59b064cfae0773e09d9093d23bb9fbb30959aeb565b47e790d1af763b3e519ed5ec548eb7f38c3321e4bee39d4d7caa162761cd681334f73a35e676
7
- data.tar.gz: 8b95431d9b3e5438c5e5b81675abd319b5bac7d22bde8307ef6a74388ad2400cd523460699cd4e131862f23f1017c78d464d8b39f6dadd014dca8e2530ff2f4e
6
+ metadata.gz: 8a542867a471555b413c97eda75e6bf42b3d44d4b763f682982150de9b8beccffaee828930df0ada01958f70cf0f47e0e7ff5d31a93298cd9c8037fa684461c1
7
+ data.tar.gz: f7d7a7e77372122f0a97cef34e99bee744a6159caf8f0f675793819f2c3a74f93f39265483f377996e04708d96dacfe211c05998a44ab51dedc49d1fbb6e8871
data/lib/sumomo.rb CHANGED
@@ -86,8 +86,6 @@ module Sumomo
86
86
  Tags [{"Key" => "Name", "Value" => "dummyfordeploy#{dummy_number}"}]
87
87
  end
88
88
 
89
- make_exec_role
90
-
91
89
  instance_eval(&block)
92
90
 
93
91
  hidden_values = @hidden_values
data/lib/sumomo/api.rb CHANGED
@@ -72,7 +72,7 @@ module Sumomo
72
72
  end
73
73
  end
74
74
 
75
- def make_api(domain_name, name:, script:nil, dns:nil, cert:nil, &block)
75
+ def make_api(domain_name, name:, script:nil, dns:nil, cert:nil, with_statements:[], &block)
76
76
 
77
77
  api = make "AWS::ApiGateway::RestApi", name: name do
78
78
  Name name
@@ -95,7 +95,7 @@ module Sumomo
95
95
 
96
96
  files += [ {name:"index.js", code:script} ]
97
97
 
98
- fun = make_lambda(name: "#{name}Lambda#{@version_number}", files:files)
98
+ fun = make_lambda(name: "#{name}Lambda#{@version_number}", files:files, with_statements:with_statements)
99
99
 
100
100
  resource = make "AWS::ApiGateway::Resource", name: "#{name}Resource" do
101
101
  ParentId api.RootResourceId
data/lib/sumomo/stack.rb CHANGED
@@ -28,7 +28,7 @@ module Sumomo
28
28
  runtime: "nodejs4.3",
29
29
  memory_size: 128,
30
30
  timeout: 30,
31
- role: nil)
31
+ with_statements: [])
32
32
 
33
33
  name ||= make_default_resource_name("Lambda")
34
34
 
@@ -47,6 +47,8 @@ module Sumomo
47
47
 
48
48
  @store.set_raw(function_key, stringio.string)
49
49
 
50
+ stack = self
51
+
50
52
  code_location = {"S3Bucket": @bucket_name, "S3Key": function_key}
51
53
  fun = make "AWS::Lambda::Function", name: name do
52
54
  Code code_location
@@ -55,7 +57,7 @@ module Sumomo
55
57
  Handler handler
56
58
  Runtime runtime
57
59
  Timeout timeout
58
- Role role || exec_role.Arn
60
+ Role stack.exec_role(with_statements: with_statements).Arn
59
61
  end
60
62
 
61
63
  log_group = make "AWS::Logs::LogGroup", name: "#{name}LogGroup" do
@@ -114,8 +116,17 @@ module Sumomo
114
116
  end
115
117
  end
116
118
 
117
- def make_exec_role
118
- if @exec_role == nil
119
+ def exec_role(with_statements: [])
120
+
121
+ if @exec_roles == nil
122
+ @exec_roles = {}
123
+ end
124
+
125
+ statement_key = JSON.parse(with_statements.to_json)
126
+
127
+ if !@exec_roles.has_key?(statement_key)
128
+ name = make_default_resource_name("LambdaExecRole")
129
+
119
130
  role_policy_doc = {
120
131
  "Version" => "2012-10-17",
121
132
  "Statement" => [{
@@ -124,52 +135,58 @@ module Sumomo
124
135
  "Action" => ["sts:AssumeRole"]
125
136
  }]
126
137
  }
138
+
127
139
  bucket_name = @bucket_name
128
- @exec_role = make "AWS::IAM::Role", name: "LambdaFunctionExecutionRole" do
140
+
141
+ statement_list = [
142
+ {
143
+ "Effect" => "Allow",
144
+ "Action" => ["logs:CreateLogStream","logs:PutLogEvents"],
145
+ "Resource" => "arn:aws:logs:*:*:*"
146
+ },
147
+ {
148
+ "Effect" => "Allow",
149
+ "Action" => ["cloudformation:DescribeStacks", "ec2:Describe*", ],
150
+ "Resource" => "*"
151
+ },
152
+ {
153
+ "Effect" => "Allow",
154
+ "Action" => ["s3:DeleteObject", "s3:GetObject", "s3:PutObject"],
155
+ "Resource" => "arn:aws:s3:::#{bucket_name}/*"
156
+ },
157
+ {
158
+ "Effect" => "Allow",
159
+ "Action" => ["cloudfront:CreateCloudFrontOriginAccessIdentity", "cloudfront:DeleteCloudFrontOriginAccessIdentity"],
160
+ "Resource" => "*"
161
+ },
162
+ {
163
+ "Effect" => "Allow",
164
+ "Action" => ["apigateway:*", "cloudfront:UpdateDistribution"],
165
+ "Resource" => "*"
166
+ },
167
+ {
168
+ "Effect" => "Allow",
169
+ "Action" => ["acm:RequestCertificate", "acm:DeleteCertificate", "acm:DescribeCertificate"],
170
+ "Resource" => "*"
171
+ }] + with_statements
172
+
173
+ @exec_roles[statement_key] = make "AWS::IAM::Role", name: name do
129
174
  AssumeRolePolicyDocument role_policy_doc
130
175
  Path "/"
131
176
  Policies [
132
177
  {
133
- "PolicyName" => "lambdapolicy",
178
+ "PolicyName" => name,
134
179
  "PolicyDocument" => {
135
180
  "Version" => "2012-10-17",
136
- "Statement" => [{
137
- "Effect" => "Allow",
138
- "Action" => ["logs:CreateLogStream","logs:PutLogEvents"],
139
- "Resource" => "arn:aws:logs:*:*:*"
140
- },
141
- {
142
- "Effect" => "Allow",
143
- "Action" => ["cloudformation:DescribeStacks", "ec2:Describe*", ],
144
- "Resource" => "*"
145
- },
146
- {
147
- "Effect" => "Allow",
148
- "Action" => ["s3:DeleteObject", "s3:GetObject", "s3:PutObject"],
149
- "Resource" => "arn:aws:s3:::#{bucket_name}/*"
150
- },
151
- {
152
- "Effect" => "Allow",
153
- "Action" => ["cloudfront:CreateCloudFrontOriginAccessIdentity", "cloudfront:DeleteCloudFrontOriginAccessIdentity"],
154
- "Resource" => "*"
155
- },
156
- {
157
- "Effect" => "Allow",
158
- "Action" => ["apigateway:*", "cloudfront:UpdateDistribution"],
159
- "Resource" => "*"
160
- },
161
- {
162
- "Effect" => "Allow",
163
- "Action" => ["acm:RequestCertificate", "acm:DeleteCertificate", "acm:DescribeCertificate"],
164
- "Resource" => "*"
165
- }]
181
+ "Statement" => statement_list
166
182
  }
167
183
  }
168
184
  ]
169
185
  end
170
186
  end
171
- @exec_role
172
- end
173
187
 
188
+ @exec_roles[statement_key]
189
+
190
+ end
174
191
  end
175
192
  end
@@ -1,3 +1,3 @@
1
1
  module Sumomo
2
- VERSION = "0.7.1"
2
+ VERSION = "0.7.2"
3
3
  end
data/sumomo.gemspec CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
32
32
 
33
33
  spec.add_dependency "momo", "0.4.1"
34
34
  spec.add_dependency "s3cabinet"
35
- spec.add_dependency "aws-sdk"
35
+ spec.add_dependency "aws-sdk", "2.10.9"
36
36
  spec.add_dependency "rubyzip"
37
37
  spec.add_dependency "activesupport"
38
38
  spec.add_dependency "hashie"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sumomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Siaw
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-18 00:00:00.000000000 Z
11
+ date: 2018-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: aws-sdk
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 2.10.9
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 2.10.9
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubyzip
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -2558,7 +2558,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2558
2558
  version: '0'
2559
2559
  requirements: []
2560
2560
  rubyforge_project:
2561
- rubygems_version: 2.6.14
2561
+ rubygems_version: 2.6.11
2562
2562
  signing_key:
2563
2563
  specification_version: 4
2564
2564
  summary: An advanced infrastructure description language for AWS