Class: DynamoSecret::DynamoDB
- Inherits:
-
Object
- Object
- DynamoSecret::DynamoDB
- Defined in:
- lib/dynamo_secret/dynamodb.rb
Instance Method Summary collapse
- #create_table ⇒ Object
- #delete ⇒ Object
- #fetch_secret ⇒ Object
-
#initialize(config) ⇒ DynamoDB
constructor
A new instance of DynamoDB.
- #list_secrets ⇒ Object
- #put_secret(secret_data) ⇒ Object
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_table ⇒ Object
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 |
#delete ⇒ Object
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_secret ⇒ Object
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_secrets ⇒ Object
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 |