awful 0.0.148 → 0.0.149
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 +4 -4
- data/bin/kms +7 -0
- data/lib/awful/kms.rb +96 -0
- data/lib/awful/s3.rb +17 -0
- data/lib/awful/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e57d00ae8d82a5f9567358f877adfe11f42c2b2
|
4
|
+
data.tar.gz: 709fade131b43199128f2f0983a46860344bfcce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93972b5343ab4e2ef2201f6b0ffa1b78627ca0f139d532e7fa4a0646299e003f30a127deb340d305c3c2525769c1d5ef07502d36475ccc1b9022597c024be186
|
7
|
+
data.tar.gz: 73fdb3e8539f4c76ab8e3b926da72bad42a50f94a055286f63bcb401864bbc53994cad0ab03c6df55f4b55916061499ba31d7ffddee30a03465ef40d5309a111
|
data/bin/kms
ADDED
data/lib/awful/kms.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
module Awful
|
2
|
+
module Short
|
3
|
+
def kms(*args)
|
4
|
+
Awful::Kms.new.invoke(*args)
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
class Kms < Cli
|
9
|
+
COLORS = {
|
10
|
+
Enabled: :green,
|
11
|
+
PendingDeletion: :red,
|
12
|
+
}
|
13
|
+
|
14
|
+
no_commands do
|
15
|
+
def kms
|
16
|
+
@_kms ||= Aws::KMS::Client.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def color(string)
|
20
|
+
set_color(string, COLORS.fetch(string.to_sym, :yellow))
|
21
|
+
end
|
22
|
+
|
23
|
+
def paginate(thing)
|
24
|
+
next_marker = nil
|
25
|
+
things = []
|
26
|
+
loop do
|
27
|
+
response = yield(next_marker)
|
28
|
+
things += response.send(thing)
|
29
|
+
next_marker = response.next_marker
|
30
|
+
break unless next_marker
|
31
|
+
end
|
32
|
+
things
|
33
|
+
end
|
34
|
+
|
35
|
+
def aliases
|
36
|
+
paginate(:aliases) do |marker|
|
37
|
+
kms.list_aliases(marker: marker)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def aliases_hash
|
42
|
+
@_aliases_hash ||= aliases.each_with_object({}) do |a, h|
|
43
|
+
h[a.target_key_id] = a.alias_name.gsub(/^alias\//, '')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
## return target id for alias
|
48
|
+
def alias_by_name(name)
|
49
|
+
aliases.find do |a|
|
50
|
+
a.alias_name == "alias/#{name}"
|
51
|
+
end.target_key_id
|
52
|
+
end
|
53
|
+
|
54
|
+
def is_uuid?(id)
|
55
|
+
id.match(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i)
|
56
|
+
end
|
57
|
+
|
58
|
+
def id_or_alias(id)
|
59
|
+
is_uuid?(id) ? id : alias_by_name(id)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
desc 'ls', 'list keys'
|
64
|
+
method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing'
|
65
|
+
def ls
|
66
|
+
paginate(:keys) do |marker|
|
67
|
+
kms.list_keys(marker: marker)
|
68
|
+
end.output do |keys|
|
69
|
+
if options[:long]
|
70
|
+
print_table keys.map { |k|
|
71
|
+
key = kms.describe_key(key_id: k.key_id).key_metadata
|
72
|
+
[ aliases_hash.fetch(k.key_id, '-'), k.key_id, color(key.key_state), key.creation_date ]
|
73
|
+
}.sort
|
74
|
+
else
|
75
|
+
puts keys.map(&:key_id)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
desc 'get ID', 'describe KMS key with ID'
|
81
|
+
def get(id)
|
82
|
+
kms.describe_key(key_id: id_or_alias(id)).key_metadata.output do |key|
|
83
|
+
puts YAML.dump(stringify_keys(key.to_hash))
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
desc 'policy ID', 'get key policy'
|
88
|
+
method_option :name, aliases: '-n', type: :string, default: :default, desc: 'policy name'
|
89
|
+
def policy(id)
|
90
|
+
kms.get_key_policy(key_id: id_or_alias(id), policy_name: options[:name]).policy.output do |policy|
|
91
|
+
puts policy
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
data/lib/awful/s3.rb
CHANGED
@@ -102,12 +102,29 @@ module Awful
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
## deprecated in favour of put below
|
105
106
|
desc 'upload FILE BUCKET/OBJECT', 'upload FILE to given object'
|
106
107
|
def upload(file, s3path)
|
107
108
|
bucket, key = s3path.split('/', 2)
|
108
109
|
s3_resource.bucket(bucket).object(key).upload_file(file)
|
109
110
|
end
|
110
111
|
|
112
|
+
## this is the new version of upload
|
113
|
+
desc 'put BUCKET/OBJECT [FILE]', 'put object in bucket from file/stdin/string'
|
114
|
+
method_option :string, aliases: '-s', type: :string, default: nil, desc: 'send string instead of reading a file'
|
115
|
+
method_option :kms, aliases: '-k', type: :string, default: nil, desc: 'KMS key ID for encryption'
|
116
|
+
def put(s3path, filename = nil)
|
117
|
+
bucket, key = s3path.split('/', 2)
|
118
|
+
body = options.fetch('string', file_or_stdin(filename))
|
119
|
+
s3.put_object(
|
120
|
+
bucket: bucket,
|
121
|
+
key: key,
|
122
|
+
body: body,
|
123
|
+
server_side_encryption: options[:kms] ? 'aws:kms' : nil,
|
124
|
+
ssekms_key_id: options[:kms],
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
111
128
|
desc 'remove_bucket NAME', 'delete a bucket, which must be empty'
|
112
129
|
def remove_bucket(name)
|
113
130
|
if yes? "Really delete bucket #{name}?", :yellow
|
data/lib/awful/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awful
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.149
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ric Lister
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,6 +102,7 @@ executables:
|
|
102
102
|
- elasticache
|
103
103
|
- elb
|
104
104
|
- iam
|
105
|
+
- kms
|
105
106
|
- lambda
|
106
107
|
- lc
|
107
108
|
- r53
|
@@ -143,6 +144,7 @@ files:
|
|
143
144
|
- bin/elasticache
|
144
145
|
- bin/elb
|
145
146
|
- bin/iam
|
147
|
+
- bin/kms
|
146
148
|
- bin/lambda
|
147
149
|
- bin/lc
|
148
150
|
- bin/r53
|
@@ -182,6 +184,7 @@ files:
|
|
182
184
|
- lib/awful/elasticache.rb
|
183
185
|
- lib/awful/elb.rb
|
184
186
|
- lib/awful/iam.rb
|
187
|
+
- lib/awful/kms.rb
|
185
188
|
- lib/awful/lambda.rb
|
186
189
|
- lib/awful/lambda_events.rb
|
187
190
|
- lib/awful/launch_config.rb
|