Class: SimplyGenius::Atmos::Providers::Aws::S3SecretManager

Inherits:
Object
  • Object
show all
Includes:
GemLogger::LoggerSupport
Defined in:
lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(provider) ⇒ S3SecretManager

Returns a new instance of S3SecretManager.



12
13
14
15
16
17
# File 'lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb', line 12

def initialize(provider)
  @provider = provider
  @bucket_name = Atmos.config[:secret][:bucket]
  @bucket_prefix = "#{Atmos.config[:secret][:prefix]}"
  @encrypt = Atmos.config[:secret][:encrypt]
end

Instance Method Details

#delete(key) ⇒ Object



33
34
35
# File 'lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb', line 33

def delete(key)
  bucket.object(@bucket_prefix + key).delete
end

#get(key) ⇒ Object



29
30
31
# File 'lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb', line 29

def get(key)
  bucket.object(@bucket_prefix + key).get.body.read
end

#set(key, value, force: false) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb', line 19

def set(key, value, force: false)
  opts = {}
  opts[:server_side_encryption] = "AES256" if @encrypt
  obj = bucket.object(@bucket_prefix + key)
  if obj.exists? && ! force
    raise "A value already exists for the given key, force overwrite or delete first"
  end
  obj.put(body: value, **opts)
end

#to_hObject



37
38
39
40
41
42
43
44
45
# File 'lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb', line 37

def to_h
  Hash[bucket.objects(prefix: @bucket_prefix).collect {|o|
    key = o.key
    if @bucket_prefix.present?
      key = o.key.gsub(/^#{@bucket_prefix}/, '')
    end
    [key, o.get.body.read]
  }]
end