Class: DynamoSecret::DynamoDB

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamo_secret/dynamodb.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ DynamoDB

Returns a new instance of DynamoDB.



7
8
9
10
11
# 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

Instance Method Details

#create_tableObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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

#deleteObject



28
29
30
31
32
33
34
35
# 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_secretObject



37
38
39
40
41
42
43
44
45
46
47
# 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_secretsObject



49
50
51
# 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) ⇒ Object



53
54
55
56
57
58
# File 'lib/dynamo_secret/dynamodb.rb', line 53

def put_secret(secret_data)
  client.put_item(
    item: secret_data,
    table_name: @table_name
  )
end