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