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


// component options: START
The AWS CloudWatch component has no options.
// component options: END




// endpoint options: START
The AWS CloudWatch component supports 12 endpoint options which are listed below:

{% raw %}
[width="100%",cols="2,1,1m,1m,5",options="header"]
|=======================================================================
| Name | Group | Default | Java Type | Description
| namespace | producer |  | String | *Required* The metric namespace
| accessKey | producer |  | String | Amazon AWS Access Key
| amazonCwClient | producer |  | AmazonCloudWatch | To use the AmazonCloudWatch as the client
| amazonCwEndpoint | producer |  | String | The region with which the AWS-CW client wants to work with.
| name | producer |  | String | The metric name
| proxyHost | producer |  | String | To define a proxy host when instantiating the SQS client
| proxyPort | producer |  | Integer | To define a proxy port when instantiating the SQS client
| secretKey | producer |  | String | Amazon AWS Secret Key
| timestamp | producer |  | Date | The metric timestamp
| unit | producer |  | String | The metric unit
| value | producer |  | Double | The metric value
| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
|=======================================================================
{% endraw %}
// endpoint options: END



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]

