{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.IAM.CreateRole
(
CreateRole (..),
newCreateRole,
createRole_description,
createRole_maxSessionDuration,
createRole_path,
createRole_permissionsBoundary,
createRole_tags,
createRole_roleName,
createRole_assumeRolePolicyDocument,
CreateRoleResponse (..),
newCreateRoleResponse,
createRoleResponse_httpStatus,
createRoleResponse_role,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IAM.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data CreateRole = CreateRole'
{
CreateRole -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
CreateRole -> Maybe Natural
maxSessionDuration :: Prelude.Maybe Prelude.Natural,
CreateRole -> Maybe Text
path :: Prelude.Maybe Prelude.Text,
CreateRole -> Maybe Text
permissionsBoundary :: Prelude.Maybe Prelude.Text,
CreateRole -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
CreateRole -> Text
roleName :: Prelude.Text,
CreateRole -> Text
assumeRolePolicyDocument :: Prelude.Text
}
deriving (CreateRole -> CreateRole -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRole -> CreateRole -> Bool
$c/= :: CreateRole -> CreateRole -> Bool
== :: CreateRole -> CreateRole -> Bool
$c== :: CreateRole -> CreateRole -> Bool
Prelude.Eq, ReadPrec [CreateRole]
ReadPrec CreateRole
Int -> ReadS CreateRole
ReadS [CreateRole]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRole]
$creadListPrec :: ReadPrec [CreateRole]
readPrec :: ReadPrec CreateRole
$creadPrec :: ReadPrec CreateRole
readList :: ReadS [CreateRole]
$creadList :: ReadS [CreateRole]
readsPrec :: Int -> ReadS CreateRole
$creadsPrec :: Int -> ReadS CreateRole
Prelude.Read, Int -> CreateRole -> ShowS
[CreateRole] -> ShowS
CreateRole -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRole] -> ShowS
$cshowList :: [CreateRole] -> ShowS
show :: CreateRole -> String
$cshow :: CreateRole -> String
showsPrec :: Int -> CreateRole -> ShowS
$cshowsPrec :: Int -> CreateRole -> ShowS
Prelude.Show, forall x. Rep CreateRole x -> CreateRole
forall x. CreateRole -> Rep CreateRole x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateRole x -> CreateRole
$cfrom :: forall x. CreateRole -> Rep CreateRole x
Prelude.Generic)
newCreateRole ::
Prelude.Text ->
Prelude.Text ->
CreateRole
newCreateRole :: Text -> Text -> CreateRole
newCreateRole Text
pRoleName_ Text
pAssumeRolePolicyDocument_ =
CreateRole'
{ $sel:description:CreateRole' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
$sel:maxSessionDuration:CreateRole' :: Maybe Natural
maxSessionDuration = forall a. Maybe a
Prelude.Nothing,
$sel:path:CreateRole' :: Maybe Text
path = forall a. Maybe a
Prelude.Nothing,
$sel:permissionsBoundary:CreateRole' :: Maybe Text
permissionsBoundary = forall a. Maybe a
Prelude.Nothing,
$sel:tags:CreateRole' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:roleName:CreateRole' :: Text
roleName = Text
pRoleName_,
$sel:assumeRolePolicyDocument:CreateRole' :: Text
assumeRolePolicyDocument =
Text
pAssumeRolePolicyDocument_
}
createRole_description :: Lens.Lens' CreateRole (Prelude.Maybe Prelude.Text)
createRole_description :: Lens' CreateRole (Maybe Text)
createRole_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Maybe Text
description :: Maybe Text
$sel:description:CreateRole' :: CreateRole -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateRole
s@CreateRole' {} Maybe Text
a -> CreateRole
s {$sel:description:CreateRole' :: Maybe Text
description = Maybe Text
a} :: CreateRole)
createRole_maxSessionDuration :: Lens.Lens' CreateRole (Prelude.Maybe Prelude.Natural)
createRole_maxSessionDuration :: Lens' CreateRole (Maybe Natural)
createRole_maxSessionDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Maybe Natural
maxSessionDuration :: Maybe Natural
$sel:maxSessionDuration:CreateRole' :: CreateRole -> Maybe Natural
maxSessionDuration} -> Maybe Natural
maxSessionDuration) (\s :: CreateRole
s@CreateRole' {} Maybe Natural
a -> CreateRole
s {$sel:maxSessionDuration:CreateRole' :: Maybe Natural
maxSessionDuration = Maybe Natural
a} :: CreateRole)
createRole_path :: Lens.Lens' CreateRole (Prelude.Maybe Prelude.Text)
createRole_path :: Lens' CreateRole (Maybe Text)
createRole_path = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Maybe Text
path :: Maybe Text
$sel:path:CreateRole' :: CreateRole -> Maybe Text
path} -> Maybe Text
path) (\s :: CreateRole
s@CreateRole' {} Maybe Text
a -> CreateRole
s {$sel:path:CreateRole' :: Maybe Text
path = Maybe Text
a} :: CreateRole)
createRole_permissionsBoundary :: Lens.Lens' CreateRole (Prelude.Maybe Prelude.Text)
createRole_permissionsBoundary :: Lens' CreateRole (Maybe Text)
createRole_permissionsBoundary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Maybe Text
permissionsBoundary :: Maybe Text
$sel:permissionsBoundary:CreateRole' :: CreateRole -> Maybe Text
permissionsBoundary} -> Maybe Text
permissionsBoundary) (\s :: CreateRole
s@CreateRole' {} Maybe Text
a -> CreateRole
s {$sel:permissionsBoundary:CreateRole' :: Maybe Text
permissionsBoundary = Maybe Text
a} :: CreateRole)
createRole_tags :: Lens.Lens' CreateRole (Prelude.Maybe [Tag])
createRole_tags :: Lens' CreateRole (Maybe [Tag])
createRole_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateRole' :: CreateRole -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateRole
s@CreateRole' {} Maybe [Tag]
a -> CreateRole
s {$sel:tags:CreateRole' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateRole) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
createRole_roleName :: Lens.Lens' CreateRole Prelude.Text
createRole_roleName :: Lens' CreateRole Text
createRole_roleName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Text
roleName :: Text
$sel:roleName:CreateRole' :: CreateRole -> Text
roleName} -> Text
roleName) (\s :: CreateRole
s@CreateRole' {} Text
a -> CreateRole
s {$sel:roleName:CreateRole' :: Text
roleName = Text
a} :: CreateRole)
createRole_assumeRolePolicyDocument :: Lens.Lens' CreateRole Prelude.Text
createRole_assumeRolePolicyDocument :: Lens' CreateRole Text
createRole_assumeRolePolicyDocument = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRole' {Text
assumeRolePolicyDocument :: Text
$sel:assumeRolePolicyDocument:CreateRole' :: CreateRole -> Text
assumeRolePolicyDocument} -> Text
assumeRolePolicyDocument) (\s :: CreateRole
s@CreateRole' {} Text
a -> CreateRole
s {$sel:assumeRolePolicyDocument:CreateRole' :: Text
assumeRolePolicyDocument = Text
a} :: CreateRole)
instance Core.AWSRequest CreateRole where
type AWSResponse CreateRole = CreateRoleResponse
request :: (Service -> Service) -> CreateRole -> Request CreateRole
request Service -> Service
overrides =
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateRole
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateRole)))
response =
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
-> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
Text
"CreateRoleResult"
( \Int
s ResponseHeaders
h [Node]
x ->
Int -> Role -> CreateRoleResponse
CreateRoleResponse'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Role")
)
instance Prelude.Hashable CreateRole where
hashWithSalt :: Int -> CreateRole -> Int
hashWithSalt Int
_salt CreateRole' {Maybe Natural
Maybe [Tag]
Maybe Text
Text
assumeRolePolicyDocument :: Text
roleName :: Text
tags :: Maybe [Tag]
permissionsBoundary :: Maybe Text
path :: Maybe Text
maxSessionDuration :: Maybe Natural
description :: Maybe Text
$sel:assumeRolePolicyDocument:CreateRole' :: CreateRole -> Text
$sel:roleName:CreateRole' :: CreateRole -> Text
$sel:tags:CreateRole' :: CreateRole -> Maybe [Tag]
$sel:permissionsBoundary:CreateRole' :: CreateRole -> Maybe Text
$sel:path:CreateRole' :: CreateRole -> Maybe Text
$sel:maxSessionDuration:CreateRole' :: CreateRole -> Maybe Natural
$sel:description:CreateRole' :: CreateRole -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxSessionDuration
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
path
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
permissionsBoundary
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleName
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assumeRolePolicyDocument
instance Prelude.NFData CreateRole where
rnf :: CreateRole -> ()
rnf CreateRole' {Maybe Natural
Maybe [Tag]
Maybe Text
Text
assumeRolePolicyDocument :: Text
roleName :: Text
tags :: Maybe [Tag]
permissionsBoundary :: Maybe Text
path :: Maybe Text
maxSessionDuration :: Maybe Natural
description :: Maybe Text
$sel:assumeRolePolicyDocument:CreateRole' :: CreateRole -> Text
$sel:roleName:CreateRole' :: CreateRole -> Text
$sel:tags:CreateRole' :: CreateRole -> Maybe [Tag]
$sel:permissionsBoundary:CreateRole' :: CreateRole -> Maybe Text
$sel:path:CreateRole' :: CreateRole -> Maybe Text
$sel:maxSessionDuration:CreateRole' :: CreateRole -> Maybe Natural
$sel:description:CreateRole' :: CreateRole -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxSessionDuration
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
path
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
permissionsBoundary
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleName
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assumeRolePolicyDocument
instance Data.ToHeaders CreateRole where
toHeaders :: CreateRole -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
instance Data.ToPath CreateRole where
toPath :: CreateRole -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"
instance Data.ToQuery CreateRole where
toQuery :: CreateRole -> QueryString
toQuery CreateRole' {Maybe Natural
Maybe [Tag]
Maybe Text
Text
assumeRolePolicyDocument :: Text
roleName :: Text
tags :: Maybe [Tag]
permissionsBoundary :: Maybe Text
path :: Maybe Text
maxSessionDuration :: Maybe Natural
description :: Maybe Text
$sel:assumeRolePolicyDocument:CreateRole' :: CreateRole -> Text
$sel:roleName:CreateRole' :: CreateRole -> Text
$sel:tags:CreateRole' :: CreateRole -> Maybe [Tag]
$sel:permissionsBoundary:CreateRole' :: CreateRole -> Maybe Text
$sel:path:CreateRole' :: CreateRole -> Maybe Text
$sel:maxSessionDuration:CreateRole' :: CreateRole -> Maybe Natural
$sel:description:CreateRole' :: CreateRole -> Maybe Text
..} =
forall a. Monoid a => [a] -> a
Prelude.mconcat
[ ByteString
"Action"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateRole" :: Prelude.ByteString),
ByteString
"Version"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-05-08" :: Prelude.ByteString),
ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
ByteString
"MaxSessionDuration" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxSessionDuration,
ByteString
"Path" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
path,
ByteString
"PermissionsBoundary" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
permissionsBoundary,
ByteString
"Tags"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
(forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
ByteString
"RoleName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
roleName,
ByteString
"AssumeRolePolicyDocument"
forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
assumeRolePolicyDocument
]
data CreateRoleResponse = CreateRoleResponse'
{
CreateRoleResponse -> Int
httpStatus :: Prelude.Int,
CreateRoleResponse -> Role
role' :: Role
}
deriving (CreateRoleResponse -> CreateRoleResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateRoleResponse -> CreateRoleResponse -> Bool
$c/= :: CreateRoleResponse -> CreateRoleResponse -> Bool
== :: CreateRoleResponse -> CreateRoleResponse -> Bool
$c== :: CreateRoleResponse -> CreateRoleResponse -> Bool
Prelude.Eq, ReadPrec [CreateRoleResponse]
ReadPrec CreateRoleResponse
Int -> ReadS CreateRoleResponse
ReadS [CreateRoleResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateRoleResponse]
$creadListPrec :: ReadPrec [CreateRoleResponse]
readPrec :: ReadPrec CreateRoleResponse
$creadPrec :: ReadPrec CreateRoleResponse
readList :: ReadS [CreateRoleResponse]
$creadList :: ReadS [CreateRoleResponse]
readsPrec :: Int -> ReadS CreateRoleResponse
$creadsPrec :: Int -> ReadS CreateRoleResponse
Prelude.Read, Int -> CreateRoleResponse -> ShowS
[CreateRoleResponse] -> ShowS
CreateRoleResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateRoleResponse] -> ShowS
$cshowList :: [CreateRoleResponse] -> ShowS
show :: CreateRoleResponse -> String
$cshow :: CreateRoleResponse -> String
showsPrec :: Int -> CreateRoleResponse -> ShowS
$cshowsPrec :: Int -> CreateRoleResponse -> ShowS
Prelude.Show, forall x. Rep CreateRoleResponse x -> CreateRoleResponse
forall x. CreateRoleResponse -> Rep CreateRoleResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateRoleResponse x -> CreateRoleResponse
$cfrom :: forall x. CreateRoleResponse -> Rep CreateRoleResponse x
Prelude.Generic)
newCreateRoleResponse ::
Prelude.Int ->
Role ->
CreateRoleResponse
newCreateRoleResponse :: Int -> Role -> CreateRoleResponse
newCreateRoleResponse Int
pHttpStatus_ Role
pRole_ =
CreateRoleResponse'
{ $sel:httpStatus:CreateRoleResponse' :: Int
httpStatus = Int
pHttpStatus_,
$sel:role':CreateRoleResponse' :: Role
role' = Role
pRole_
}
createRoleResponse_httpStatus :: Lens.Lens' CreateRoleResponse Prelude.Int
createRoleResponse_httpStatus :: Lens' CreateRoleResponse Int
createRoleResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRoleResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateRoleResponse' :: CreateRoleResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateRoleResponse
s@CreateRoleResponse' {} Int
a -> CreateRoleResponse
s {$sel:httpStatus:CreateRoleResponse' :: Int
httpStatus = Int
a} :: CreateRoleResponse)
createRoleResponse_role :: Lens.Lens' CreateRoleResponse Role
createRoleResponse_role :: Lens' CreateRoleResponse Role
createRoleResponse_role = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateRoleResponse' {Role
role' :: Role
$sel:role':CreateRoleResponse' :: CreateRoleResponse -> Role
role'} -> Role
role') (\s :: CreateRoleResponse
s@CreateRoleResponse' {} Role
a -> CreateRoleResponse
s {$sel:role':CreateRoleResponse' :: Role
role' = Role
a} :: CreateRoleResponse)
instance Prelude.NFData CreateRoleResponse where
rnf :: CreateRoleResponse -> ()
rnf CreateRoleResponse' {Int
Role
role' :: Role
httpStatus :: Int
$sel:role':CreateRoleResponse' :: CreateRoleResponse -> Role
$sel:httpStatus:CreateRoleResponse' :: CreateRoleResponse -> Int
..} =
forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Role
role'