param_store 0.0.1 → 1.0.0

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
  SHA256:
3
- metadata.gz: 333fc97381cc05055d9111ff26983d53d34fe14964c3498c21b0c4d182dc64e3
4
- data.tar.gz: 3d08af6a980db816dda1149254674332f3fd7a0cf050924542377872b31688ea
3
+ metadata.gz: 6a193054830d20294dc6f7beac7466aefd0dc0f34371ddcf97542277e5bcc76c
4
+ data.tar.gz: 97afce05344af92e41b85d673c95d718f1ca8bfa3e2793f8d047bdfa718dad1e
5
5
  SHA512:
6
- metadata.gz: d548fbcd4dbe959756ed0721e3d9c7b64159fea2dcf30b4fe1c779770fe11d2f36bd0a1071353aeaeba547e29428ae33c7f86a7b25c91b42e85c00b1793207c4
7
- data.tar.gz: '080a2b1a10b421e327474adb36ea24f49ed60e17209eb3883c3894e9f0082677f84320ac978e55826a73a329b5314a61960b1dd184c826cfb2de18ae93d4c95b'
6
+ metadata.gz: c92d7d8b694ec738a2ba1e34d4f0366ceb2e2180e6332afaec9aef022899fd54e4610abe845130209bc85cf4a982e7598954bda98cc616846b9f2d6f6580ae7e
7
+ data.tar.gz: ce6bbe962abbf9e76ca08e7f268b763b25e0b7ef4e98c8b4df83c0ff33604e72702af33b56967e7110ec35cb6b6d91d0be73b49475d2c06167ed39504635ff76
data/Gemfile CHANGED
@@ -6,6 +6,9 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
  gemspec
7
7
 
8
8
  group :development, :test do
9
+ gem 'aws-sdk-secretsmanager', '~> 1'
10
+ gem 'aws-sdk-ssm', '~> 1'
11
+ gem 'ejson_wrapper', '~> 0.3.1'
9
12
  gem 'pry-byebug'
10
13
  end
11
14
 
@@ -13,4 +16,4 @@ group :test do
13
16
  gem 'rspec', '~> 3.0'
14
17
  gem 'rspec_junit_formatter'
15
18
  gem 'stub_env'
16
- end
19
+ end
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- param_store (0.0.1)
5
- aws-sdk-ssm (~> 1)
4
+ param_store (1.0.0)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
@@ -14,6 +13,12 @@ GEM
14
13
  aws-partitions (~> 1.0)
15
14
  aws-sigv4 (~> 1.0)
16
15
  jmespath (~> 1.0)
16
+ aws-sdk-kms (1.13.0)
17
+ aws-sdk-core (~> 3, >= 3.39.0)
18
+ aws-sigv4 (~> 1.0)
19
+ aws-sdk-secretsmanager (1.20.0)
20
+ aws-sdk-core (~> 3, >= 3.39.0)
21
+ aws-sigv4 (~> 1.0)
17
22
  aws-sdk-ssm (1.34.0)
18
23
  aws-sdk-core (~> 3, >= 3.39.0)
19
24
  aws-sigv4 (~> 1.0)
@@ -21,6 +26,10 @@ GEM
21
26
  byebug (10.0.2)
22
27
  coderay (1.1.2)
23
28
  diff-lcs (1.3)
29
+ ejson (1.2.1)
30
+ ejson_wrapper (0.3.1)
31
+ aws-sdk-kms
32
+ ejson
24
33
  jmespath (1.4.0)
25
34
  method_source (0.9.2)
26
35
  pry (0.12.2)
@@ -52,7 +61,10 @@ PLATFORMS
52
61
  ruby
53
62
 
54
63
  DEPENDENCIES
64
+ aws-sdk-secretsmanager (~> 1)
65
+ aws-sdk-ssm (~> 1)
55
66
  bundler (~> 1.16)
67
+ ejson_wrapper (~> 0.3.1)
56
68
  param_store!
57
69
  pry-byebug
58
70
  rake (~> 10.0)
@@ -61,4 +73,4 @@ DEPENDENCIES
61
73
  stub_env
62
74
 
63
75
  BUNDLED WITH
64
- 1.17.2
76
+ 1.17.3
data/README.md CHANGED
@@ -2,10 +2,9 @@
2
2
 
3
3
  # ParamStore
4
4
 
5
- This gem goal is to <strike>DRY some code I have been copying around for a while</strike> make easy switching in between ENV and [AWS Parameter Store (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html) for retrieving parameters.
6
-
7
- This gem is not a replacement for [dotenv](https://github.com/bkeepers/dotenv). I still use and recommend it in development, in case it is "safe" to save your keys in `.env` files. Otherwise, you could also use AWS Parameter Store for development.
5
+ This gem goal is to <strike>DRY some code I have been copying around for a while</strike> make easy switching in between ENV, [AWS Parameter Store (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html), [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) and [EJSON](https://github.com/Shopify/ejson) for retrieving parameters.
8
6
 
7
+ This gem is not a replacement for [dotenv](https://github.com/bkeepers/dotenv). I still use and recommend it in development, in case it is "safe" to save your keys in `.env` files.
9
8
 
10
9
  ## Installation
11
10
 
@@ -17,46 +16,79 @@ gem 'param_store'
17
16
 
18
17
  ## Usage
19
18
 
20
- For switching in between ENV and SSM, you need you set which adapter you want to use.
19
+ ### Configuring adapters
20
+
21
+ Available adapters: `:env`, `:aws_ssm`, `:aws_secrets_manager` and `:ejson_wrapper`.
21
22
 
22
23
  ```ruby
23
- # read from SSM
24
- # i.e. config/environments/production.rb
25
- ParamStore.adapter = :aws_ssm
26
- # default path for SSM Hierarchies
27
- # see https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-organize.html
28
- ParamStore.path = '/Environment/Type of computer/Application/'
24
+ ParamStore.adapter = adapter
25
+ ```
29
26
 
30
- # read from ENV
31
- # i.e. config/environments/[development, test].rb
32
- ParamStore.adapter = :env
27
+ ### Retrieving parameters
28
+
29
+ ```ruby
30
+ # ParamStore.fetch is similar to Hash#fetch,
31
+ # If the key is not found and there's no default given, it will raise a `KeyError`
32
+ ParamStore.fetch('name')
33
+ ParamStore.fetch('name', 'default value')
34
+ ParamStore.fetch('name') { 'default value' }
33
35
  ```
34
36
 
35
- For retrieving parameters:
37
+ ### Copying from any adapter to ENV
36
38
 
37
39
  ```ruby
38
- # fetch is similar to Hash#fetch,
39
- # if the key is not found and there's no default defined, it raises an error
40
- ParamStore.fetch('my_secret_key')
40
+ ParamStore.copy_to_env('name1', 'name2', 'name3')
41
+
42
+ ENV['name1'] # => value for name1
43
+ ENV['name2'] # => value for name2
44
+ ENV['name3'] # => value for name3
41
45
  ```
42
46
 
43
- ### SSM to ENV
47
+ ## Adapters
44
48
 
45
- You can also make SSM compatible with `ENV` by copying parameters to `ENV`.
49
+ ### ENV
46
50
 
47
51
  ```ruby
48
- # i.e. config/application.rb
49
- # Bundler.require(*Rails.groups)
50
- ParamStore.copy_to_env('key1', 'key2', 'key3')
52
+ ParamStore.adapter :env
53
+ ```
51
54
 
52
- ENV['key1'] # => value for key1
53
- ENV['key2'] # => value for key2
54
- ENV['key3'] # => value for key3
55
+ ### AWS Parameter Store (SSM)
56
+
57
+ Add to your Gemfile:
58
+
59
+ ```ruby
60
+ gem 'aws-sdk-ssm', '~> 1'
61
+ ```
62
+
63
+ Configure the adapter:
64
+
65
+ ```ruby
66
+ ParamStore.adapter :aws_ssm, default_path: '/Prod/App/'
67
+ ```
68
+
69
+ #### Retrieving parameters
70
+
71
+ ```ruby
72
+ ParamStore.fetch('name')
73
+ # => get parameter name, if default_path /Prod/App/ get parameter /Prod/App/name
74
+ ParamStore.fetch('name', path: '/Prod/App/')
75
+ # => get parameter /Prod/App/name
76
+ ```
77
+
78
+ #### Copying from SSM adapter to ENV
79
+
80
+ ```ruby
81
+ ParamStore.copy_to_env('name1', 'name2', 'name3', path: '/Environment/Type of computer/Application/')
82
+ # path overrides default_path
83
+
84
+ ENV['name1'] # => value for name1
85
+ ENV['name2'] # => value for name2
86
+ ENV['name3'] # => value for name3
55
87
  ```
56
88
 
57
- ### SSM client
89
+ #### SSM client
58
90
 
59
- By default `ParamStore` will initiate `Aws::SSM::Client.new` without supplying any parameter. If you want to control the initiation of the SSM client, you can define it by setting `ssm_client`.
91
+ By default ParamStore will initiate `Aws::SSM::Client.new` without supplying any argument. If you want to control the initiation of the SSM client, you can define it by setting `ssm_client`.
60
92
 
61
93
 
62
94
  ```ruby
@@ -67,25 +99,100 @@ ParamStore.ssm_client = Aws::SSM::Client.new(
67
99
  )
68
100
  ```
69
101
 
70
- ### Fail-fast
102
+ #### CLI
71
103
 
72
- You can configure the required parameters for an app and fail at startup.
104
+ A few useful [aws ssm](https://docs.aws.amazon.com/cli/latest/reference/ssm/index.html) commands:
105
+
106
+ ```sh
107
+ aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption
108
+ aws ssm put-parameter --name /Prod/ERP/SAP --value ... --type SecureString
109
+ ```
110
+
111
+ ### Secrets Manager
112
+
113
+ Add to your Gemfile:
73
114
 
74
115
  ```ruby
75
- # i.e. config/application.rb
76
- # Bundler.require(*Rails.groups)
77
- ParamStore.require_keys!('key1', 'key2', 'key3')
116
+ gem 'aws-sdk-secretsmanager', '~> 1'
78
117
  ```
79
118
 
80
- #### aws ssm
119
+ Configure the adapter:
81
120
 
82
- A few useful [aws ssm](https://docs.aws.amazon.com/cli/latest/reference/ssm/index.html) commands:
121
+ ```ruby
122
+ ParamStore.adapter :aws_secrets_manager
123
+ # ParaStore.fetch('secret_id')
124
+ # => {\n \"password\":\"pwd\"\n}\n
83
125
 
84
- ```sh
85
- aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption
86
- aws ssm put-parameter --name /Prod/ERP/SAP --value ... --type SecureString
126
+ ParamStore.adapter :aws_secrets_manager, default_secret_id: 'secret_id'
127
+ # ParaStore.fetch('password')
128
+ # => pwd
129
+ ```
130
+
131
+ #### Retrieving parameters
132
+
133
+ ```ruby
134
+ ParamStore.fetch('secret_id')
135
+ ParamStore.fetch('password', secret_id: 'secret_id')
136
+ ```
137
+
138
+ #### Copying from Secrets Manager adapter to ENV
139
+
140
+ ```ruby
141
+ ParamStore.copy_to_env('key1', 'key2', 'key3', secret_id: 'secret_id')
142
+ # secret_id overrides default_secret_id
143
+
144
+ ENV['key1'] # => value for key1
145
+ ENV['key2'] # => value for key2
146
+ ENV['key3'] # => value for key3
147
+ ```
148
+
149
+ ### EJSON
150
+
151
+ Add to your Gemfile:
152
+
153
+ ```ruby
154
+ gem 'ejson_wrapper', '~> 0.3.1'
155
+ ```
156
+
157
+ Configure the adapter:
158
+
159
+ ```ruby
160
+ ParamStore.adapter(
161
+ :ejson_wrapper,
162
+ file_path: '...',
163
+ key_dir: '...',
164
+ private_key: '...',
165
+ use_kms: '...',
166
+ region: '...'
167
+ )
168
+ # see https://github.com/envato/ejson_wrapper#usage
169
+ ```
170
+
171
+ #### Rails
172
+
173
+ If you are using ParamStore in prod and dotenv in dev:
174
+
175
+ ```ruby
176
+ # config/application.rb
177
+ # Bundler.require(*Rails.groups)
178
+ if Rails.env.production?
179
+ ParamStore.adapter(:aws_ssm)
180
+ ParamStore.copy_to_env('DATABASE_URL', require_keys: true, path: '/Prod/MyApp/')
181
+ else
182
+ Dotenv::Railtie.load
183
+ end
87
184
  ```
88
185
 
186
+ ### Fail-fast
187
+
188
+ You can configure the required parameters for an app and fail at startup.
189
+
190
+ ```ruby
191
+ # config/application.rb
192
+ # Bundler.require(*Rails.groups)
193
+ ParamStore.require_keys!('key1', 'key2', 'key3')
194
+ # this will raise an error if any key is missing
195
+ ```
89
196
 
90
197
  ## Development
91
198
 
@@ -0,0 +1,26 @@
1
+ module ParamStore
2
+ module Adapters
3
+ class EJSONWrapper
4
+ attr_reader :file_path, :options
5
+
6
+ def initialize(**opts)
7
+ @file_path = opts.delete(:file_path)
8
+ @options = opts
9
+ end
10
+
11
+ def fetch(key, *args, **_opts, &block)
12
+ decrypt.fetch(key, *args, &block)
13
+ end
14
+
15
+ def fetch_all(*keys, **_opts)
16
+ decrypt.select { |key, _value| keys.flatten.include?(key) }
17
+ end
18
+
19
+ private
20
+
21
+ def decrypt
22
+ @_decrypt ||= ::EJSONWrapper.decrypt(file_path, options)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,11 +1,13 @@
1
1
  module ParamStore
2
2
  module Adapters
3
3
  class Env
4
- def fetch(key, *args, &block)
4
+ def initialize(**_opts); end
5
+
6
+ def fetch(key, *args, **_opts, &block)
5
7
  ENV.fetch(key, *args, &block)
6
8
  end
7
9
 
8
- def fetch_all(*keys)
10
+ def fetch_all(*keys, **_opts)
9
11
  keys = keys.flatten
10
12
  keys.each_with_object({}) do |key, result|
11
13
  result[key] = ENV[key]
@@ -0,0 +1,46 @@
1
+ module ParamStore
2
+ module Adapters
3
+ class SecretsManager
4
+ attr_reader :default_secret_id
5
+
6
+ def initialize(default_secret_id: nil)
7
+ @default_secret_id = default_secret_id
8
+ end
9
+
10
+ def fetch(key, *args, secret_id: nil, version_id: nil, version_stage: nil, &block)
11
+ get_key = secret_id || default_secret_id || key
12
+
13
+ if cache[get_key].nil? &&
14
+ string = get_secret_value(get_key, version_id, version_stage)
15
+ cache[get_key] = JSON.parse(string)
16
+ end
17
+
18
+ (
19
+ secret_id.nil? && default_secret_id.nil? ? cache : cache[get_key]
20
+ ).fetch(key, *args, &block)
21
+ end
22
+
23
+ def fetch_all(*keys, **opts)
24
+ # poor man's fetch all
25
+ # I couldn't find a batch get for secrets manager :/
26
+ keys.map { |key| fetch(key, {}, **opts) }.inject(:merge)
27
+ end
28
+
29
+ private
30
+
31
+ def get_secret_value(secret_id, version_id, version_stage)
32
+ ParamStore.secrets_manager_client.get_secret_value(
33
+ secret_id: secret_id,
34
+ version_id: version_id,
35
+ version_stage: version_stage
36
+ ).secret_string
37
+ rescue Aws::SecretsManager::Errors::ResourceNotFoundException
38
+ # let the tmp.fetch below deal with key not found and defaults
39
+ end
40
+
41
+ def cache
42
+ @_cache ||= {}
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,24 +1,40 @@
1
1
  module ParamStore
2
2
  module Adapters
3
3
  class SSM
4
- def fetch(key, *args, &block)
4
+ attr_reader :default_path
5
+
6
+ def initialize(default_path: nil)
7
+ @default_path = default_path
8
+ end
9
+
10
+ def fetch(key, *args, path: nil, &block)
11
+ key = prepend_path(path, key)
5
12
  tmp = {}
6
- key = "#{ParamStore.path}#{key}" unless ParamStore.path.nil?
7
- begin
8
- tmp[key] = ParamStore.ssm_client.get_parameter(name: key, with_decryption: true).parameter.value
9
- rescue Aws::SSM::Errors::ParameterNotFound
10
- # let the tmp.fetch below deal with not found key and defaults
13
+ if string = get_parameter(key)
14
+ tmp[key] = string
11
15
  end
12
16
  tmp.fetch(key, *args, &block)
13
17
  end
14
18
 
15
- def fetch_all(*keys)
19
+ def fetch_all(*keys, path: nil)
16
20
  keys = keys.flatten
17
- keys = keys.map { |key| "#{ParamStore.path}#{key}" } if ParamStore.path
21
+ keys = keys.map { |key| prepend_path(path, key) } if path
18
22
  ParamStore.ssm_client.get_parameters(names: keys, with_decryption: true).parameters.each_with_object({}) do |param, result|
19
- result[param.name.gsub(ParamStore.path.to_s, '')] = param.value
23
+ result[param.name.gsub(path.to_s, '')] = param.value
20
24
  end
21
25
  end
26
+
27
+ private
28
+
29
+ def get_parameter(key)
30
+ ParamStore.ssm_client.get_parameter(name: key, with_decryption: true).parameter.value
31
+ rescue Aws::SSM::Errors::ParameterNotFound
32
+ # let the tmp.fetch below deal with key not found and defaults
33
+ end
34
+
35
+ def prepend_path(path, key)
36
+ "#{path || default_path}#{key}"
37
+ end
22
38
  end
23
39
  end
24
40
  end
@@ -1,3 +1,3 @@
1
1
  module ParamStore
2
- VERSION = '0.0.1'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
@@ -1,28 +1,31 @@
1
1
  module ParamStore
2
2
  class Wrapper
3
- def initialize(adapter_class)
3
+ def initialize(adapter_class, **opts)
4
4
  @adapter_class = adapter_class
5
+ @opts = opts
5
6
  end
6
7
 
7
- def fetch(key, *args, &block)
8
+ def fetch(key, *args, **opts, &block)
8
9
  key = key.to_s
9
10
  unless cache.key?(key)
10
11
  # cache params to minimize number of requests
11
- cache[key] = adapter_instance.fetch(key, *args, &block)
12
+ cache[key] = adapter_instance.fetch(key, *args, **opts, &block)
12
13
  end
13
14
  cache[key]
14
15
  end
15
16
 
16
- def copy_to_env(*keys, require_keys: false)
17
- cache_all(*keys)
17
+ def copy_to_env(*keys, **opts)
18
+ require_keys = opts.delete(:require_keys)
18
19
 
19
- require_keys!(*keys) if require_keys
20
+ cache_all(*keys, **opts)
21
+
22
+ require_keys!(*keys, **opts) if require_keys
20
23
 
21
24
  keys.each { |key| ENV[key] = cache[key] }
22
25
  end
23
26
 
24
- def require_keys!(*keys)
25
- cache_all(*keys)
27
+ def require_keys!(*keys, **opts)
28
+ cache_all(*keys, **opts)
26
29
 
27
30
  missing = keys.flatten.map!(&:to_s) - cache.keys
28
31
 
@@ -35,9 +38,9 @@ module ParamStore
35
38
 
36
39
  attr_accessor :adapter, :cache
37
40
 
38
- def cache_all(*keys)
41
+ def cache_all(*keys, **opts)
39
42
  keys.flatten.map!(&:to_s)
40
- adapter_instance.fetch_all(*keys).each do |key, value|
43
+ adapter_instance.fetch_all(*keys, **opts).each do |key, value|
41
44
  cache[key] = value
42
45
  end
43
46
  end
@@ -47,7 +50,7 @@ module ParamStore
47
50
  end
48
51
 
49
52
  def adapter_instance
50
- @_adapter_instance ||= @adapter_class.new
53
+ @_adapter_instance ||= @adapter_class.new(**@opts)
51
54
  end
52
55
  end
53
56
  end
data/lib/param_store.rb CHANGED
@@ -1,10 +1,11 @@
1
- require 'aws-sdk-ssm'
2
1
  require 'forwardable'
3
2
 
4
3
  require 'param_store/version'
5
4
  require 'param_store/wrapper'
6
5
  require 'param_store/adapters/env'
7
6
  require 'param_store/adapters/ssm'
7
+ require 'param_store/adapters/secrets_manager'
8
+ require 'param_store/adapters/ejson_wrapper'
8
9
 
9
10
  module ParamStore
10
11
  extend SingleForwardable
@@ -17,16 +18,20 @@ module ParamStore
17
18
  )
18
19
 
19
20
  class << self
20
- attr_accessor :path
21
21
  attr_reader :adapter, :wrapper
22
+ attr_writer :ssm_client, :secrets_manager_client
22
23
 
23
24
  def ssm_client
24
- @_ssm_client ||= Aws::SSM::Client.new
25
+ @ssm_client ||= Aws::SSM::Client.new
25
26
  end
26
27
 
27
- def adapter=(adapter)
28
+ def secrets_manager_client
29
+ @secrets_manager_client ||= Aws::SecretsManager::Client.new
30
+ end
31
+
32
+ def adapter(adapter, **opts)
28
33
  @adapter = adapter
29
- @wrapper = Wrapper.new(adapter_class(adapter))
34
+ @wrapper = Wrapper.new(adapter_class(adapter), **opts)
30
35
  end
31
36
 
32
37
  def adapter_class(adapter)
@@ -34,10 +39,25 @@ module ParamStore
34
39
  when :env
35
40
  Adapters::Env
36
41
  when :aws_ssm
42
+ require_adapter_dependency(adapter, 'aws-sdk-ssm')
37
43
  Adapters::SSM
44
+ when :aws_secrets_manager
45
+ require_adapter_dependency(adapter, 'aws-sdk-secretsmanager')
46
+ Adapters::SecretsManager
47
+ when :ejson_wrapper
48
+ require_adapter_dependency(adapter, 'ejson_wrapper')
49
+ Adapters::EJSONWrapper
38
50
  else
39
51
  raise "Invalid adapter: #{adapter}"
40
52
  end
41
53
  end
54
+
55
+ private
56
+
57
+ def require_adapter_dependency(adapter, dependency)
58
+ require dependency
59
+ rescue LoadError
60
+ fail "#{adapter} requires #{dependency} to be installed separately. Please add gem '#{dependency}' to your Gemfile"
61
+ end
42
62
  end
43
63
  end
data/param_store.gemspec CHANGED
@@ -21,8 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_dependency 'aws-sdk-ssm', '~> 1'
25
-
26
24
  spec.add_development_dependency 'bundler', '~> 1.16'
27
25
  spec.add_development_dependency 'rake', '~> 10.0'
28
26
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: param_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Cantero
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-26 00:00:00.000000000 Z
11
+ date: 2020-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: aws-sdk-ssm
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -73,7 +59,9 @@ files:
73
59
  - bin/console
74
60
  - bin/setup
75
61
  - lib/param_store.rb
62
+ - lib/param_store/adapters/ejson_wrapper.rb
76
63
  - lib/param_store/adapters/env.rb
64
+ - lib/param_store/adapters/secrets_manager.rb
77
65
  - lib/param_store/adapters/ssm.rb
78
66
  - lib/param_store/version.rb
79
67
  - lib/param_store/wrapper.rb
@@ -97,7 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
85
  - !ruby/object:Gem::Version
98
86
  version: '0'
99
87
  requirements: []
100
- rubygems_version: 3.0.1
88
+ rubyforge_project:
89
+ rubygems_version: 2.7.6.2
101
90
  signing_key:
102
91
  specification_version: 4
103
92
  summary: Easy switch in between ENV and AWS Parameter Store (SSM)