[[AWS-CW-CWComponent]]
CW Component
~~~~~~~~~~~~

*Available as of Camel 2.11

The CW component allows messages to be sent to an
http://aws.amazon.com/cloudwatch/[Amazon CloudWatch] metrics. The
implementation of the Amazon API is provided by
the http://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 are available at
http://aws.amazon.com/cloudwatch/[Amazon CloudWatch].

[[AWS-CW-URIFormat]]
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&...`

[[AWS-CW-URIOptions]]
URI Options
^^^^^^^^^^^
[width="100%",cols="10%,10%,10%,70%",options="header",]
|=======================================================================
|Name |Default Value |Context |Description

|amazonCwClient |`null` |Producer |Reference to a `com.amazonaws.services.cloudwatch.AmazonCloudWatch` in
the link:registry.html[Registry].

|accessKey |`null` |Producer |Amazon AWS Access Key

|secretKey |`null` |Producer |Amazon AWS Secret Key

|name |`null` |Producer |The metric name which is used if the message header
'CamelAwsCwMetricName' is not present.

|value |`1.0` |Producer |The metric value which is used if the message header
'CamelAwsCwMetricValue' is not present.

|unit |`Count` |Producer |The metric unit which is used if the message header
'CamelAwsCwMetricUnit' is not present.

|namespace |`null` |Producer |The metric namespace which is used if the message header
'CamelAwsCwMetricNamespace' is not present.

|timestamp |`null` |Producer |The metric timestamp which is used if the message header
'CamelAwsCwMetricTimestamp' is not present.

|amazonCwEndpoint |`null` |Producer |The region with which the AWS-CW client wants to work with.

|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 CW component options

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

[[AWS-CW-Usage]]
Usage
^^^^^

[[AWS-CW-MessageheadersevaluatedbytheCWproducer]]
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` |*Camel 2.12:* The Amazon CW metric dimension name.

|`CamelAwsCwMetricDimensionValue` |`String` |*Camel 2.12:* The Amazon CW metric dimension value.

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

[[AWS-CW-AdvancedAmazonCloudWatchconfiguration]]
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://namepsace?amazonCwClient=#client");
-------------------------------------------------

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

AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);

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

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

