class Secrets::S3

Public Class Methods

new(s3_client, kms_client, logger) click to toggle source
# File lib/secrets_parser/s3.rb, line 12
def initialize(s3_client, kms_client, logger)
  @s3_client = s3_client
  @kms_client = kms_client
  @logger = logger
end

Public Instance Methods

decrypt(io) click to toggle source
# File lib/secrets_parser/s3.rb, line 30
def decrypt(io)
  @kms_client.decrypt(ciphertext_blob: io.read).plaintext
end
download(filename) click to toggle source
# File lib/secrets_parser/s3.rb, line 18
def download(filename)
  bucket_name, file = filename.split('/', 2)

  @logger.info "Downloading #{file} from #{bucket_name}"
  begin
    resp = @s3_client.get_object(bucket: bucket_name, key: file)
    resp.body
  rescue Aws::S3::Errors::NoSuchKey
    raise Secrets::Errors::NoSuchFile, "Secret file #{file} does not exist in #{bucket_name}"
  end
end
logger() click to toggle source
# File lib/secrets_parser/s3.rb, line 34
def logger
  @config.logger
end