Class: Fog::AWS::DynamoDB::Real
- Inherits:
-
Object
- Object
- Fog::AWS::DynamoDB::Real
- Includes:
- CredentialFetcher::ConnectionMethods
- Defined in:
- lib/fog/aws/dynamodb.rb,
lib/fog/aws/requests/dynamodb/scan.rb,
lib/fog/aws/requests/dynamodb/query.rb,
lib/fog/aws/requests/dynamodb/get_item.rb,
lib/fog/aws/requests/dynamodb/put_item.rb,
lib/fog/aws/requests/dynamodb/delete_item.rb,
lib/fog/aws/requests/dynamodb/list_tables.rb,
lib/fog/aws/requests/dynamodb/update_item.rb,
lib/fog/aws/requests/dynamodb/create_table.rb,
lib/fog/aws/requests/dynamodb/delete_table.rb,
lib/fog/aws/requests/dynamodb/update_table.rb,
lib/fog/aws/requests/dynamodb/batch_get_item.rb,
lib/fog/aws/requests/dynamodb/describe_table.rb,
lib/fog/aws/requests/dynamodb/batch_write_item.rb
Instance Method Summary collapse
-
#batch_get_item(request_items) ⇒ Object
Get DynamoDB items.
- #batch_put_item(request_items) ⇒ Object
-
#batch_write_item(request_items) ⇒ Object
request_items has form: [{“PutRequest”=> {“Item”=> {“hash_key”=>{“N”=>“99”, “range_key”=>“N”=>“99”, “attribute”=>“S”=>“hi” }}}, … ]} For more information: docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_BatchWriteItems.html.
-
#create_table(table_name, key_schema, provisioned_throughput) ⇒ Object
Create DynamoDB table.
-
#delete_item(table_name, key, options = {}) ⇒ Object
Delete DynamoDB item.
-
#delete_table(table_name) ⇒ Object
Delete DynamoDB table.
-
#describe_table(table_name) ⇒ Object
Describe DynamoDB table.
-
#get_item(table_name, key, options = {}) ⇒ Object
Get DynamoDB item.
-
#initialize(options = {}) ⇒ Real
constructor
Initialize connection to DynamoDB.
-
#list_tables(options = {}) ⇒ Object
List DynamoDB tables.
-
#put_item(table_name, item, options = {}) ⇒ Object
Update DynamoDB item.
-
#query(table_name, hash_key, options = {}) ⇒ Object
Query DynamoDB items.
-
#scan(table_name, options = {}) ⇒ Object
Scan DynamoDB items.
-
#update_item(table_name, key, attribute_updates, options = {}) ⇒ Object
Update DynamoDB item.
-
#update_table(table_name, provisioned_throughput) ⇒ Object
Update DynamoDB table throughput.
Methods included from CredentialFetcher::ConnectionMethods
#refresh_credentials_if_expired
Constructor Details
#initialize(options = {}) ⇒ Real
Initialize connection to DynamoDB
Notes
options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection
Examples
ddb = DynamoDB.new(
:aws_access_key_id => your_aws_access_key_id,
:aws_secret_access_key => your_aws_secret_access_key
)
Parameters
-
options<~Hash> - config arguments for connection. Defaults to {}.
Returns
-
DynamoDB object with connection to aws
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/fog/aws/dynamodb.rb', line 76 def initialize(={}) @use_iam_profile = [:use_iam_profile] @region = [:region] || 'us-east-1' setup_credentials() @connection_options = [:connection_options] || {} @instrumentor = [:instrumentor] @instrumentor_name = [:instrumentor_name] || 'fog.aws.dynamodb' @host = [:host] || "dynamodb.#{@region}.amazonaws.com" @path = [:path] || '/' @persistent = [:persistent] || false @port = [:port] || '443' @scheme = [:scheme] || 'https' @connection = Fog::XML::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options) end |
Instance Method Details
#batch_get_item(request_items) ⇒ Object
Get DynamoDB items
Parameters
-
‘request_items’<~Hash>:
-
‘table_name’<~Hash>:
-
‘Keys’<~Array>: array of keys
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeType’<~String> - type of attribute
-
‘AttributeName’<~String> - name of attribute
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeType’<~String> - type of attribute
-
‘AttributeName’<~String> - name of attribute
-
-
-
‘AttributesToGet’<~Array> - optional attributes to return, defaults to all
-
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Responses’<~Hash>:
-
‘table_name’<~Hash>:
-
‘Items’<~Array> - Matching items
-
‘ConsumedCapacityUnits’<~Float> - Capacity units used in read
-
-
-
‘UnprocessedKeys’:<~Hash> - tables and keys in excess of per request limit, pass this to subsequent batch get for pseudo-pagination
-
-
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/fog/aws/requests/dynamodb/batch_get_item.rb', line 27 def batch_get_item(request_items) body = { 'RequestItems' => request_items } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.BatchGetItem'}, :idempotent => true ) end |
#batch_put_item(request_items) ⇒ Object
5 6 7 8 |
# File 'lib/fog/aws/requests/dynamodb/batch_write_item.rb', line 5 def batch_put_item(request_items) Fog::Logger.deprecation("batch_put_item is deprecated, use batch_write_item instead") batch_write_item(request_items) end |
#batch_write_item(request_items) ⇒ Object
request_items has form:
[{"PutRequest"=>
{"Item"=>
{"hash_key"=>{"N"=>"99",
"range_key"=>"N"=>"99",
"attribute"=>"S"=>"hi"
}}}, ... ]}
For more information: docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_BatchWriteItems.html
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/fog/aws/requests/dynamodb/batch_write_item.rb', line 20 def batch_write_item(request_items) body = { 'RequestItems' => request_items } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.BatchWriteItem'} ) end |
#create_table(table_name, key_schema, provisioned_throughput) ⇒ Object
Create DynamoDB table
Parameters
-
‘table_name’<~String> - name of table to create
-
‘key_schema’<~Hash>:
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
-
‘provisioned_throughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘TableDescription’<~Hash>
-
‘CreationDateTime’<~Float> - Unix epoch time of table creation
-
‘KeySchema’<~Hash> - schema for table
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
-
‘ProvisionedThroughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
-
‘TableName’<~String> - name of table
-
‘TableStatus’<~String> - status of table
-
-
-
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/fog/aws/requests/dynamodb/create_table.rb', line 37 def create_table(table_name, key_schema, provisioned_throughput) body = { 'KeySchema' => key_schema, 'ProvisionedThroughput' => provisioned_throughput, 'TableName' => table_name } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.CreateTable'}, :idempotent => true ) end |
#delete_item(table_name, key, options = {}) ⇒ Object
Delete DynamoDB item
Parameters
-
‘table_name’<~String> - name of table for item
-
‘key’<~Hash>:
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute
-
-
-
‘options’<~Hash>:
-
‘Expected’<~Hash>: data to check against
-
‘AttributeName’<~String> - name of attribute
-
‘Value’<~Hash> - a value to check for the value of
or
-
‘Exists’<~Boolean> - set as false to only allow update if attribute doesn’t exist
-
-
‘ReturnValues’<~String> - data to return in %wALL_OLD NONE UPDATED_NEW UPDATED_OLD, defaults to NONE
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>: varies based on ReturnValues param, see: docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html
-
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/fog/aws/requests/dynamodb/delete_item.rb', line 28 def delete_item(table_name, key, = {}) body = { 'Key' => key, 'TableName' => table_name }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.DeleteItem'}, :idempotent => true ) end |
#delete_table(table_name) ⇒ Object
Delete DynamoDB table
Parameters
-
‘table_name’<~String> - name of table to delete
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘TableDescription’<~Hash>
-
‘KeySchema’<~Hash> - schema for table
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
-
‘ProvisionedThroughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
-
‘TableName’<~String> - name of table
-
‘TableStatus’<~String> - status of table
-
-
-
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/fog/aws/requests/dynamodb/delete_table.rb', line 26 def delete_table(table_name) body = { 'TableName' => table_name } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.DeleteTable'}, :idempotent => true ) end |
#describe_table(table_name) ⇒ Object
Describe DynamoDB table
Parameters
-
‘table_name’<~String> - name of table to describe
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Table’<~Hash>
-
‘CreationDateTime’<~Float> - Unix epoch time of table creation
-
‘KeySchema’<~Hash> - schema for table
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
-
‘ProvisionedThroughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
-
‘TableName’<~String> - name of table
-
‘TableSizeBytes’<~Integer> - size of table in bytes
-
‘TableStatus’<~String> - status of table
-
-
-
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fog/aws/requests/dynamodb/describe_table.rb', line 28 def describe_table(table_name) body = { 'TableName' => table_name } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.DescribeTable'}, :idempotent => true ) end |
#get_item(table_name, key, options = {}) ⇒ Object
Get DynamoDB item
Parameters
-
‘table_name’<~String> - name of table for item
-
‘key’<~Hash>:
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeType’<~String> - type of attribute
-
‘AttributeName’<~String> - name of attribute
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeType’<~String> - type of attribute
-
‘AttributeName’<~String> - name of attribute
-
-
-
‘options’<~Hash>:
-
‘AttributesToGet’<~Array>: list of array names to return, defaults to returning all
-
‘ConsistentRead’<~Boolean>: whether to wait for updates, defaults to false
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘ConsumedCapacityUnits’<~Float> - Capacity units used in read
-
‘Item’:<~Hash>:
-
‘AttributeName’<~Hash>: in form of “type”:value
-
-
-
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/fog/aws/requests/dynamodb/get_item.rb', line 26 def get_item(table_name, key, = {}) body = { 'Key' => key, 'TableName' => table_name }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.GetItem'}, :idempotent => true ) end |
#list_tables(options = {}) ⇒ Object
List DynamoDB tables
Parameters
-
‘options’<~Hash> - options, defaults to {}
-
‘ExclusiveStartTableName’<~String> - name of table to begin listing with
-
‘Limit’<~Integer> - limit number of tables to return
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘LastEvaluatedTableName’<~String> - last table name, for pagination
-
‘TableNames’<~Array> - table names
-
-
17 18 19 20 21 22 23 |
# File 'lib/fog/aws/requests/dynamodb/list_tables.rb', line 17 def list_tables( = {}) request( :body => Fog::JSON.encode(), :headers => {'x-amz-target' => 'DynamoDB_20111205.ListTables'}, :idempotent => true ) end |
#put_item(table_name, item, options = {}) ⇒ Object
Update DynamoDB item
Parameters
-
‘table_name’<~String> - name of table for item
-
‘item’<~Hash>: data to update, must include primary key
-
‘AttributeName’<~String> - Attribute to update
-
‘Value’<~Hash> - formated as => value
-
‘Action’<~String> - action to take if expects matches, in %wDELETE PUT, defaults to PUT
-
-
-
‘options’<~Hash>:
-
‘Expected’<~Hash>: data to check against
-
‘AttributeName’<~String> - name of attribute
-
‘Value’<~Hash> - a value to check for the value of
or
-
‘Exists’<~Boolean> - set as false to only allow update if attribute doesn’t exist
-
-
‘ReturnValues’<~String> - data to return in %wALL_OLD NONE UPDATED_NEW UPDATED_OLD, defaults to NONE
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>: varies based on ReturnValues param, see: docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html
-
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/fog/aws/requests/dynamodb/put_item.rb', line 25 def put_item(table_name, item, = {}) body = { 'Item' => item, 'TableName' => table_name }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20120810.PutItem'} ) end |
#query(table_name, hash_key, options = {}) ⇒ Object
Query DynamoDB items
Parameters
-
‘table_name’<~String> - name of table to query
-
‘hash_key’<~Hash> - hash key to query
-
options<~Hash>:
-
‘AttributesToGet’<~Array> - Array of attributes to get for each item, defaults to all
-
‘ConsistentRead’<~Boolean> - Whether to wait for consistency, defaults to false
-
‘Count’<~Boolean> - If true, returns only a count of such items rather than items themselves, defaults to false
-
‘Limit’<~Integer> - limit of total items to return
-
‘RangeKeyCondition’<~Hash>: value to compare against range key
-
‘AttributeValueList’<~Hash>: one or more values to compare against
-
‘ComparisonOperator’<~String>: comparison operator to use with attribute value list, in %wBEGINS_WITH EQ LE LT GE GT
-
-
‘ScanIndexForward’<~Boolean>: Whether to scan from start or end of index, defaults to start
-
‘ExclusiveStartKey’<~Hash>: Key to start listing from, can be taken from LastEvaluatedKey in response
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘ConsumedCapacityUnits’<~Integer> - number of capacity units used for query
-
‘Count’<~Integer> - number of items in response
-
‘Items’<~Array> - array of items returned
-
‘LastEvaluatedKey’<~Hash> - last key scanned, can be passed to ExclusiveStartKey for pagination
-
-
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fog/aws/requests/dynamodb/query.rb', line 28 def query(table_name, hash_key, = {}) body = { 'TableName' => table_name, 'HashKeyValue' => hash_key }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.Query'} ) end |
#scan(table_name, options = {}) ⇒ Object
Scan DynamoDB items
Parameters
-
‘table_name’<~String> - name of table to query
-
options<~Hash>:
-
‘AttributesToGet’<~Array> - Array of attributes to get for each item, defaults to all
-
‘ConsistentRead’<~Boolean> - Whether to wait for consistency, defaults to false
-
‘Count’<~Boolean> - If true, returns only a count of such items rather than items themselves, defaults to false
-
‘Limit’<~Integer> - limit of total items to return
-
‘ScanFilter’<~Hash>: value to compare against
-
attribute_name<~Hash>:
-
‘AttributeValueList’<~Hash>: one or more values to compare against
-
‘ComparisonOperator’<~String>: comparison operator to use with attribute value list, in %wBEGINS_WITH EQ LE LT GE GT
-
-
-
‘ScanIndexForward’<~Boolean>: Whether to scan from start or end of index, defaults to start
-
‘ExclusiveStartKey’<~Hash>: Key to start listing from, can be taken from LastEvaluatedKey in response
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘ConsumedCapacityUnits’<~Integer> - number of capacity units used for scan
-
‘Count’<~Integer> - number of items in response
-
‘Items’<~Array> - array of items returned
-
‘LastEvaluatedKey’<~Hash> - last key scanned, can be passed to ExclusiveStartKey for pagination
-
‘ScannedCount’<~Integer> - number of items scanned before applying filters
-
-
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/fog/aws/requests/dynamodb/scan.rb', line 29 def scan(table_name, = {}) body = { 'TableName' => table_name }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.Scan'}, :idempotent => true ) end |
#update_item(table_name, key, attribute_updates, options = {}) ⇒ Object
Update DynamoDB item
Parameters
-
‘table_name’<~String> - name of table for item
-
‘key’<~Hash>:
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute
-
-
-
‘attribute_updates’<~Hash>:
-
‘AttributeName’<~String> - Attribute to update
-
‘Value’<~Hash> - formated as => value
-
‘Action’<~String> - action to take if expects matches, in %wDELETE PUT, defaults to PUT
-
-
-
‘options’<~Hash>:
-
‘Expected’<~Hash>: data to check against
-
‘AttributeName’<~String> - name of attribute
-
‘Value’<~Hash> - a value to check for the value of
or
-
‘Exists’<~Boolean> - set as false to only allow update if attribute doesn’t exist
-
-
‘ReturnValues’<~String> - data to return in %wALL_OLD NONE UPDATED_NEW UPDATED_OLD, defaults to NONE
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>: varies based on ReturnValues param, see: docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html
-
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/fog/aws/requests/dynamodb/update_item.rb', line 32 def update_item(table_name, key, attribute_updates, = {}) body = { 'AttributeUpdates' => attribute_updates, 'Key' => key, 'TableName' => table_name }.merge() request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.UpdateItem'} ) end |
#update_table(table_name, provisioned_throughput) ⇒ Object
Update DynamoDB table throughput
Parameters
-
‘table_name’<~String> - name of table to describe
-
‘provisioned_throughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Table’<~Hash>
-
‘KeySchema’<~Hash> - schema for table
-
‘HashKeyElement’<~Hash>: info for primary key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
‘RangeKeyElement’<~Hash>: optional, info for range key
-
‘AttributeName’<~String> - name of attribute
-
‘AttributeType’<~String> - type of attribute, in %wNS S SS for number, number set, string, string set
-
-
-
‘ProvisionedThroughput’<~Hash>:
-
‘ReadCapacityUnits’<~Integer> - read capacity for table, in 5..10000
-
‘WriteCapacityUnits’<~Integer> - write capacity for table, in 5..10000
-
-
‘TableName’<~String> - name of table
-
‘TableStatus’<~String> - status of table
-
-
-
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/aws/requests/dynamodb/update_table.rb', line 29 def update_table(table_name, provisioned_throughput) body = { 'ProvisionedThroughput' => provisioned_throughput, 'TableName' => table_name } request( :body => Fog::JSON.encode(body), :headers => {'x-amz-target' => 'DynamoDB_20111205.UpdateTable'}, :idempotent => true ) end |