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

*Available as of Camel version 2.16*

The EC2 component supports the ability to create, run, start, stop and terminate
https://aws.amazon.com/ec2/[AWS EC2] instances.

Prerequisites

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

== URI Format

[source,java]
-------------------------
aws-ec2://label[?options]
-------------------------

You can append query options to the URI in the following format,
?options=value&option2=value&...

== URI Options


// component options: START
The AWS EC2 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 EC2 default configuration |  | EC2Configuration
| *region* (producer) | The region in which EC2 client needs to work |  | String
| *accessKey* (producer) | Amazon AWS Access Key |  | String
| *secretKey* (producer) | Amazon AWS Secret Key |  | 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 EC2 endpoint is configured using URI syntax:

----
aws-ec2:label
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *label* | *Required* Logical name |  | String
|===


=== Query Parameters (10 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *accessKey* (producer) | Amazon AWS Access Key |  | String
| *amazonEc2Client* (producer) | To use a existing configured AmazonEC2Client as client |  | AmazonEC2
| *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
| *operation* (producer) | *Required* The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags |  | EC2Operations
| *proxyHost* (producer) | To define a proxy host when instantiating the EC2 client |  | String
| *proxyPort* (producer) | To define a proxy port when instantiating the EC2 client |  | Integer
| *region* (producer) | The region in which EC2 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
| *secretKey* (producer) | Amazon AWS Secret Key |  | String
| *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
|===
// 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-ec2-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 12 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.aws-ec2.access-key* | Amazon AWS Access Key |  | String
| *camel.component.aws-ec2.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-ec2.configuration.access-key* | Amazon AWS Access Key |  | String
| *camel.component.aws-ec2.configuration.amazon-ec2-client* | To use a existing configured AmazonEC2Client as client |  | AmazonEC2
| *camel.component.aws-ec2.configuration.operation* | The operation to perform. It can be createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstancesStatus, rebootInstances, monitorInstances, unmonitorInstances, createTags or deleteTags |  | EC2Operations
| *camel.component.aws-ec2.configuration.proxy-host* | To define a proxy host when instantiating the EC2 client |  | String
| *camel.component.aws-ec2.configuration.proxy-port* | To define a proxy port when instantiating the EC2 client |  | Integer
| *camel.component.aws-ec2.configuration.region* | The region in which EC2 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-ec2.configuration.secret-key* | Amazon AWS Secret Key |  | String
| *camel.component.aws-ec2.enabled* | Whether to enable auto configuration of the aws-ec2 component. This is enabled by default. |  | Boolean
| *camel.component.aws-ec2.region* | The region in which EC2 client needs to work |  | String
| *camel.component.aws-ec2.secret-key* | Amazon AWS Secret Key |  | String
|===
// spring-boot-auto-configure options: END




Required EC2 component options

You have to provide the amazonEc2Client in the
Registry or your accessKey and secretKey to access
the https://aws.amazon.com/ec2/[Amazon EC2] service.

== Usage

=== Message headers evaluated by the EC2 producer

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

|`CamelAwsEC2ImageId` |`String` |An image ID of the AWS marketplace

|`CamelAwsEC2InstanceType` |com.amazonaws.services.ec2.model.InstanceType |The instance type we want to create and run

|`CamelAwsEC2Operation` |`String` |The operation we want to perform

|`CamelAwsEC2InstanceMinCount` |`Int` |The mininum number of instances we want to run.

|`CamelAwsEC2InstanceMaxCount` |`Int` |The maximum number of instances we want to run.

|`CamelAwsEC2InstanceMonitoring` |Boolean |Define if we want the running instances to be monitored

|`CamelAwsEC2InstanceEbsOptimized` |`Boolean` |Define if the creating instance is optimized for EBS I/O.

|`CamelAwsEC2InstanceSecurityGroups` |Collection |The security groups to associate to the instances

|`CamelAwsEC2InstancesIds` |`Collection` |A collection of instances IDS to execute start, stop, describe and
terminate operations on.

|`CamelAwsEC2InstancesTags` |`Collection` |A collection of tags to add or remove from EC2 resources
|=======================================================================

== Supported producer operations

- createAndRunInstances
- startInstances
- stopInstances
- terminateInstances
- describeInstances
- describeInstancesStatus
- rebootInstances
- monitorInstances
- unmonitorInstances
- createTags
- deleteTags

== Producer Examples

- createAndRunInstances: this operation will create an EC2 instance and run it

[source,java]
--------------------------------------------------------------------------------
from("direct:createAndRun")
     .setHeader(EC2Constants.IMAGE_ID, constant("ami-fd65ba94"))
     .setHeader(EC2Constants.INSTANCE_TYPE, constant(InstanceType.T2Micro))
     .setHeader(EC2Constants.INSTANCE_MIN_COUNT, constant("1"))
     .setHeader(EC2Constants.INSTANCE_MAX_COUNT, constant("1"))
     .to("aws-ec2://TestDomain?accessKey=xxxx&secretKey=xxxx&operation=createAndRunInstances");
--------------------------------------------------------------------------------

== Automatic detection of AmazonEC2 client in registry

The component is capable of detecting the presence of an AmazonEC2 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-ec2</artifactId>
    <version>${camel-version}</version>
</dependency>
---------------------------------------

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

