[[aws-iam-component]]
= AWS Identity and Access Management (IAM) Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-aws-iam/src/main/docs/aws-iam-component.adoc
:docTitle: AWS Identity and Access Management (IAM)
:artifactId: camel-aws-iam
:description: Manage AWS IAM instances.
:since: 2.23
:supportLevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: AWS

*Since Camel {since}*

*{component-header}*

The KMS component supports create, run, start, stop and terminate
https://aws.amazon.com/iam/[AWS IAM] instances.

Prerequisites

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

== URI Format

[source,java]
-------------------------
aws-iam://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 Identity and Access Management (IAM) component supports 12 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking. | true | boolean
| *accessKey* (producer) | Amazon AWS Access Key |  | String
| *configuration* (producer) | The component configuration |  | IAMConfiguration
| *iamClient* (producer) | To use a existing configured AWS IAM as client |  | AmazonIdentityManagement
| *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. The value can be one of: listAccessKeys, createUser, deleteUser, getUser, listUsers, createAccessKey, deleteAccessKey, updateAccessKey, createGroup, deleteGroup, listGroups, addUserToGroup, removeUserFromGroup |  | IAMOperations
| *proxyHost* (producer) | To define a proxy host when instantiating the IAM client |  | String
| *proxyPort* (producer) | To define a proxy port when instantiating the IAM client |  | Integer
| *proxyProtocol* (producer) | To define a proxy protocol when instantiating the IAM client. The value can be one of: HTTP, HTTPS | HTTPS | Protocol
| *region* (producer) | The region in which IAM 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 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 Identity and Access Management (IAM) endpoint is configured using URI syntax:

----
aws-iam: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 (12 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *autoDiscoverClient* (common) | Setting the autoDiscoverClient mechanism, if true, the component will look for a client instance in the registry automatically otherwise it will skip that checking. | true | boolean
| *accessKey* (producer) | Amazon AWS Access Key |  | String
| *iamClient* (producer) | To use a existing configured AWS IAM as client |  | AmazonIdentityManagement
| *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. The value can be one of: listAccessKeys, createUser, deleteUser, getUser, listUsers, createAccessKey, deleteAccessKey, updateAccessKey, createGroup, deleteGroup, listGroups, addUserToGroup, removeUserFromGroup |  | IAMOperations
| *proxyHost* (producer) | To define a proxy host when instantiating the IAM client |  | String
| *proxyPort* (producer) | To define a proxy port when instantiating the IAM client |  | Integer
| *proxyProtocol* (producer) | To define a proxy protocol when instantiating the IAM client. The value can be one of: HTTP, HTTPS | HTTPS | Protocol
| *region* (producer) | The region in which IAM 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




Required IAM component options

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

== Usage

=== Message headers evaluated by the IAM producer

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

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

|`CamelAwsIAMUsername` |`String` |The username for the user you want to manage

|`CamelAwsIAMAccessKeyID` |`String` |The accessKey you want to manage

|`CamelAwsIAMAccessKeyStatus` |`String` |The Status of the AccessKey you want to set, possible value are active and inactive

|`CamelAwsIAMGroupName` |`String` |The name of an AWS IAM Group

|`CamelAwsIAMGroupPath` |`String` |The path of an AWS IAM Group
|=======================================================================

=== IAM Producer operations

Camel-AWS IAM component provides the following operation on the producer side:

- listAccessKeys
- createUser
- deleteUser
- listUsers
- getUser
- createAccessKey
- deleteAccessKey
- updateAccessKey
- createGroup
- deleteGroup
- listGroups
- addUserToGroup
- removeUserFromGroup

== Producer Examples

- createUser: this operation will create a user in IAM

[source,java]
--------------------------------------------------------------------------------
from("direct:createUser")
    .setHeader(IAMConstants.GROUP_NAME, constant("camel"))
    .to("aws-iam://test?iamClient=#amazonIAMClient&operation=createUser")
--------------------------------------------------------------------------------

== Automatic detection of AmazonIdentityManagement client in registry

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

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


include::camel-spring-boot::page$aws-iam-starter.adoc[]
