| [[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] |
| |