[[aws-cw-component]]
= AWS CloudWatch Component
:page-source: components/camel-aws-cw/src/main/docs/aws-cw-component.adoc

*Available as of Camel version 2.11*

The CW component allows messages to be sent to an
https://aws.amazon.com/cloudwatch/[Amazon CloudWatch] metrics. The
implementation of the Amazon API is provided by
the https://aws.amazon.com/sdkforjava/[AWS SDK].

Prerequisites

You must have a valid Amazon Web Services developer account, and be
signed up to use Amazon CloudWatch. More information is available at
https://aws.amazon.com/cloudwatch/[Amazon CloudWatch].

== URI Format

[source,java]
----------------------------
aws-cw://namespace[?options]
----------------------------

The metrics will be created if they don't already exists. +
 You can append query options to the URI in the following format,
`?options=value&option2=value&...`

== URI Options


// component options: START
The AWS CloudWatch component supports 5 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (advanced) | The AWS CW default configuration |  | CwConfiguration
| *accessKey* (producer) | Amazon AWS Access Key |  | String
| *secretKey* (producer) | Amazon AWS Secret Key |  | String
| *region* (producer) | The region in which CW client needs to work |  | String
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END




// endpoint options: START
The AWS CloudWatch endpoint is configured using URI syntax:

----
aws-cw:namespace
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *namespace* | *Required* The metric namespace |  | String
|===


=== Query Parameters (13 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *amazonCwClient* (producer) | To use the AmazonCloudWatch as the client |  | AmazonCloudWatch
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *name* (producer) | The metric name |  | String
| *proxyHost* (producer) | To define a proxy host when instantiating the CW client |  | String
| *proxyPort* (producer) | To define a proxy port when instantiating the CW client |  | Integer
| *region* (producer) | The region in which CW client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() |  | String
| *timestamp* (producer) | The metric timestamp |  | Date
| *unit* (producer) | The metric unit |  | String
| *value* (producer) | The metric value |  | Double
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *accessKey* (security) | Amazon AWS Access Key |  | String
| *secretKey* (security) | Amazon AWS Secret Key |  | String
|===
// endpoint options: END
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-aws-cw-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 16 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.aws-cw.access-key* | Amazon AWS Access Key |  | String
| *camel.component.aws-cw.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.aws-cw.configuration.access-key* | Amazon AWS Access Key |  | String
| *camel.component.aws-cw.configuration.amazon-cw-client* | To use the AmazonCloudWatch as the client |  | AmazonCloudWatch
| *camel.component.aws-cw.configuration.name* | The metric name |  | String
| *camel.component.aws-cw.configuration.namespace* | The metric namespace |  | String
| *camel.component.aws-cw.configuration.proxy-host* | To define a proxy host when instantiating the CW client |  | String
| *camel.component.aws-cw.configuration.proxy-port* | To define a proxy port when instantiating the CW client |  | Integer
| *camel.component.aws-cw.configuration.region* | The region in which CW client needs to work. When using this parameter, the configuration will expect the capitalized name of the region (for example AP_EAST_1) You'll need to use the name Regions.EU_WEST_1.name() |  | String
| *camel.component.aws-cw.configuration.secret-key* | Amazon AWS Secret Key |  | String
| *camel.component.aws-cw.configuration.timestamp* | The metric timestamp |  | Date
| *camel.component.aws-cw.configuration.unit* | The metric unit |  | String
| *camel.component.aws-cw.configuration.value* | The metric value |  | Double
| *camel.component.aws-cw.enabled* | Whether to enable auto configuration of the aws-cw component. This is enabled by default. |  | Boolean
| *camel.component.aws-cw.region* | The region in which CW client needs to work |  | String
| *camel.component.aws-cw.secret-key* | Amazon AWS Secret Key |  | String
|===
// spring-boot-auto-configure options: END




Required CW component options

You have to provide the amazonCwClient in the
Registry or your accessKey and secretKey to access
the https://aws.amazon.com/cloudwatch/[Amazon's CloudWatch].

== Usage

=== Message headers evaluated by the CW producer

[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Header |Type |Description

|`CamelAwsCwMetricName` |`String` |The Amazon CW metric name.

|`CamelAwsCwMetricValue` |`Double` |The Amazon CW metric value.

|`CamelAwsCwMetricUnit` |`String` |The Amazon CW metric unit.

|`CamelAwsCwMetricNamespace` |`String` |The Amazon CW metric namespace.

|`CamelAwsCwMetricTimestamp` |`Date` |The Amazon CW metric timestamp.

|`CamelAwsCwMetricDimensionName` |`String` |The Amazon CW metric dimension name.

|`CamelAwsCwMetricDimensionValue` |`String` |The Amazon CW metric dimension value.

|`CamelAwsCwMetricDimensions` |`Map<String, String>` |A map of dimension names and dimension values.
|=======================================================================

=== Advanced AmazonCloudWatch configuration

If you need more control over the `AmazonCloudWatch` instance
configuration you can create your own instance and refer to it from the
URI:

[source,java]
-------------------------------------------------
from("direct:start")
.to("aws-cw://namespace?amazonCwClient=#client");
-------------------------------------------------

The `#client` refers to a `AmazonCloudWatch` in the
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);

AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);

registry.bind("client", client);
------------------------------------------------------------------------------------------

== Automatic detection of AmazonCloudWatch client in registry

The component is capable of detecting the presence of an AmazonCloudWatch bean into the registry.
If it's the only instance of that type it will be used as client and you won't have to define it as uri parameter.
This may be really useful for smarter configuration of the endpoint.

== 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-cw</artifactId>
    <version>${camel-version}</version>
</dependency>
---------------------------------------

where `${camel-version`} must be replaced by the actual version of Camel.

