stratosphere-0.1.0: library-gen/Stratosphere/Resources/InstanceProfile.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Creates an AWS Identity and Access Management (IAM) Instance Profile that
-- can be used with IAM Roles for EC2 Instances. For more information about
-- IAM roles, see Working with Roles in the AWS Identity and Access Management
-- User Guide.
module Stratosphere.Resources.InstanceProfile where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
-- | Full data type definition for InstanceProfile. See 'instanceProfile' for
-- a more convenient constructor.
data InstanceProfile =
InstanceProfile
{ _instanceProfilePath :: Val Text
, _instanceProfileRoles :: [Val Text]
} deriving (Show, Generic)
instance ToJSON InstanceProfile where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
instance FromJSON InstanceProfile where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 16, omitNothingFields = True }
-- | Constructor for 'InstanceProfile' containing required fields as
-- arguments.
instanceProfile
:: Val Text -- ^ 'ipPath'
-> [Val Text] -- ^ 'ipRoles'
-> InstanceProfile
instanceProfile patharg rolesarg =
InstanceProfile
{ _instanceProfilePath = patharg
, _instanceProfileRoles = rolesarg
}
-- | The path associated with this IAM instance profile. For information about
-- IAM paths, see Friendly Names and Paths in the AWS Identity and Access
-- Management User Guide.
ipPath :: Lens' InstanceProfile (Val Text)
ipPath = lens _instanceProfilePath (\s a -> s { _instanceProfilePath = a })
-- | The roles associated with this IAM instance profile.
ipRoles :: Lens' InstanceProfile [Val Text]
ipRoles = lens _instanceProfileRoles (\s a -> s { _instanceProfileRoles = a })