amazonka-ml-1.6.0: gen/Network/AWS/MachineLearning/CreateDataSourceFromRedshift.hs
{-# 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.MachineLearning.CreateDataSourceFromRedshift
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a @DataSource@ from a database hosted on an Amazon Redshift cluster. A @DataSource@ references data that can be used to perform either @CreateMLModel@ , @CreateEvaluation@ , or @CreateBatchPrediction@ operations.
--
--
-- @CreateDataSourceFromRedshift@ is an asynchronous operation. In response to @CreateDataSourceFromRedshift@ , Amazon Machine Learning (Amazon ML) immediately returns and sets the @DataSource@ status to @PENDING@ . After the @DataSource@ is created and ready for use, Amazon ML sets the @Status@ parameter to @COMPLETED@ . @DataSource@ in @COMPLETED@ or @PENDING@ states can be used to perform only @CreateMLModel@ , @CreateEvaluation@ , or @CreateBatchPrediction@ operations.
--
-- If Amazon ML can't accept the input source, it sets the @Status@ parameter to @FAILED@ and includes an error message in the @Message@ attribute of the @GetDataSource@ operation response.
--
-- The observations should be contained in the database hosted on an Amazon Redshift cluster and should be specified by a @SelectSqlQuery@ query. Amazon ML executes an @Unload@ command in Amazon Redshift to transfer the result set of the @SelectSqlQuery@ query to @S3StagingLocation@ .
--
-- After the @DataSource@ has been created, it's ready for use in evaluations and batch predictions. If you plan to use the @DataSource@ to train an @MLModel@ , the @DataSource@ also requires a recipe. A recipe describes how each input variable will be used in training an @MLModel@ . Will the variable be included or excluded from training? Will the variable be manipulated; for example, will it be combined with another variable or will it be split apart into word combinations? The recipe provides answers to these questions.
--
-- You can't change an existing datasource, but you can copy and modify the settings from an existing Amazon Redshift datasource to create a new datasource. To do so, call @GetDataSource@ for an existing datasource and copy the values to a @CreateDataSource@ call. Change the settings that you want to change and make sure that all required fields have the appropriate values.
--
module Network.AWS.MachineLearning.CreateDataSourceFromRedshift
(
-- * Creating a Request
createDataSourceFromRedshift
, CreateDataSourceFromRedshift
-- * Request Lenses
, cdsfrDataSourceName
, cdsfrComputeStatistics
, cdsfrDataSourceId
, cdsfrDataSpec
, cdsfrRoleARN
-- * Destructuring the Response
, createDataSourceFromRedshiftResponse
, CreateDataSourceFromRedshiftResponse
-- * Response Lenses
, cdsfrrsDataSourceId
, cdsfrrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.MachineLearning.Types
import Network.AWS.MachineLearning.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createDataSourceFromRedshift' smart constructor.
data CreateDataSourceFromRedshift = CreateDataSourceFromRedshift'
{ _cdsfrDataSourceName :: !(Maybe Text)
, _cdsfrComputeStatistics :: !(Maybe Bool)
, _cdsfrDataSourceId :: !Text
, _cdsfrDataSpec :: !RedshiftDataSpec
, _cdsfrRoleARN :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateDataSourceFromRedshift' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cdsfrDataSourceName' - A user-supplied name or description of the @DataSource@ .
--
-- * 'cdsfrComputeStatistics' - The compute statistics for a @DataSource@ . The statistics are generated from the observation data referenced by a @DataSource@ . Amazon ML uses the statistics internally during @MLModel@ training. This parameter must be set to @true@ if the @DataSource@ needs to be used for @MLModel@ training.
--
-- * 'cdsfrDataSourceId' - A user-supplied ID that uniquely identifies the @DataSource@ .
--
-- * 'cdsfrDataSpec' - The data specification of an Amazon Redshift @DataSource@ : * DatabaseInformation - * @DatabaseName@ - The name of the Amazon Redshift database. * @ClusterIdentifier@ - The unique ID for the Amazon Redshift cluster. * DatabaseCredentials - The AWS Identity and Access Management (IAM) credentials that are used to connect to the Amazon Redshift database. * SelectSqlQuery - The query that is used to retrieve the observation data for the @Datasource@ . * S3StagingLocation - The Amazon Simple Storage Service (Amazon S3) location for staging Amazon Redshift data. The data retrieved from Amazon Redshift using the @SelectSqlQuery@ query is stored in this location. * DataSchemaUri - The Amazon S3 location of the @DataSchema@ . * DataSchema - A JSON string representing the schema. This is not required if @DataSchemaUri@ is specified. * DataRearrangement - A JSON string that represents the splitting and rearrangement requirements for the @DataSource@ . Sample - @"{\"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}"@
--
-- * 'cdsfrRoleARN' - A fully specified role Amazon Resource Name (ARN). Amazon ML assumes the role on behalf of the user to create the following: * A security group to allow Amazon ML to execute the @SelectSqlQuery@ query on an Amazon Redshift cluster * An Amazon S3 bucket policy to grant Amazon ML read/write permissions on the @S3StagingLocation@
createDataSourceFromRedshift
:: Text -- ^ 'cdsfrDataSourceId'
-> RedshiftDataSpec -- ^ 'cdsfrDataSpec'
-> Text -- ^ 'cdsfrRoleARN'
-> CreateDataSourceFromRedshift
createDataSourceFromRedshift pDataSourceId_ pDataSpec_ pRoleARN_ =
CreateDataSourceFromRedshift'
{ _cdsfrDataSourceName = Nothing
, _cdsfrComputeStatistics = Nothing
, _cdsfrDataSourceId = pDataSourceId_
, _cdsfrDataSpec = pDataSpec_
, _cdsfrRoleARN = pRoleARN_
}
-- | A user-supplied name or description of the @DataSource@ .
cdsfrDataSourceName :: Lens' CreateDataSourceFromRedshift (Maybe Text)
cdsfrDataSourceName = lens _cdsfrDataSourceName (\ s a -> s{_cdsfrDataSourceName = a})
-- | The compute statistics for a @DataSource@ . The statistics are generated from the observation data referenced by a @DataSource@ . Amazon ML uses the statistics internally during @MLModel@ training. This parameter must be set to @true@ if the @DataSource@ needs to be used for @MLModel@ training.
cdsfrComputeStatistics :: Lens' CreateDataSourceFromRedshift (Maybe Bool)
cdsfrComputeStatistics = lens _cdsfrComputeStatistics (\ s a -> s{_cdsfrComputeStatistics = a})
-- | A user-supplied ID that uniquely identifies the @DataSource@ .
cdsfrDataSourceId :: Lens' CreateDataSourceFromRedshift Text
cdsfrDataSourceId = lens _cdsfrDataSourceId (\ s a -> s{_cdsfrDataSourceId = a})
-- | The data specification of an Amazon Redshift @DataSource@ : * DatabaseInformation - * @DatabaseName@ - The name of the Amazon Redshift database. * @ClusterIdentifier@ - The unique ID for the Amazon Redshift cluster. * DatabaseCredentials - The AWS Identity and Access Management (IAM) credentials that are used to connect to the Amazon Redshift database. * SelectSqlQuery - The query that is used to retrieve the observation data for the @Datasource@ . * S3StagingLocation - The Amazon Simple Storage Service (Amazon S3) location for staging Amazon Redshift data. The data retrieved from Amazon Redshift using the @SelectSqlQuery@ query is stored in this location. * DataSchemaUri - The Amazon S3 location of the @DataSchema@ . * DataSchema - A JSON string representing the schema. This is not required if @DataSchemaUri@ is specified. * DataRearrangement - A JSON string that represents the splitting and rearrangement requirements for the @DataSource@ . Sample - @"{\"splitting\":{\"percentBegin\":10,\"percentEnd\":60}}"@
cdsfrDataSpec :: Lens' CreateDataSourceFromRedshift RedshiftDataSpec
cdsfrDataSpec = lens _cdsfrDataSpec (\ s a -> s{_cdsfrDataSpec = a})
-- | A fully specified role Amazon Resource Name (ARN). Amazon ML assumes the role on behalf of the user to create the following: * A security group to allow Amazon ML to execute the @SelectSqlQuery@ query on an Amazon Redshift cluster * An Amazon S3 bucket policy to grant Amazon ML read/write permissions on the @S3StagingLocation@
cdsfrRoleARN :: Lens' CreateDataSourceFromRedshift Text
cdsfrRoleARN = lens _cdsfrRoleARN (\ s a -> s{_cdsfrRoleARN = a})
instance AWSRequest CreateDataSourceFromRedshift
where
type Rs CreateDataSourceFromRedshift =
CreateDataSourceFromRedshiftResponse
request = postJSON machineLearning
response
= receiveJSON
(\ s h x ->
CreateDataSourceFromRedshiftResponse' <$>
(x .?> "DataSourceId") <*> (pure (fromEnum s)))
instance Hashable CreateDataSourceFromRedshift where
instance NFData CreateDataSourceFromRedshift where
instance ToHeaders CreateDataSourceFromRedshift where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AmazonML_20141212.CreateDataSourceFromRedshift" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateDataSourceFromRedshift where
toJSON CreateDataSourceFromRedshift'{..}
= object
(catMaybes
[("DataSourceName" .=) <$> _cdsfrDataSourceName,
("ComputeStatistics" .=) <$> _cdsfrComputeStatistics,
Just ("DataSourceId" .= _cdsfrDataSourceId),
Just ("DataSpec" .= _cdsfrDataSpec),
Just ("RoleARN" .= _cdsfrRoleARN)])
instance ToPath CreateDataSourceFromRedshift where
toPath = const "/"
instance ToQuery CreateDataSourceFromRedshift where
toQuery = const mempty
-- | Represents the output of a @CreateDataSourceFromRedshift@ operation, and is an acknowledgement that Amazon ML received the request.
--
--
-- The @CreateDataSourceFromRedshift@ operation is asynchronous. You can poll for updates by using the @GetBatchPrediction@ operation and checking the @Status@ parameter.
--
--
-- /See:/ 'createDataSourceFromRedshiftResponse' smart constructor.
data CreateDataSourceFromRedshiftResponse = CreateDataSourceFromRedshiftResponse'
{ _cdsfrrsDataSourceId :: !(Maybe Text)
, _cdsfrrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateDataSourceFromRedshiftResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cdsfrrsDataSourceId' - A user-supplied ID that uniquely identifies the datasource. This value should be identical to the value of the @DataSourceID@ in the request.
--
-- * 'cdsfrrsResponseStatus' - -- | The response status code.
createDataSourceFromRedshiftResponse
:: Int -- ^ 'cdsfrrsResponseStatus'
-> CreateDataSourceFromRedshiftResponse
createDataSourceFromRedshiftResponse pResponseStatus_ =
CreateDataSourceFromRedshiftResponse'
{_cdsfrrsDataSourceId = Nothing, _cdsfrrsResponseStatus = pResponseStatus_}
-- | A user-supplied ID that uniquely identifies the datasource. This value should be identical to the value of the @DataSourceID@ in the request.
cdsfrrsDataSourceId :: Lens' CreateDataSourceFromRedshiftResponse (Maybe Text)
cdsfrrsDataSourceId = lens _cdsfrrsDataSourceId (\ s a -> s{_cdsfrrsDataSourceId = a})
-- | -- | The response status code.
cdsfrrsResponseStatus :: Lens' CreateDataSourceFromRedshiftResponse Int
cdsfrrsResponseStatus = lens _cdsfrrsResponseStatus (\ s a -> s{_cdsfrrsResponseStatus = a})
instance NFData CreateDataSourceFromRedshiftResponse
where