packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/SSMResourceDataSync.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html

module Stratosphere.Resources.SSMResourceDataSync where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.SSMResourceDataSyncS3Destination
import Stratosphere.ResourceProperties.SSMResourceDataSyncSyncSource

-- | Full data type definition for SSMResourceDataSync. See
-- 'ssmResourceDataSync' for a more convenient constructor.
data SSMResourceDataSync =
  SSMResourceDataSync
  { _sSMResourceDataSyncBucketName :: Maybe (Val Text)
  , _sSMResourceDataSyncBucketPrefix :: Maybe (Val Text)
  , _sSMResourceDataSyncBucketRegion :: Maybe (Val Text)
  , _sSMResourceDataSyncKMSKeyArn :: Maybe (Val Text)
  , _sSMResourceDataSyncS3Destination :: Maybe SSMResourceDataSyncS3Destination
  , _sSMResourceDataSyncSyncFormat :: Maybe (Val Text)
  , _sSMResourceDataSyncSyncName :: Val Text
  , _sSMResourceDataSyncSyncSource :: Maybe SSMResourceDataSyncSyncSource
  , _sSMResourceDataSyncSyncType :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToResourceProperties SSMResourceDataSync where
  toResourceProperties SSMResourceDataSync{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::SSM::ResourceDataSync"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("BucketName",) . toJSON) _sSMResourceDataSyncBucketName
        , fmap (("BucketPrefix",) . toJSON) _sSMResourceDataSyncBucketPrefix
        , fmap (("BucketRegion",) . toJSON) _sSMResourceDataSyncBucketRegion
        , fmap (("KMSKeyArn",) . toJSON) _sSMResourceDataSyncKMSKeyArn
        , fmap (("S3Destination",) . toJSON) _sSMResourceDataSyncS3Destination
        , fmap (("SyncFormat",) . toJSON) _sSMResourceDataSyncSyncFormat
        , (Just . ("SyncName",) . toJSON) _sSMResourceDataSyncSyncName
        , fmap (("SyncSource",) . toJSON) _sSMResourceDataSyncSyncSource
        , fmap (("SyncType",) . toJSON) _sSMResourceDataSyncSyncType
        ]
    }

-- | Constructor for 'SSMResourceDataSync' containing required fields as
-- arguments.
ssmResourceDataSync
  :: Val Text -- ^ 'ssmrdsSyncName'
  -> SSMResourceDataSync
ssmResourceDataSync syncNamearg =
  SSMResourceDataSync
  { _sSMResourceDataSyncBucketName = Nothing
  , _sSMResourceDataSyncBucketPrefix = Nothing
  , _sSMResourceDataSyncBucketRegion = Nothing
  , _sSMResourceDataSyncKMSKeyArn = Nothing
  , _sSMResourceDataSyncS3Destination = Nothing
  , _sSMResourceDataSyncSyncFormat = Nothing
  , _sSMResourceDataSyncSyncName = syncNamearg
  , _sSMResourceDataSyncSyncSource = Nothing
  , _sSMResourceDataSyncSyncType = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketname
ssmrdsBucketName :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsBucketName = lens _sSMResourceDataSyncBucketName (\s a -> s { _sSMResourceDataSyncBucketName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketprefix
ssmrdsBucketPrefix :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsBucketPrefix = lens _sSMResourceDataSyncBucketPrefix (\s a -> s { _sSMResourceDataSyncBucketPrefix = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketregion
ssmrdsBucketRegion :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsBucketRegion = lens _sSMResourceDataSyncBucketRegion (\s a -> s { _sSMResourceDataSyncBucketRegion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-kmskeyarn
ssmrdsKMSKeyArn :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsKMSKeyArn = lens _sSMResourceDataSyncKMSKeyArn (\s a -> s { _sSMResourceDataSyncKMSKeyArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-s3destination
ssmrdsS3Destination :: Lens' SSMResourceDataSync (Maybe SSMResourceDataSyncS3Destination)
ssmrdsS3Destination = lens _sSMResourceDataSyncS3Destination (\s a -> s { _sSMResourceDataSyncS3Destination = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncformat
ssmrdsSyncFormat :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsSyncFormat = lens _sSMResourceDataSyncSyncFormat (\s a -> s { _sSMResourceDataSyncSyncFormat = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncname
ssmrdsSyncName :: Lens' SSMResourceDataSync (Val Text)
ssmrdsSyncName = lens _sSMResourceDataSyncSyncName (\s a -> s { _sSMResourceDataSyncSyncName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncsource
ssmrdsSyncSource :: Lens' SSMResourceDataSync (Maybe SSMResourceDataSyncSyncSource)
ssmrdsSyncSource = lens _sSMResourceDataSyncSyncSource (\s a -> s { _sSMResourceDataSyncSyncSource = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-synctype
ssmrdsSyncType :: Lens' SSMResourceDataSync (Maybe (Val Text))
ssmrdsSyncType = lens _sSMResourceDataSyncSyncType (\s a -> s { _sSMResourceDataSyncSyncType = a })