aws_pocketknife 0.1.7

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 (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +1 -0
  7. data/CODE_OF_CONDUCT.md +49 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +115 -0
  11. data/Rakefile +22 -0
  12. data/aws_pocketknife.gemspec +40 -0
  13. data/bin/console +14 -0
  14. data/bin/setup +8 -0
  15. data/cert/ca-bundle.crt +3988 -0
  16. data/exe/pocketknife +5 -0
  17. data/lib/aws_pocketknife.rb +88 -0
  18. data/lib/aws_pocketknife/admin/policies/developer_dev_acc.json +10 -0
  19. data/lib/aws_pocketknife/admin/policies/developer_prd_acc.json +15 -0
  20. data/lib/aws_pocketknife/admin/policies/tc_devops.json.erb +207 -0
  21. data/lib/aws_pocketknife/admin/policies/tester_dev_acc.json +176 -0
  22. data/lib/aws_pocketknife/admin/policies/tester_prd_acc.json +176 -0
  23. data/lib/aws_pocketknife/admin/policies/web_front_end.json.erb +59 -0
  24. data/lib/aws_pocketknife/admin/trust_relationships/ec2.json +13 -0
  25. data/lib/aws_pocketknife/asg.rb +56 -0
  26. data/lib/aws_pocketknife/cli/ami.rb +24 -0
  27. data/lib/aws_pocketknife/cli/asg.rb +40 -0
  28. data/lib/aws_pocketknife/cli/eb.rb +49 -0
  29. data/lib/aws_pocketknife/cli/ec2.rb +61 -0
  30. data/lib/aws_pocketknife/cli/elb.rb +20 -0
  31. data/lib/aws_pocketknife/cli/iam.rb +31 -0
  32. data/lib/aws_pocketknife/cli/main.rb +34 -0
  33. data/lib/aws_pocketknife/cli/rds.rb +13 -0
  34. data/lib/aws_pocketknife/cli/rds_snapshot.rb +44 -0
  35. data/lib/aws_pocketknife/cli/route53.rb +56 -0
  36. data/lib/aws_pocketknife/cloudwatch_logs.rb +25 -0
  37. data/lib/aws_pocketknife/common/logging.rb +31 -0
  38. data/lib/aws_pocketknife/common/utils.rb +63 -0
  39. data/lib/aws_pocketknife/ec2.rb +308 -0
  40. data/lib/aws_pocketknife/elastic_beanstalk.rb +62 -0
  41. data/lib/aws_pocketknife/elb.rb +25 -0
  42. data/lib/aws_pocketknife/iam.rb +135 -0
  43. data/lib/aws_pocketknife/rds.rb +84 -0
  44. data/lib/aws_pocketknife/route53.rb +234 -0
  45. data/lib/aws_pocketknife/tasks/asg.rake +18 -0
  46. data/lib/aws_pocketknife/tasks/cloudwatch.rake +12 -0
  47. data/lib/aws_pocketknife/tasks/ec2.rake +57 -0
  48. data/lib/aws_pocketknife/tasks/elastic_beanstalk.rake +25 -0
  49. data/lib/aws_pocketknife/tasks/elb.rake +13 -0
  50. data/lib/aws_pocketknife/tasks/iam.rake +57 -0
  51. data/lib/aws_pocketknife/tasks/route53.rake +64 -0
  52. data/lib/aws_pocketknife/version.rb +3 -0
  53. metadata +284 -0
@@ -0,0 +1,18 @@
1
+ require_relative '../asg'
2
+ require_relative '../cli/asg'
3
+
4
+ asg_cli = AwsPocketknife::Cli::Asg.new
5
+
6
+ namespace :asg do
7
+
8
+ desc 'Describe asg by name'
9
+ task :describe_by_name, [:name] do |t, args|
10
+ asg_cli.desc(args[:name])
11
+ end
12
+
13
+ desc 'List asgs'
14
+ task :list do
15
+ asg_cli.list
16
+ end
17
+
18
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "../cloudwatch_logs"
2
+
3
+ namespace :cloudwatch do
4
+
5
+ namespace :logs do
6
+ desc "Create log group"
7
+ task :create_group, [:name] do |t, args|
8
+ AwsPocketknife::CloudwatchLogs.create_log_group(log_group_name: args[:name])
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,57 @@
1
+ require_relative '../ec2'
2
+ require_relative '../cli/ec2'
3
+ require_relative '../cli/ami'
4
+
5
+ ec2_cli = AwsPocketknife::Cli::Ec2.new
6
+ ami_cli = AwsPocketknife::Cli::Ami.new
7
+
8
+ namespace :ec2 do
9
+
10
+ namespace :ami do
11
+ desc 'share ami'
12
+ task :share, [:image_id, :user_id] do |t, args|
13
+ AwsPocketknife::Ec2.share_ami(image_id: args[:instance_id], user_id: args[:instance_id])
14
+ end
15
+
16
+ desc "clean up old AMIs."
17
+ task :clean, [:ami_name_pattern, :days, :dry_run] do |t, args|
18
+ args.with_defaults(:dry_run => "true")
19
+ ami_name_pattern = args[:ami_name_pattern]
20
+ days = args[:days]
21
+ args[:dry_run].strip.downcase == "true" ? dry_run = true : dry_run = false
22
+ AwsPocketknife::Cli::Ami.options = {:dry_run => dry_run}
23
+ ami_cli.clean ami_name_pattern, days
24
+ end
25
+ end
26
+
27
+ desc 'Stop instance by id'
28
+ task :stop_by_id, [:instance_id] do |t, args|
29
+ ec2_cli.stop(args[:instance_id])
30
+ end
31
+
32
+ desc 'Start instance by id'
33
+ task :start_by_id, [:instance_id] do |t, args|
34
+ ec2_cli.start(args[:instance_id])
35
+ end
36
+
37
+ desc 'Describe instance by id'
38
+ task :find_by_id, [:instance_id] do |t, args|
39
+ ec2_cli.find_by_id(args[:instance_id])
40
+ end
41
+
42
+ desc 'Describe instance by name'
43
+ task :describe_instance_by_name, [:name] do |t, args|
44
+ ec2_cli.find_by_name(args[:name])
45
+ end
46
+
47
+ desc 'Find instances by name'
48
+ task :find_by_name, [:name] do |t, args|
49
+ ec2_cli.find_by_name(args[:name])
50
+ end
51
+
52
+ desc 'Get windows password'
53
+ task :get_windows_password, [:instance_id] do |t, args|
54
+ ec2_cli.get_windows_password(args[:instance_id])
55
+ end
56
+
57
+ end
@@ -0,0 +1,25 @@
1
+ require_relative "../elastic_beanstalk"
2
+
3
+ require_relative '../cli/eb'
4
+
5
+ eb_cli = AwsPocketknife::Cli::Eb.new
6
+
7
+ namespace :eb do
8
+
9
+ desc "describe_environment_resources"
10
+ task :describe_environment, [:environment_name] do |t, args|
11
+ eb_cli.desc(args[:environment_name])
12
+ end
13
+
14
+ desc "list environments"
15
+ task :list_environments do
16
+ eb_cli.list
17
+ end
18
+
19
+ desc "list environment variables for an environment"
20
+ task :list_environment_variables, [:environment_name] do |t, args|
21
+ eb_cli.vars(args[:environment_name])
22
+ end
23
+
24
+ end
25
+
@@ -0,0 +1,13 @@
1
+ require_relative '../elb'
2
+ require_relative '../cli/elb'
3
+
4
+ elb_cli = AwsPocketknife::Cli::Elb.new
5
+
6
+ namespace :elb do
7
+
8
+ desc 'Describe load balancer by name'
9
+ task :describe, [:elb_name] do |t, args|
10
+ elb_cli.desc args[:elb_name]
11
+ end
12
+
13
+ end
@@ -0,0 +1,57 @@
1
+ require_relative "../iam"
2
+ require_relative '../cli/iam'
3
+
4
+ iam_cli = AwsPocketknife::Cli::Iam.new
5
+
6
+ namespace :iam do
7
+
8
+ desc 'List ssl certificates'
9
+ task :list_ssl_certificates do
10
+ iam_cli.list_ssl_certs
11
+ end
12
+
13
+ desc 'Create IAM User'
14
+ task :create_user, [:username] do |_t, args|
15
+ iam_cli.create_user args[:username]
16
+ end
17
+
18
+ desc 'Create IAM Group'
19
+ task :create_group, [:group_name] do |_t, args|
20
+ iam_cli.create_group args[:group_name]
21
+ end
22
+
23
+ desc 'Create IAM Policy from file. You pass list of s3 buckets like so: s1bucket;s2bucket'
24
+ task :create_policy, [:policy_name,:policy_file,:s3_buckets] do |_t, args|
25
+ AwsPocketknife::Iam.create_policy_from_policy_file(policy_name: args[:policy_name], policy_file: args[:policy_file], s3_buckets: args[:s3_buckets])
26
+ end
27
+
28
+ desc 'Attach IAM Policy to Group'
29
+ task :attach_policy_to_group, [:policy_name,:group_name] do |_t, args|
30
+ AwsPocketknife::Iam.attach_policy_to_group(args[:policy_name],args[:group_name])
31
+ end
32
+
33
+ desc 'Add user to Group'
34
+ task :attach_user_to_group, [:username,:group_name] do |_t, args|
35
+ iam_cli.add_user_to_group args[:username], args[:group_name]
36
+ end
37
+
38
+ desc 'Create Role'
39
+ task :create_role, [:role_name,:trust_relationship_file] do |_t, args|
40
+ AwsPocketknife::Iam.create_role(args[:role_name],args[:trust_relationship_file])
41
+ end
42
+
43
+ desc 'Attach policy to role'
44
+ task :attach_policy_to_role, [:role_name,:policy_name] do |_t, args|
45
+ AwsPocketknife::Iam.attach_policy_to_role(args[:role_name],args[:policy_name])
46
+ end
47
+
48
+ desc 'Create Instance Profile'
49
+ task :create_instance_profile, [:instance_profile_name] do |_t, args|
50
+ AwsPocketknife::Iam.create_instance_profile(args[:instance_profile_name])
51
+ end
52
+
53
+ desc 'Add Role to Instance Profile'
54
+ task :add_role_to_instance_profile, [:instance_profile_name,:role_name] do |_t, args|
55
+ AwsPocketknife::Iam.add_role_to_instance_profile(args[:role_name],args[:instance_profile_name])
56
+ end
57
+ end
@@ -0,0 +1,64 @@
1
+ require_relative "../route53"
2
+ require_relative '../cli/route53'
3
+
4
+ route53_cli = AwsPocketknife::Cli::Route53.new
5
+
6
+ namespace :route53 do
7
+
8
+ desc "Describe hosted zone"
9
+ task :describe_hosted_zone, [:hosted_zone] do |t, args|
10
+ route53_cli.describe_hosted_zone(args)
11
+ end
12
+
13
+ desc "Listed hosted zones"
14
+ task :list_hosted_zones do
15
+ route53_cli.list
16
+ end
17
+
18
+ desc "List records for hosted zone"
19
+ task :list_records, [:hosted_zone] do |t, args|
20
+ route53_cli.list_records(args[:hosted_zone])
21
+ end
22
+
23
+ desc "Get record for hosted zone. Record type accepts SOA, A, TXT, NS, CNAME, MX, PTR, SRV, SPF, AAAA"
24
+ task :get_record, [:hosted_zone, :record_name, :record_type] do |t, args|
25
+ record_type = args[:record_type] || 'A'
26
+ record_name = args[:record_name]
27
+ records = AwsPocketknife::Route53.get_record(hosted_zone_name: args[:hosted_zone],
28
+ record_name:record_name,
29
+ record_type: record_type)
30
+ headers = ["Name", "Type", "DNS Name"]
31
+ data = []
32
+ if records.length > 0
33
+ records.each do |record|
34
+ if record.type == 'CNAME'
35
+ data << [record.name, record.type, record.resource_records[0].value]
36
+ else
37
+ data << [record.name, record.type, record.alias_target.dns_name]
38
+ end
39
+ end
40
+ AwsPocketknife::Route53.pretty_table(headers: headers, data: data)
41
+ else
42
+ puts "Record #{record_name} not found in hosted zone #{args[:hosted_zone]}"
43
+ end
44
+ end
45
+
46
+ desc "Update dns record from existing dns entry."
47
+ task :update_record, [:hosted_zone, :record_name, :destiny_record_name, :destiny_hosted_zone, :record_type] do |t, args|
48
+ record_type = args[:record_type] || 'A'
49
+ origin_dns_name = args[:record_name]
50
+ destiny_record_name = args[:destiny_record_name]
51
+ hosted_zone = args[:hosted_zone]
52
+ destiny_hosted_zone = args[:destiny_hosted_zone]
53
+ AwsPocketknife::Route53.update_record(origin_hosted_zone: hosted_zone,
54
+ origin_dns_name: origin_dns_name,
55
+ record_type: record_type,
56
+ destiny_dns_name: destiny_record_name,
57
+ destiny_hosted_zone: destiny_hosted_zone
58
+ )
59
+
60
+ end
61
+
62
+
63
+ end
64
+
@@ -0,0 +1,3 @@
1
+ module AwsPocketknife
2
+ VERSION = "0.1.7"
3
+ end
metadata ADDED
@@ -0,0 +1,284 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aws_pocketknife
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
+ platform: ruby
6
+ authors:
7
+ - Gustavo Soares Souza
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-09-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: retryable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: erubis
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.7.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 2.7.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: pretty_table
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: awesome_print
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.6.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.6.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: recursive-open-struct
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.0.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.0.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: log4r
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.10
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.10
125
+ - !ruby/object:Gem::Dependency
126
+ name: thor
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.19'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.19'
139
+ - !ruby/object:Gem::Dependency
140
+ name: bundler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.11'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.11'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.4'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.4'
167
+ - !ruby/object:Gem::Dependency
168
+ name: debase
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 0.2.2.beta6
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 0.2.2.beta6
181
+ - !ruby/object:Gem::Dependency
182
+ name: webmock
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 1.24.2
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 1.24.2
195
+ description: |-
196
+ Command line tools to make aws administration a little bit easier and quicker than using the aws console. It also helps to script some AWS tasks such as cleaning up
197
+ old AMIs along its snapshots or cleaning up manual RDS snapshots or even creating a manual snapshot for a particular RDS.
198
+
199
+ These commands are also handy if you have multiple aws accounts to manage, since you can't have multiple tabs open for
200
+ different accounts in a web browser. The only way would be to use diffente browsers or open incognito windows.
201
+ email:
202
+ - gustavo.soares@myob.com
203
+ executables:
204
+ - pocketknife
205
+ extensions: []
206
+ extra_rdoc_files: []
207
+ files:
208
+ - ".gitignore"
209
+ - ".rspec"
210
+ - ".ruby-gemset"
211
+ - ".ruby-version"
212
+ - ".travis.yml"
213
+ - CODE_OF_CONDUCT.md
214
+ - Gemfile
215
+ - LICENSE.txt
216
+ - README.md
217
+ - Rakefile
218
+ - aws_pocketknife.gemspec
219
+ - bin/console
220
+ - bin/setup
221
+ - cert/ca-bundle.crt
222
+ - exe/pocketknife
223
+ - lib/aws_pocketknife.rb
224
+ - lib/aws_pocketknife/admin/policies/developer_dev_acc.json
225
+ - lib/aws_pocketknife/admin/policies/developer_prd_acc.json
226
+ - lib/aws_pocketknife/admin/policies/tc_devops.json.erb
227
+ - lib/aws_pocketknife/admin/policies/tester_dev_acc.json
228
+ - lib/aws_pocketknife/admin/policies/tester_prd_acc.json
229
+ - lib/aws_pocketknife/admin/policies/web_front_end.json.erb
230
+ - lib/aws_pocketknife/admin/trust_relationships/ec2.json
231
+ - lib/aws_pocketknife/asg.rb
232
+ - lib/aws_pocketknife/cli/ami.rb
233
+ - lib/aws_pocketknife/cli/asg.rb
234
+ - lib/aws_pocketknife/cli/eb.rb
235
+ - lib/aws_pocketknife/cli/ec2.rb
236
+ - lib/aws_pocketknife/cli/elb.rb
237
+ - lib/aws_pocketknife/cli/iam.rb
238
+ - lib/aws_pocketknife/cli/main.rb
239
+ - lib/aws_pocketknife/cli/rds.rb
240
+ - lib/aws_pocketknife/cli/rds_snapshot.rb
241
+ - lib/aws_pocketknife/cli/route53.rb
242
+ - lib/aws_pocketknife/cloudwatch_logs.rb
243
+ - lib/aws_pocketknife/common/logging.rb
244
+ - lib/aws_pocketknife/common/utils.rb
245
+ - lib/aws_pocketknife/ec2.rb
246
+ - lib/aws_pocketknife/elastic_beanstalk.rb
247
+ - lib/aws_pocketknife/elb.rb
248
+ - lib/aws_pocketknife/iam.rb
249
+ - lib/aws_pocketknife/rds.rb
250
+ - lib/aws_pocketknife/route53.rb
251
+ - lib/aws_pocketknife/tasks/asg.rake
252
+ - lib/aws_pocketknife/tasks/cloudwatch.rake
253
+ - lib/aws_pocketknife/tasks/ec2.rake
254
+ - lib/aws_pocketknife/tasks/elastic_beanstalk.rake
255
+ - lib/aws_pocketknife/tasks/elb.rake
256
+ - lib/aws_pocketknife/tasks/iam.rake
257
+ - lib/aws_pocketknife/tasks/route53.rake
258
+ - lib/aws_pocketknife/version.rb
259
+ homepage: https://github.com/MYOB-Technology/aws_pocketknife
260
+ licenses:
261
+ - MIT
262
+ metadata: {}
263
+ post_install_message:
264
+ rdoc_options: []
265
+ require_paths:
266
+ - lib
267
+ required_ruby_version: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ required_rubygems_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ requirements: []
278
+ rubyforge_project:
279
+ rubygems_version: 2.4.5.1
280
+ signing_key:
281
+ specification_version: 4
282
+ summary: Command line tools to make aws administration a little bit easier and quicker
283
+ than using the aws console.
284
+ test_files: []