{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html module Stratosphere.Resources.IAMRole where import Control.Lens import Data.Aeson import Data.Aeson.Types import Data.Text import GHC.Generics import Stratosphere.Values import Stratosphere.ResourceProperties.IAMRolePolicy -- | Full data type definition for IAMRole. See 'iamRole' for a more -- | convenient constructor. data IAMRole = IAMRole { _iAMRoleAssumeRolePolicyDocument :: Object , _iAMRoleManagedPolicyArns :: Maybe [Val Text] , _iAMRolePath :: Maybe (Val Text) , _iAMRolePolicies :: Maybe [IAMRolePolicy] , _iAMRoleRoleName :: Maybe (Val Text) } deriving (Show, Generic) instance ToJSON IAMRole where toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 8, omitNothingFields = True } instance FromJSON IAMRole where parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 8, omitNothingFields = True } -- | Constructor for 'IAMRole' containing required fields as arguments. iamRole :: Object -- ^ 'iamrAssumeRolePolicyDocument' -> IAMRole iamRole assumeRolePolicyDocumentarg = IAMRole { _iAMRoleAssumeRolePolicyDocument = assumeRolePolicyDocumentarg , _iAMRoleManagedPolicyArns = Nothing , _iAMRolePath = Nothing , _iAMRolePolicies = Nothing , _iAMRoleRoleName = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-assumerolepolicydocument iamrAssumeRolePolicyDocument :: Lens' IAMRole Object iamrAssumeRolePolicyDocument = lens _iAMRoleAssumeRolePolicyDocument (\s a -> s { _iAMRoleAssumeRolePolicyDocument = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-managepolicyarns iamrManagedPolicyArns :: Lens' IAMRole (Maybe [Val Text]) iamrManagedPolicyArns = lens _iAMRoleManagedPolicyArns (\s a -> s { _iAMRoleManagedPolicyArns = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path iamrPath :: Lens' IAMRole (Maybe (Val Text)) iamrPath = lens _iAMRolePath (\s a -> s { _iAMRolePath = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-policies iamrPolicies :: Lens' IAMRole (Maybe [IAMRolePolicy]) iamrPolicies = lens _iAMRolePolicies (\s a -> s { _iAMRolePolicies = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-rolename iamrRoleName :: Lens' IAMRole (Maybe (Val Text)) iamrRoleName = lens _iAMRoleRoleName (\s a -> s { _iAMRoleRoleName = a })