class DynamoSecret::DynamoDB
Public Class Methods
new(config)
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 7 def initialize(config) @table_name = config[:table_name] || table_name @region = config.fetch(:region, region) @secret_data = config.fetch(:secret_data, {}) end
Public Instance Methods
create_table()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 13 def create_table client.create_table( attribute_definitions: [{ attribute_name: 'Site', attribute_type: 'S' }], table_name: @table_name, key_schema: [{ attribute_name: 'Site', key_type: 'HASH' }], provisioned_throughput: { read_capacity_units: 25, write_capacity_units: 25 } ) $stdout.puts "Created new table: #{@table_name}" rescue Aws::DynamoDB::Errors::ResourceInUseException $stderr.puts "Table #{@table_name} already exists" end
delete()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 28 def delete client.delete_item( key: { 'Site' => @secret_data.map { |k, _v| k }.first }, table_name: @table_name ) end
fetch_secret()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 37 def fetch_secret client.get_item( key: { 'Site' => @secret_data.map { |k, _v| k }.first }, table_name: @table_name ).item rescue Aws::DynamoDB::Errors::ResourceNotFoundException $stderr.puts "Table #{@table_name} not found" exit 1 end
list_secrets()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 49 def list_secrets client.scan(table_name: @table_name).items.each { |item| $stdout.puts item['Site'] } end
put_secret(secret_data)
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 53 def put_secret(secret_data) client.put_item( item: secret_data, table_name: @table_name ) end
Private Instance Methods
client()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 62 def client @client ||= Aws::DynamoDB::Client.new(region: @region) end
region()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 66 def region ENV.fetch('AWS_REGION', 'us-west-2') end
table_name()
click to toggle source
# File lib/dynamo_secret/dynamodb.rb, line 70 def table_name "dynamo_secret_#{IAM.new.user_id}" end