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

*Since Camel {since}*

*{component-header}*

The AWS2 IAM 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].

[NOTE]
====
The AWS2 IAM component is not supported in OSGI
====

== URI Format

[source,java]
-------------------------
aws2-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 2 Identity and Access Management (IAM) component supports 14 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
| *configuration* (producer) | Component configuration |  | IAM2Configuration
| *iamClient* (producer) | To use a existing configured AWS IAM as client |  | IamClient
| *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 |  | IAM2Operations
| *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
| *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 lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | aws-global | String
| *trustAllCertificates* (producer) | If we want to trust all certificates in case of overriding the endpoint | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *accessKey* (security) | Amazon AWS Access Key |  | String
| *secretKey* (security) | Amazon AWS Secret Key |  | String
|===
// component options: END




// endpoint options: START
The AWS 2 Identity and Access Management (IAM) endpoint is configured using URI syntax:

----
aws2-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 (14 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
| *iamClient* (producer) | To use a existing configured AWS IAM as client |  | IamClient
| *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 |  | IAM2Operations
| *pojoRequest* (producer) | If we want to use a POJO request as body or not | false | boolean
| *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 lowercase name of the region (for example ap-east-1) You'll need to use the name Region.EU_WEST_1.id() | aws-global | String
| *trustAllCertificates* (producer) | If we want to trust all certificates in case of overriding the endpoint | false | boolean
| *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




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
|=======================================================================

[NOTE]
====
The AWS2 IAM component works on the aws-global region and it has aws-global as default region
====

=== IAM Producer operations

Camel-AWS2 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(IAM2Constants.USERNAME, constant("camel"))
    .to("aws2-iam://test?iamClient=#amazonIAMClient&operation=createUser")
--------------------------------------------------------------------------------

- deleteUser: this operation will delete a user in IAM

[source,java]
--------------------------------------------------------------------------------
from("direct:deleteUser")
    .setHeader(IAM2Constants.USERNAME, constant("camel"))
    .to("aws2-iam://test?iamClient=#amazonIAMClient&operation=deleteUser")
--------------------------------------------------------------------------------

- listUsers: this operation will list the users in IAM

[source,java]
--------------------------------------------------------------------------------
from("direct:listUsers")
    .to("aws2-iam://test?iamClient=#amazonIAMClient&operation=listUsers")
--------------------------------------------------------------------------------

- createGroup: this operation will add a group in IAM

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

- deleteGroup: this operation will delete a group in IAM

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

- listGroups: this operation will list the groups in IAM

[source,java]
--------------------------------------------------------------------------------
from("direct:listUsers")
    .to("aws2-iam://test?iamClient=#amazonIAMClient&operation=listGroups")
--------------------------------------------------------------------------------

== Automatic detection of IamClient client in registry

The component is capable of detecting the presence of an IamClient 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.

== Using a POJO as body

Sometimes build an AWS Request can be complex, because of multiple options. We introduce the possibility to use a POJO as body.
In AWS IAM there are multiple operations you can submit, as an example for Create User request, you can do something like:

------------------------------------------------------------------------------------------------------
from("direct:createUser")
     .setBody(CreateUserRequest.builder().userName("camel").build())
    .to("aws2-iam://test?iamClient=#amazonIAMClient&operation=createUser&pojoRequest=true")
------------------------------------------------------------------------------------------------------

In this way you'll pass the request directly without the need of passing headers and options specifically related to this operation.

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

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

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