Class: Aws::DynamoDB::Table
- Inherits:
-
Object
- Object
- Aws::DynamoDB::Table
- Extended by:
- Aws::Deprecations
- Defined in:
- lib/aws-sdk-dynamodb/table.rb
Defined Under Namespace
Classes: Collection
Read-Only Attributes collapse
-
#archival_summary ⇒ Types::ArchivalSummary
Contains information about the table archive.
-
#attribute_definitions ⇒ Array<Types::AttributeDefinition>
An array of ‘AttributeDefinition` objects.
-
#billing_mode_summary ⇒ Types::BillingModeSummary
Contains the details for the read/write capacity mode.
-
#creation_date_time ⇒ Time
The date and time when the table was created, in [UNIX epoch time] format.
-
#global_secondary_indexes ⇒ Array<Types::GlobalSecondaryIndexDescription>
The global secondary indexes, if any, on the table.
-
#global_table_version ⇒ String
Represents the version of [global tables] in use, if the table is replicated across AWS Regions.
-
#item_count ⇒ Integer
The number of items in the specified table.
-
#key_schema ⇒ Array<Types::KeySchemaElement>
The primary key structure for the table.
-
#latest_stream_arn ⇒ String
The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this table.
-
#latest_stream_label ⇒ String
A timestamp, in ISO 8601 format, for this stream.
-
#local_secondary_indexes ⇒ Array<Types::LocalSecondaryIndexDescription>
Represents one or more local secondary indexes on the table.
- #name ⇒ String (also: #table_name)
-
#provisioned_throughput ⇒ Types::ProvisionedThroughputDescription
The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.
-
#replicas ⇒ Array<Types::ReplicaDescription>
Represents replicas of the table.
-
#restore_summary ⇒ Types::RestoreSummary
Contains details for the restore.
-
#sse_description ⇒ Types::SSEDescription
The description of the server-side encryption status on the specified table.
-
#stream_specification ⇒ Types::StreamSpecification
The current DynamoDB Streams configuration for the table.
-
#table_arn ⇒ String
The Amazon Resource Name (ARN) that uniquely identifies the table.
-
#table_id ⇒ String
Unique identifier for the table for which the backup was created.
-
#table_size_bytes ⇒ Integer
The total size of the specified table, in bytes.
-
#table_status ⇒ String
The current state of the table:.
Actions collapse
- #delete(options = {}) ⇒ Types::DeleteTableOutput
- #delete_item(options = {}) ⇒ Types::DeleteItemOutput
- #get_item(options = {}) ⇒ Types::GetItemOutput
- #identifiers ⇒ Object deprecated private Deprecated.
- #put_item(options = {}) ⇒ Types::PutItemOutput
- #query(options = {}) ⇒ Types::QueryOutput
- #scan(options = {}) ⇒ Types::ScanOutput
- #update(options = {}) ⇒ Table
- #update_item(options = {}) ⇒ Types::UpdateItemOutput
Instance Method Summary collapse
- #client ⇒ Client
-
#data ⇒ Types::TableDescription
Returns the data for this Table.
-
#data_loaded? ⇒ Boolean
Returns ‘true` if this resource is loaded.
-
#initialize(*args) ⇒ Table
constructor
A new instance of Table.
- #load ⇒ self (also: #reload)
-
#wait_until(options = {}, &block) ⇒ Resource
deprecated
Deprecated.
Use [Aws::DynamoDB::Client] #wait_until instead
Constructor Details
#initialize(name, options = {}) ⇒ Table #initialize(options = {}) ⇒ Table
Returns a new instance of Table.
19 20 21 22 23 24 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 19 def initialize(*args) = Hash === args.last ? args.pop.dup : {} @name = extract_name(args, ) @data = .delete(:data) @client = .delete(:client) || Client.new() end |
Instance Method Details
#archival_summary ⇒ Types::ArchivalSummary
Contains information about the table archive.
351 352 353 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 351 def archival_summary data[:archival_summary] end |
#attribute_definitions ⇒ Array<Types::AttributeDefinition>
An array of ‘AttributeDefinition` objects. Each of these objects describes one attribute in the table and index key schema.
Each ‘AttributeDefinition` object in this array is composed of:
-
‘AttributeName` - The name of the attribute.
-
‘AttributeType` - The data type for the attribute.
43 44 45 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 43 def attribute_definitions data[:attribute_definitions] end |
#billing_mode_summary ⇒ Types::BillingModeSummary
Contains the details for the read/write capacity mode.
156 157 158 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 156 def billing_mode_summary data[:billing_mode_summary] end |
#client ⇒ Client
358 359 360 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 358 def client @client end |
#creation_date_time ⇒ Time
The date and time when the table was created, in [UNIX epoch time] format.
[1]: www.epochconverter.com/
114 115 116 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 114 def creation_date_time data[:creation_date_time] end |
#data ⇒ Types::TableDescription
Returns the data for this Aws::DynamoDB::Table. Calls Client#describe_table if #data_loaded? is ‘false`.
378 379 380 381 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 378 def data load unless @data @data end |
#data_loaded? ⇒ Boolean
386 387 388 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 386 def data_loaded? !!@data end |
#delete(options = {}) ⇒ Types::DeleteTableOutput
492 493 494 495 496 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 492 def delete( = {}) = .merge(table_name: @name) resp = @client.delete_table() resp.data end |
#delete_item(options = {}) ⇒ Types::DeleteItemOutput
683 684 685 686 687 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 683 def delete_item( = {}) = .merge(table_name: @name) resp = @client.delete_item() resp.data end |
#get_item(options = {}) ⇒ Types::GetItemOutput
807 808 809 810 811 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 807 def get_item( = {}) = .merge(table_name: @name) resp = @client.get_item() resp.data end |
#global_secondary_indexes ⇒ Array<Types::GlobalSecondaryIndexDescription>
The global secondary indexes, if any, on the table. Each index is scoped to a given partition key value. Each element is composed of:
-
‘Backfilling` - If true, then the index is currently in the backfilling phase. Backfilling occurs only when a new global secondary index is added to the table. It is the process by which DynamoDB populates the new index with data from the table. (This attribute does not appear for indexes that were created during a `CreateTable` operation.)
You can delete an index that is being created during the ‘Backfilling` phase when `IndexStatus` is set to CREATING and `Backfilling` is true. You can’t delete the index that is being created when ‘IndexStatus` is set to CREATING and `Backfilling` is false. (This attribute does not appear for indexes that were created during a `CreateTable` operation.)
-
‘IndexName` - The name of the global secondary index.
-
‘IndexSizeBytes` - The total size of the global secondary index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
-
‘IndexStatus` - The current status of the global secondary index:
-
‘CREATING` - The index is being created.
-
‘UPDATING` - The index is being updated.
-
‘DELETING` - The index is being deleted.
-
‘ACTIVE` - The index is ready for use.
-
-
‘ItemCount` - The number of items in the global secondary index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
-
‘KeySchema` - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same partition key as the table.
-
‘Projection` - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:
-
‘ProjectionType` - One of the following:
-
‘KEYS_ONLY` - Only the index and primary keys are projected into the index.
-
‘INCLUDE` - Only the specified table attributes are projected into the index. The list of projected attributes is in `NonKeyAttributes`.
-
‘ALL` - All of the table attributes are projected into the index.
-
-
‘NonKeyAttributes` - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in `NonKeyAttributes`, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.
-
-
‘ProvisionedThroughput` - The provisioned throughput settings for the global secondary index, consisting of read and write capacity units, along with data about increases and decreases.
If the table is in the ‘DELETING` state, no information about indexes will be returned.
285 286 287 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 285 def global_secondary_indexes data[:global_secondary_indexes] end |
#global_table_version ⇒ String
Represents the version of [global tables] in use, if the table is replicated across AWS Regions.
[1]: docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html
326 327 328 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 326 def global_table_version data[:global_table_version] end |
#identifiers ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
2197 2198 2199 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 2197 def identifiers { name: @name } end |
#item_count ⇒ Integer
The number of items in the specified table. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
138 139 140 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 138 def item_count data[:item_count] end |
#key_schema ⇒ Array<Types::KeySchemaElement>
The primary key structure for the table. Each ‘KeySchemaElement` consists of:
-
‘AttributeName` - The name of the attribute.
-
‘KeyType` - The role of the attribute:
-
‘HASH` - partition key
-
‘RANGE` - sort key
<note markdown=“1”> The partition key of an item is also known as its *hash attribute*. The term “hash attribute” derives from DynamoDB’s usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.
The sort key of an item is also known as its *range attribute*. The
term “range attribute” derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.
</note>
-
For more information about primary keys, see [Primary Key] in the *Amazon DynamoDB Developer Guide*.
[1]: docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey
77 78 79 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 77 def key_schema data[:key_schema] end |
#latest_stream_arn ⇒ String
The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this table.
315 316 317 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 315 def latest_stream_arn data[:latest_stream_arn] end |
#latest_stream_label ⇒ String
A timestamp, in ISO 8601 format, for this stream.
Note that ‘LatestStreamLabel` is not a unique identifier for the stream, because it is possible that a stream from another table might have the same timestamp. However, the combination of the following three elements is guaranteed to be unique:
-
AWS customer ID
-
Table name
-
‘StreamLabel`
308 309 310 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 308 def latest_stream_label data[:latest_stream_label] end |
#load ⇒ self Also known as: reload
Loads, or reloads #data for the current Aws::DynamoDB::Table. Returns ‘self` making it possible to chain methods.
table.reload.data
368 369 370 371 372 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 368 def load resp = @client.describe_table(table_name: @name) @data = resp.table self end |
#local_secondary_indexes ⇒ Array<Types::LocalSecondaryIndexDescription>
Represents one or more local secondary indexes on the table. Each index is scoped to a given partition key value. Tables with one or more local secondary indexes are subject to an item collection size limit, where the amount of data within a given item collection cannot exceed 10 GB. Each element is composed of:
-
‘IndexName` - The name of the local secondary index.
-
‘KeySchema` - Specifies the complete index key schema. The attribute names in the key schema must be between 1 and 255 characters (inclusive). The key schema must begin with the same partition key as the table.
-
‘Projection` - Specifies attributes that are copied (projected) from the table into the index. These are in addition to the primary key attributes and index key attributes, which are automatically projected. Each attribute specification is composed of:
-
‘ProjectionType` - One of the following:
-
‘KEYS_ONLY` - Only the index and primary keys are projected into the index.
-
‘INCLUDE` - Only the specified table attributes are projected into the index. The list of projected attributes is in `NonKeyAttributes`.
-
‘ALL` - All of the table attributes are projected into the index.
-
-
‘NonKeyAttributes` - A list of one or more non-key attribute names that are projected into the secondary index. The total count of attributes provided in `NonKeyAttributes`, summed across all of the secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts as two distinct attributes when determining the total.
-
-
‘IndexSizeBytes` - Represents the total size of the index, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
-
‘ItemCount` - Represents the number of items in the index. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
If the table is in the ‘DELETING` state, no information about indexes will be returned.
208 209 210 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 208 def local_secondary_indexes data[:local_secondary_indexes] end |
#name ⇒ String Also known as: table_name
29 30 31 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 29 def name @name end |
#provisioned_throughput ⇒ Types::ProvisionedThroughputDescription
The provisioned throughput settings for the table, consisting of read and write capacity units, along with data about increases and decreases.
122 123 124 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 122 def provisioned_throughput data[:provisioned_throughput] end |
#put_item(options = {}) ⇒ Types::PutItemOutput
1013 1014 1015 1016 1017 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 1013 def put_item( = {}) = .merge(table_name: @name) resp = @client.put_item() resp.data end |
#query(options = {}) ⇒ Types::QueryOutput
1399 1400 1401 1402 1403 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 1399 def query( = {}) = .merge(table_name: @name) resp = @client.query() resp.data end |
#replicas ⇒ Array<Types::ReplicaDescription>
Represents replicas of the table.
332 333 334 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 332 def replicas data[:replicas] end |
#restore_summary ⇒ Types::RestoreSummary
Contains details for the restore.
338 339 340 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 338 def restore_summary data[:restore_summary] end |
#scan(options = {}) ⇒ Types::ScanOutput
1712 1713 1714 1715 1716 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 1712 def scan( = {}) = .merge(table_name: @name) resp = @client.scan() resp.data end |
#sse_description ⇒ Types::SSEDescription
The description of the server-side encryption status on the specified table.
345 346 347 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 345 def sse_description data[:sse_description] end |
#stream_specification ⇒ Types::StreamSpecification
The current DynamoDB Streams configuration for the table.
291 292 293 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 291 def stream_specification data[:stream_specification] end |
#table_arn ⇒ String
The Amazon Resource Name (ARN) that uniquely identifies the table.
144 145 146 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 144 def table_arn data[:table_arn] end |
#table_id ⇒ String
Unique identifier for the table for which the backup was created.
150 151 152 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 150 def table_id data[:table_id] end |
#table_size_bytes ⇒ Integer
The total size of the specified table, in bytes. DynamoDB updates this value approximately every six hours. Recent changes might not be reflected in this value.
130 131 132 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 130 def table_size_bytes data[:table_size_bytes] end |
#table_status ⇒ String
The current state of the table:
-
‘CREATING` - The table is being created.
-
‘UPDATING` - The table is being updated.
-
‘DELETING` - The table is being deleted.
-
‘ACTIVE` - The table is ready for use.
-
‘INACCESSIBLE_ENCRYPTION_CREDENTIALS` - The AWS KMS key used to encrypt the table in inaccessible. Table operations may fail due to failure to use the AWS KMS key. DynamoDB will initiate the table archival process when a table’s AWS KMS key remains inaccessible for more than seven days.
-
‘ARCHIVING` - The table is being archived. Operations are not allowed until archival is complete.
-
‘ARCHIVED` - The table has been archived. See the ArchivalReason for more information.
103 104 105 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 103 def table_status data[:table_status] end |
#update(options = {}) ⇒ Table
1882 1883 1884 1885 1886 1887 1888 1889 1890 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 1882 def update( = {}) = .merge(table_name: @name) resp = @client.update_table() Table.new( name: @name, data: resp.data.table_description, client: @client ) end |
#update_item(options = {}) ⇒ Types::UpdateItemOutput
2189 2190 2191 2192 2193 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 2189 def update_item( = {}) = .merge(table_name: @name) resp = @client.update_item() resp.data end |
#wait_until(options = {}, &block) ⇒ Resource
Use [Aws::DynamoDB::Client] #wait_until instead
The waiting operation is performed on a copy. The original resource remains unchanged
Waiter polls an API operation until a resource enters a desired state.
## Basic Usage
Waiter will polls until it is successful, it fails by entering a terminal state, or until a maximum number of attempts are made.
# polls in a loop until condition is true
resource.wait_until() {|resource| condition}
## Example
instance.wait_until(max_attempts:10, delay:5) {|instance| instance.state.name == 'running' }
## Configuration
You can configure the maximum number of polling attempts, and the delay (in seconds) between each polling attempt. The waiting condition is set by passing a block to #wait_until:
# poll for ~25 seconds
resource.wait_until(max_attempts:5,delay:5) {|resource|...}
## Callbacks
You can be notified before each polling attempt and before each delay. If you throw ‘:success` or `:failure` from these callbacks, it will terminate the waiter.
started_at = Time.now
# poll for 1 hour, instead of a number of attempts
proc = Proc.new do |attempts, response|
throw :failure if Time.now - started_at > 3600
end
# disable max attempts
instance.wait_until(before_wait:proc, max_attempts:nil) {...}
## Handling Errors
When a waiter is successful, it returns the Resource. When a waiter fails, it raises an error.
begin
resource.wait_until(...)
rescue Aws::Waiters::Errors::WaiterFailed
# resource did not enter the desired state in time
end
attempts attempt in seconds invoked before each attempt invoked before each wait
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 |
# File 'lib/aws-sdk-dynamodb/table.rb', line 468 def wait_until( = {}, &block) self_copy = self.dup attempts = 0 [:max_attempts] = 10 unless .key?(:max_attempts) [:delay] ||= 10 [:poller] = Proc.new do attempts += 1 if block.call(self_copy) [:success, self_copy] else self_copy.reload unless attempts == [:max_attempts] :retry end end Aws::Waiters::Waiter.new().wait({}) end |