class SimplyGenius::Atmos::Providers::Aws::S3SecretManager

Public Class Methods

new(provider) click to toggle source
# 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

Public Instance Methods

delete(key) click to toggle source
# File lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb, line 33
def delete(key)
  bucket.object(@bucket_prefix + key).delete
end
get(key) click to toggle source
# 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) click to toggle source
# 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_h() click to toggle source
# 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

Private Instance Methods

bucket() click to toggle source
# File lib/simplygenius/atmos/providers/aws/s3_secret_manager.rb, line 49
def bucket
  raise ArgumentError.new("The s3 secret bucket is not set") unless @bucket_name
  @bucket ||= ::Aws::S3::Bucket.new(@bucket_name)
end