blob: 8b023eedd6d3ec64fc212fbefa69df448300bdc6 [file] [log] [blame]
= AWS RedshiftData Component
:doctitle: AWS RedshiftData
:shortname: aws2-redshift-data
:artifactid: camel-aws2-redshift
:description: Perform operations on AWS Redshift using Redshift Data API.
:since: 4.1
:supportlevel: Stable
:tabs-sync-option:
:component-header: Only producer is supported
//Manually maintained attributes
:group: AWS
:camel-spring-boot-name: aws2-redshift
*Since Camel {since}*
*{component-header}*
The AWS2 Redshift Data component supports following operations on
https://aws.amazon.com/redshift/[AWS Redshift]:
- listDatabases, listSchemas, listStatements, listTables, describeTable, executeStatement, batchExecuteStatement, cancelStatement, describeStatement, getStatementResult
Prerequisites
You must have a valid Amazon Web Services developer account, and be
signed up to use Amazon Redshift. More information is available at
https://aws.amazon.com/redshift/[AWS Redshift].
== URI Format
-------------------------
aws2-redshift-data://label[?options]
-------------------------
You can append query options to the URI in the following format,
?options=value&option2=value&...
// component-configure options: START
// component-configure options: END
// component options: START
include::partial$component-configure-options.adoc[]
include::partial$component-endpoint-options.adoc[]
// component options: END
// endpoint options: START
// endpoint options: END
Required Redshift Data component options
You have to provide the awsRedshiftDataClient in the
Registry or your accessKey and secretKey to access
the https://aws.amazon.com/redshift/[AWS Redshift] service.
== Usage
=== Static credentials, Default Credential Provider and Profile Credentials Provider
You have the possibility of avoiding the usage of explicit static credentials, by specifying the useDefaultCredentialsProvider option and set it to true.
The order of evaluation for Default Credentials Provider is the following:
- Java system properties - aws.accessKeyId and aws.secretKey
- Environment variables - AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.
- Web Identity Token from AWS STS.
- The shared credentials and config files.
- Amazon ECS container credentials - loaded from the Amazon ECS if the environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is set.
- Amazon EC2 Instance profile credentials.
You have also the possibility of using Profile Credentials Provider, by specifying the useProfileCredentialsProvider option to true and profileCredentialsName to the profile name.
Only one of static, default and profile credentials could be used at the same time.
For more information about this you can look at https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html[AWS credentials documentation]
// component headers: START
include::partial$component-endpoint-headers.adoc[]
// component headers: END
=== Redshift Producer operations
Camel-AWS Redshift Data component provides the following operation on the producer side:
- listDatabases
- listSchemas
- listStatements
- listTables
- describeTable
- executeStatement
- batchExecuteStatement
- cancelStatement
- describeStatement
- getStatementResult
== Producer Examples
- listDatabases: this operation will list redshift databases
[source,java]
--------------------------------------------------------------------------------
from("direct:listDatabases")
.to("aws2-redshift-data://test?awsRedshiftDataClient=#awsRedshiftDataClient&operation=listDatabases")
--------------------------------------------------------------------------------
== Using a POJO as body
Sometimes build an AWS Request can be complex, because of multiple options. We introduce the possibility to use a POJO as body.
In AWS Redshift Data there are multiple operations you can submit, as an example for List Databases
request, you can do something like:
[source,java]
------------------------------------------------------------------------------------------------------
from("direct:start")
.setBody(ListDatabases.builder().database("database1").build())
.to("aws2-redshift-data://test?awsRedshiftDataClient=#awsRedshiftDataClient&operation=listDatabases&pojoRequest=true")
------------------------------------------------------------------------------------------------------
In this way you'll pass the request directly without the need of passing headers and options specifically related to this operation.
== 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-redshift-data</artifactId>
<version>${camel-version}</version>
</dependency>
---------------------------------------
where `$\{camel-version}` must be replaced by the actual version of Camel.
include::spring-boot:partial$starter.adoc[]