blob: ff3a1f172fea19a2afd6632d05978aab3ffc340d [file] [log] [blame]
[[AWS-DDB-DDBComponent]]
DDB Component
~~~~~~~~~~~~~
*Available as of Camel 2.10*
The DynamoDB component supports storing and retrieving data from/to
http://aws.amazon.com/dynamodb[Amazon's DynamoDB] service.
Prerequisites
You must have a valid Amazon Web Services developer account, and be
signed up to use Amazon DynamoDB. More information are available at
http://aws.amazon.com/dynamodb[Amazon DynamoDB].
[[AWS-DDB-URIFormat]]
URI Format
^^^^^^^^^^
[source,java]
------------------------------
aws-ddb://domainName[?options]
------------------------------
You can append query options to the URI in the following format,
?options=value&option2=value&...
[[AWS-DDB-URIOptions]]
URI Options
^^^^^^^^^^^
[width="100%",cols="10%,10%,10%,70%",options="header",]
|=======================================================================
|Name |Default Value |Context |Description
|amazonDDBClient |`null` |Producer |Reference to a `com.amazonaws.services.dynamodb.AmazonDynamoDB` in the
link:registry.html[Registry].
|accessKey |`null` |Producer |Amazon AWS Access Key
|secretKey |`null` |Producer |Amazon AWS Secret Key
|amazonDdbEndpoint |`null` |Producer |The region with which the AWS-DDB client wants to work with.
|tableName |`null` |Producer |The name of the table currently worked with.
|readCapacity |`0` |Producer |The provisioned throughput to reserve for reading resources from your
table
|writeCapacity |`0` |Producer |The provisioned throughput to reserved for writing resources to your
table
|consistentRead |`false` |Producer |Determines whether or not strong consistency should be enforced when
data is read.
|operation |`PutAttributes` |Producer |Valid values are BatchGetItems, DeleteItem, DeleteTable, DescribeTable,
GetItem, PutItem, Query, Scan, UpdateItem, UpdateTable.
|proxyHost |`null` |Producer |*Camel 2.16*: Specify a proxy host to be used inside the client
definition.
|proxyPort |`null` |Producer |*Camel 2.16*: Specify a proxy port to be used inside the client
definition.
|=======================================================================
Required DDB component options
You have to provide the amazonDDBClient in the
link:registry.html[Registry] or your accessKey and secretKey to access
the http://aws.amazon.com/dynamodb[Amazon's DynamoDB].
[[AWS-DDB-Usage]]
Usage
^^^^^
[[AWS-DDB-MessageheadersevaluatedbytheDDBproducer]]
Message headers evaluated by the DDB producer
+++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbBatchItems` |`Map<String, KeysAndAttributes>` |A map of the table name and corresponding items to get by primary key.
|`CamelAwsDdbTableName` |`String` |Table Name for this operation.
|`CamelAwsDdbKey` |`Key` |The primary key that uniquely identifies each item in a table. *From Camel 2.16.0 the type of this header is Map<String,
AttributeValue> and not Key*
|`CamelAwsDdbReturnValues` |`String` |Use this parameter if you want to get the attribute name-value pairs
before or after they are modified(NONE, ALL_OLD, UPDATED_OLD, ALL_NEW,
UPDATED_NEW).
|`CamelAwsDdbUpdateCondition` |`Map<String, ExpectedAttributeValue>` |Designates an attribute for a conditional modification.
|`CamelAwsDdbAttributeNames` |`Collection<String>` |If attribute names are not specified then all attributes will be
returned.
|`CamelAwsDdbConsistentRead` |`Boolean` |If set to true, then a consistent read is issued, otherwise eventually
consistent is used.
|`CamelAwsDdbItem` |`Map<String, AttributeValue>` |A map of the attributes for the item, and must include the primary key
values that define the item.
|`CamelAwsDdbExactCount` |`Boolean` |If set to true, Amazon DynamoDB returns a total number of items that
match the query parameters, instead of a list of the matching items and
their attributes. *From Camel 2.16.0 this header doesn't exist anymore.*
|`CamelAwsDdbKeyConditions` |`Map<String, Condition>` |*From Camel 2.16.0*. This header specify the selection criteria for the
query, and merge together the two old headers *CamelAwsDdbHashKeyValue*
and *CamelAwsDdbScanRangeKeyCondition*
|`CamelAwsDdbStartKey` |`Key` |Primary key of the item from which to continue an earlier query.
|`CamelAwsDdbHashKeyValue` |`AttributeValue` |Value of the hash component of the composite primary key.
*From Camel 2.16.0 this header doesn't exist anymore.*
|`CamelAwsDdbLimit` |`Integer` |The maximum number of items to return.
|`CamelAwsDdbScanRangeKeyCondition` |`Condition` |A container for the attribute values and comparison operators to use for
the query.*From Camel 2.16.0 this header doesn't exist anymore.*
|`CamelAwsDdbScanIndexForward` |`Boolean` |Specifies forward or backward traversal of the index.
|`CamelAwsDdbScanFilter` |`Map<String, Condition>` |Evaluates the scan results and returns only the desired values.
|`CamelAwsDdbUpdateValues` |`Map<String, AttributeValueUpdate>` |Map of attribute name to the new value and action for the update.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringBatchGetItemsoperation]]
Message headers set during BatchGetItems operation
++++++++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbBatchResponse` |`Map<String,BatchResponse>` |Table names and the respective item attributes from the tables.
|`CamelAwsDdbUnprocessedKeys` |`Map<String,KeysAndAttributes>` |Contains a map of tables and their respective keys that were not
processed with the current response.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringDeleteItemoperation]]
Message headers set during DeleteItem operation
+++++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringDeleteTableoperation]]
Message headers set during DeleteTable operation
++++++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbProvisionedThroughput`| |
|`ProvisionedThroughputDescription` | |The value of the ProvisionedThroughput property for this table
|`CamelAwsDdbCreationDate` |`Date` |Creation DateTime of this table.
|`CamelAwsDdbTableItemCount` |`Long` |Item count for this table.
|`CamelAwsDdbKeySchema` |`KeySchema` |The KeySchema that identifies the primary key for this table.
*From Camel 2.16.0 the type of this header is List<KeySchemaElement> and not KeySchema*
|`CamelAwsDdbTableName` |`String` |The table name.
|`CamelAwsDdbTableSize` |`Long` |The table size in bytes.
|`CamelAwsDdbTableStatus` |`String` |The status of the table: CREATING, UPDATING, DELETING, ACTIVE
|=======================================================================
[[AWS-DDB-MessageheaderssetduringDescribeTableoperation]]
Message headers set during DescribeTable operation
++++++++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbProvisionedThroughput` |{{ProvisionedThroughputDescription}} |The value of the ProvisionedThroughput property for this table
|`CamelAwsDdbCreationDate` |`Date` |Creation DateTime of this table.
|`CamelAwsDdbTableItemCount` |`Long` |Item count for this table.
|`CamelAwsDdbKeySchema` |{{KeySchema}} |The KeySchema that identifies the primary key for this table.
*From Camel 2.16.0 the type of this header is List<KeySchemaElement> and
not KeySchema*
|`CamelAwsDdbTableName` |`String` |The table name.
|`CamelAwsDdbTableSize` |`Long` |The table size in bytes.
|`CamelAwsDdbTableStatus` |`String` |The status of the table: CREATING, UPDATING, DELETING, ACTIVE
|`CamelAwsDdbReadCapacity` |`Long` |ReadCapacityUnits property of this table.
|`CamelAwsDdbWriteCapacity` |`Long` |WriteCapacityUnits property of this table.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringGetItemoperation]]
Message headers set during GetItem operation
++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringPutItemoperation]]
Message headers set during PutItem operation
++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringQueryoperation]]
Message headers set during Query operation
++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbItems` |`List<java.util.Map<String,AttributeValue>>` |The list of attributes returned by the operation.
|`CamelAwsDdbLastEvaluatedKey` |`Key` |Primary key of the item where the query operation stopped, inclusive of
the previous result set.
|`CamelAwsDdbConsumedCapacity` |`Double` |The number of Capacity Units of the provisioned throughput of the table
consumed during the operation.
|`CamelAwsDdbCount` |`Integer` |Number of items in the response.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringScanoperation]]
Message headers set during Scan operation
+++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbItems` |`List<java.util.Map<String,AttributeValue>>` |The list of attributes returned by the operation.
|`CamelAwsDdbLastEvaluatedKey` |`Key` |Primary key of the item where the query operation stopped, inclusive of
the previous result set.
|`CamelAwsDdbConsumedCapacity` |`Double` |The number of Capacity Units of the provisioned throughput of the table
consumed during the operation.
|`CamelAwsDdbCount` |`Integer` |Number of items in the response.
|`CamelAwsDdbScannedCount` |`Integer` |Number of items in the complete scan before any filters are applied.
|=======================================================================
[[AWS-DDB-MessageheaderssetduringUpdateItemoperation]]
Message headers set during UpdateItem operation
+++++++++++++++++++++++++++++++++++++++++++++++
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description
|`CamelAwsDdbAttributes` |`Map<String, AttributeValue>` |The list of attributes returned by the operation.
|=======================================================================
[[AWS-DDB-AdvancedAmazonDynamoDBconfiguration]]
Advanced AmazonDynamoDB configuration
+++++++++++++++++++++++++++++++++++++
If you need more control over the `AmazonDynamoDB` instance
configuration you can create your own instance and refer to it from the
URI:
[source,java]
----------------------------------------------------
from("direct:start")
.to("aws-ddb://domainName?amazonDDBClient=#client");
----------------------------------------------------
The `#client` refers to a `AmazonDynamoDB` in the
link:registry.html[Registry].
For example if your Camel Application is running behind a firewall:
[source,java]
--------------------------------------------------------------------------------------
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonDynamoDB client = new AmazonDynamoDBClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
--------------------------------------------------------------------------------------
[[AWS-DDB-Dependencies]]
Dependencies
^^^^^^^^^^^^
Maven users will need to add the following dependency to their pom.xml.
*pom.xml*
[source,xml]
---------------------------------------
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
---------------------------------------
where `${camel-version`} must be replaced by the actual version of Camel
(2.10 or higher).
[[AWS-DDB-SeeAlso]]
See Also
^^^^^^^^
* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]
* link:aws.html[AWS Component]