stratosphere-0.1.0: library-gen/Stratosphere/ResourceProperties/AccessLoggingPolicy.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The AccessLoggingPolicy property describes where and how access logs are
-- stored for the AWS::ElasticLoadBalancing::LoadBalancer resource.
module Stratosphere.ResourceProperties.AccessLoggingPolicy 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 AccessLoggingPolicy. See
-- 'accessLoggingPolicy' for a more convenient constructor.
data AccessLoggingPolicy =
AccessLoggingPolicy
{ _accessLoggingPolicyEmitInterval :: Maybe (Val Integer')
, _accessLoggingPolicyEnabled :: Val Bool'
, _accessLoggingPolicyS3BucketName :: Val Text
, _accessLoggingPolicyS3BucketPrefix :: Maybe (Val Text)
} deriving (Show, Generic)
instance ToJSON AccessLoggingPolicy where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 20, omitNothingFields = True }
instance FromJSON AccessLoggingPolicy where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 20, omitNothingFields = True }
-- | Constructor for 'AccessLoggingPolicy' containing required fields as
-- arguments.
accessLoggingPolicy
:: Val Bool' -- ^ 'alpEnabled'
-> Val Text -- ^ 'alpS3BucketName'
-> AccessLoggingPolicy
accessLoggingPolicy enabledarg s3BucketNamearg =
AccessLoggingPolicy
{ _accessLoggingPolicyEmitInterval = Nothing
, _accessLoggingPolicyEnabled = enabledarg
, _accessLoggingPolicyS3BucketName = s3BucketNamearg
, _accessLoggingPolicyS3BucketPrefix = Nothing
}
-- | The interval for publishing access logs in minutes. You can specify an
-- interval of either 5 minutes or 60 minutes.
alpEmitInterval :: Lens' AccessLoggingPolicy (Maybe (Val Integer'))
alpEmitInterval = lens _accessLoggingPolicyEmitInterval (\s a -> s { _accessLoggingPolicyEmitInterval = a })
-- | Whether logging is enabled for the load balancer.
alpEnabled :: Lens' AccessLoggingPolicy (Val Bool')
alpEnabled = lens _accessLoggingPolicyEnabled (\s a -> s { _accessLoggingPolicyEnabled = a })
-- | The name of an Amazon S3 bucket where access log files are stored.
alpS3BucketName :: Lens' AccessLoggingPolicy (Val Text)
alpS3BucketName = lens _accessLoggingPolicyS3BucketName (\s a -> s { _accessLoggingPolicyS3BucketName = a })
-- | A prefix for the all log object keys, such as my-load-balancer-logs/prod.
-- If you store log files from multiple sources in a single bucket, you can
-- use a prefix to distinguish each log file and its source.
alpS3BucketPrefix :: Lens' AccessLoggingPolicy (Maybe (Val Text))
alpS3BucketPrefix = lens _accessLoggingPolicyS3BucketPrefix (\s a -> s { _accessLoggingPolicyS3BucketPrefix = a })