{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.Glue.CreateCrawler -- Copyright : (c) 2013-2017 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a new @Crawler@ with specified targets, role, configuration, and optional schedule. At least one crawl target must be specified, in either the /s3Targets/ or the /jdbcTargets/ field. -- -- module Network.AWS.Glue.CreateCrawler ( -- * Creating a Request createCrawler , CreateCrawler -- * Request Lenses , ccSchemaChangePolicy , ccSchedule , ccClassifiers , ccTablePrefix , ccDescription , ccName , ccRole , ccDatabaseName , ccTargets -- * Destructuring the Response , createCrawlerResponse , CreateCrawlerResponse -- * Response Lenses , crersResponseStatus ) where import Network.AWS.Glue.Types import Network.AWS.Glue.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'createCrawler' smart constructor. data CreateCrawler = CreateCrawler' { _ccSchemaChangePolicy :: !(Maybe SchemaChangePolicy) , _ccSchedule :: !(Maybe Text) , _ccClassifiers :: !(Maybe [Text]) , _ccTablePrefix :: !(Maybe Text) , _ccDescription :: !(Maybe Text) , _ccName :: !Text , _ccRole :: !Text , _ccDatabaseName :: !Text , _ccTargets :: !CrawlerTargets } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateCrawler' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ccSchemaChangePolicy' - Policy for the crawler's update and deletion behavior. -- -- * 'ccSchedule' - A @cron@ expression used to specify the schedule (see . For example, to run something every day at 12:15 UTC, you would specify: @cron(15 12 * * ? *)@ . -- -- * 'ccClassifiers' - A list of custom @Classifier@ names that the user has registered. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification. -- -- * 'ccTablePrefix' - The table prefix used for catalog tables created. -- -- * 'ccDescription' - A description of the new @Crawler@ . -- -- * 'ccName' - Name of the new @Crawler@ . -- -- * 'ccRole' - The IAM role (or ARN of an IAM role) used by the new @Crawler@ to access customer resources. -- -- * 'ccDatabaseName' - The Glue @Database@ where results will be stored, such as: @arn:aws:daylight:us-east-1::database/sometable/*@ . -- -- * 'ccTargets' - A list of collection of targets to crawl. createCrawler :: Text -- ^ 'ccName' -> Text -- ^ 'ccRole' -> Text -- ^ 'ccDatabaseName' -> CrawlerTargets -- ^ 'ccTargets' -> CreateCrawler createCrawler pName_ pRole_ pDatabaseName_ pTargets_ = CreateCrawler' { _ccSchemaChangePolicy = Nothing , _ccSchedule = Nothing , _ccClassifiers = Nothing , _ccTablePrefix = Nothing , _ccDescription = Nothing , _ccName = pName_ , _ccRole = pRole_ , _ccDatabaseName = pDatabaseName_ , _ccTargets = pTargets_ } -- | Policy for the crawler's update and deletion behavior. ccSchemaChangePolicy :: Lens' CreateCrawler (Maybe SchemaChangePolicy) ccSchemaChangePolicy = lens _ccSchemaChangePolicy (\ s a -> s{_ccSchemaChangePolicy = a}); -- | A @cron@ expression used to specify the schedule (see . For example, to run something every day at 12:15 UTC, you would specify: @cron(15 12 * * ? *)@ . ccSchedule :: Lens' CreateCrawler (Maybe Text) ccSchedule = lens _ccSchedule (\ s a -> s{_ccSchedule = a}); -- | A list of custom @Classifier@ names that the user has registered. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification. ccClassifiers :: Lens' CreateCrawler [Text] ccClassifiers = lens _ccClassifiers (\ s a -> s{_ccClassifiers = a}) . _Default . _Coerce; -- | The table prefix used for catalog tables created. ccTablePrefix :: Lens' CreateCrawler (Maybe Text) ccTablePrefix = lens _ccTablePrefix (\ s a -> s{_ccTablePrefix = a}); -- | A description of the new @Crawler@ . ccDescription :: Lens' CreateCrawler (Maybe Text) ccDescription = lens _ccDescription (\ s a -> s{_ccDescription = a}); -- | Name of the new @Crawler@ . ccName :: Lens' CreateCrawler Text ccName = lens _ccName (\ s a -> s{_ccName = a}); -- | The IAM role (or ARN of an IAM role) used by the new @Crawler@ to access customer resources. ccRole :: Lens' CreateCrawler Text ccRole = lens _ccRole (\ s a -> s{_ccRole = a}); -- | The Glue @Database@ where results will be stored, such as: @arn:aws:daylight:us-east-1::database/sometable/*@ . ccDatabaseName :: Lens' CreateCrawler Text ccDatabaseName = lens _ccDatabaseName (\ s a -> s{_ccDatabaseName = a}); -- | A list of collection of targets to crawl. ccTargets :: Lens' CreateCrawler CrawlerTargets ccTargets = lens _ccTargets (\ s a -> s{_ccTargets = a}); instance AWSRequest CreateCrawler where type Rs CreateCrawler = CreateCrawlerResponse request = postJSON glue response = receiveEmpty (\ s h x -> CreateCrawlerResponse' <$> (pure (fromEnum s))) instance Hashable CreateCrawler where instance NFData CreateCrawler where instance ToHeaders CreateCrawler where toHeaders = const (mconcat ["X-Amz-Target" =# ("AWSGlue.CreateCrawler" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON CreateCrawler where toJSON CreateCrawler'{..} = object (catMaybes [("SchemaChangePolicy" .=) <$> _ccSchemaChangePolicy, ("Schedule" .=) <$> _ccSchedule, ("Classifiers" .=) <$> _ccClassifiers, ("TablePrefix" .=) <$> _ccTablePrefix, ("Description" .=) <$> _ccDescription, Just ("Name" .= _ccName), Just ("Role" .= _ccRole), Just ("DatabaseName" .= _ccDatabaseName), Just ("Targets" .= _ccTargets)]) instance ToPath CreateCrawler where toPath = const "/" instance ToQuery CreateCrawler where toQuery = const mempty -- | /See:/ 'createCrawlerResponse' smart constructor. newtype CreateCrawlerResponse = CreateCrawlerResponse' { _crersResponseStatus :: Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateCrawlerResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'crersResponseStatus' - -- | The response status code. createCrawlerResponse :: Int -- ^ 'crersResponseStatus' -> CreateCrawlerResponse createCrawlerResponse pResponseStatus_ = CreateCrawlerResponse' {_crersResponseStatus = pResponseStatus_} -- | -- | The response status code. crersResponseStatus :: Lens' CreateCrawlerResponse Int crersResponseStatus = lens _crersResponseStatus (\ s a -> s{_crersResponseStatus = a}); instance NFData CreateCrawlerResponse where