amazonka-cost-explorer-1.6.0: gen/Network/AWS/CostExplorer/GetDimensionValues.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.CostExplorer.GetDimensionValues
-- 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)
--
-- Retrieves all available filter values for a specified filter over a period of time. You can search the dimension values for an arbitrary string.
--
--
module Network.AWS.CostExplorer.GetDimensionValues
(
-- * Creating a Request
getDimensionValues
, GetDimensionValues
-- * Request Lenses
, gdvNextPageToken
, gdvContext
, gdvSearchString
, gdvTimePeriod
, gdvDimension
-- * Destructuring the Response
, getDimensionValuesResponse
, GetDimensionValuesResponse
-- * Response Lenses
, gdvrsNextPageToken
, gdvrsResponseStatus
, gdvrsDimensionValues
, gdvrsReturnSize
, gdvrsTotalSize
) where
import Network.AWS.CostExplorer.Types
import Network.AWS.CostExplorer.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'getDimensionValues' smart constructor.
data GetDimensionValues = GetDimensionValues'
{ _gdvNextPageToken :: !(Maybe Text)
, _gdvContext :: !(Maybe Context)
, _gdvSearchString :: !(Maybe Text)
, _gdvTimePeriod :: !DateInterval
, _gdvDimension :: !Dimension
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetDimensionValues' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gdvNextPageToken' - The token to retrieve the next set of results. AWS provides the token when the response from a previous call has more results than the maximum page size.
--
-- * 'gdvContext' - The context for the call to @GetDimensionValues@ . This can be @RESERVATIONS@ or @COST_AND_USAGE@ . The default value is @COST_AND_USAGE@ . If the context is set to @RESERVATIONS@ , the resulting dimension values can be used in the @GetReservationUtilization@ operation. If the context is set to @COST_AND_USAGE@ the resulting dimension values can be used in the @GetCostAndUsage@ operation. If you set the context to @COST_AND_USAGE@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL. * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS services, such as Amazon Web Services. * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux. * OPERATION - The action performed. Examples include @RunInstance@ and @CreateBucket@ . * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * PURCHASE_TYPE - The reservation type of the purchase to which this usage is related. Examples include On-Demand Instances and Standard Reserved Instances. * SERVICE - The AWS service such as Amazon DynamoDB. * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the @GetDimensionValues@ operation includes a unit attribute. Examples include GB and Hrs. * USAGE_TYPE_GROUP - The grouping of common usage types. An example is EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute. * RECORD_TYPE - The different types of charges such as RI fees, usage costs, tax refunds, and credits. If you set the context to @RESERVATIONS@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux. * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are @SingleAZ@ and @MultiAZ@ . * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * REGION - The AWS Region. * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone. * TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI). * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
--
-- * 'gdvSearchString' - The value that you want to search the filter values for.
--
-- * 'gdvTimePeriod' - The start and end dates for retrieving the dimension values. The start date is inclusive, but the end date is exclusive. For example, if @start@ is @2017-01-01@ and @end@ is @2017-05-01@ , then the cost and usage data is retrieved from @2017-01-01@ up to and including @2017-04-30@ but not including @2017-05-01@ .
--
-- * 'gdvDimension' - The name of the dimension. Each @Dimension@ is available for different a @Context@ . For more information, see @Context@ .
getDimensionValues
:: DateInterval -- ^ 'gdvTimePeriod'
-> Dimension -- ^ 'gdvDimension'
-> GetDimensionValues
getDimensionValues pTimePeriod_ pDimension_ =
GetDimensionValues'
{ _gdvNextPageToken = Nothing
, _gdvContext = Nothing
, _gdvSearchString = Nothing
, _gdvTimePeriod = pTimePeriod_
, _gdvDimension = pDimension_
}
-- | The token to retrieve the next set of results. AWS provides the token when the response from a previous call has more results than the maximum page size.
gdvNextPageToken :: Lens' GetDimensionValues (Maybe Text)
gdvNextPageToken = lens _gdvNextPageToken (\ s a -> s{_gdvNextPageToken = a})
-- | The context for the call to @GetDimensionValues@ . This can be @RESERVATIONS@ or @COST_AND_USAGE@ . The default value is @COST_AND_USAGE@ . If the context is set to @RESERVATIONS@ , the resulting dimension values can be used in the @GetReservationUtilization@ operation. If the context is set to @COST_AND_USAGE@ the resulting dimension values can be used in the @GetCostAndUsage@ operation. If you set the context to @COST_AND_USAGE@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL. * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS services, such as Amazon Web Services. * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux. * OPERATION - The action performed. Examples include @RunInstance@ and @CreateBucket@ . * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * PURCHASE_TYPE - The reservation type of the purchase to which this usage is related. Examples include On-Demand Instances and Standard Reserved Instances. * SERVICE - The AWS service such as Amazon DynamoDB. * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the @GetDimensionValues@ operation includes a unit attribute. Examples include GB and Hrs. * USAGE_TYPE_GROUP - The grouping of common usage types. An example is EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute. * RECORD_TYPE - The different types of charges such as RI fees, usage costs, tax refunds, and credits. If you set the context to @RESERVATIONS@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux. * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are @SingleAZ@ and @MultiAZ@ . * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * REGION - The AWS Region. * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone. * TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI). * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
gdvContext :: Lens' GetDimensionValues (Maybe Context)
gdvContext = lens _gdvContext (\ s a -> s{_gdvContext = a})
-- | The value that you want to search the filter values for.
gdvSearchString :: Lens' GetDimensionValues (Maybe Text)
gdvSearchString = lens _gdvSearchString (\ s a -> s{_gdvSearchString = a})
-- | The start and end dates for retrieving the dimension values. The start date is inclusive, but the end date is exclusive. For example, if @start@ is @2017-01-01@ and @end@ is @2017-05-01@ , then the cost and usage data is retrieved from @2017-01-01@ up to and including @2017-04-30@ but not including @2017-05-01@ .
gdvTimePeriod :: Lens' GetDimensionValues DateInterval
gdvTimePeriod = lens _gdvTimePeriod (\ s a -> s{_gdvTimePeriod = a})
-- | The name of the dimension. Each @Dimension@ is available for different a @Context@ . For more information, see @Context@ .
gdvDimension :: Lens' GetDimensionValues Dimension
gdvDimension = lens _gdvDimension (\ s a -> s{_gdvDimension = a})
instance AWSRequest GetDimensionValues where
type Rs GetDimensionValues =
GetDimensionValuesResponse
request = postJSON costExplorer
response
= receiveJSON
(\ s h x ->
GetDimensionValuesResponse' <$>
(x .?> "NextPageToken") <*> (pure (fromEnum s)) <*>
(x .?> "DimensionValues" .!@ mempty)
<*> (x .:> "ReturnSize")
<*> (x .:> "TotalSize"))
instance Hashable GetDimensionValues where
instance NFData GetDimensionValues where
instance ToHeaders GetDimensionValues where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSInsightsIndexService.GetDimensionValues" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetDimensionValues where
toJSON GetDimensionValues'{..}
= object
(catMaybes
[("NextPageToken" .=) <$> _gdvNextPageToken,
("Context" .=) <$> _gdvContext,
("SearchString" .=) <$> _gdvSearchString,
Just ("TimePeriod" .= _gdvTimePeriod),
Just ("Dimension" .= _gdvDimension)])
instance ToPath GetDimensionValues where
toPath = const "/"
instance ToQuery GetDimensionValues where
toQuery = const mempty
-- | /See:/ 'getDimensionValuesResponse' smart constructor.
data GetDimensionValuesResponse = GetDimensionValuesResponse'
{ _gdvrsNextPageToken :: !(Maybe Text)
, _gdvrsResponseStatus :: !Int
, _gdvrsDimensionValues :: ![DimensionValuesWithAttributes]
, _gdvrsReturnSize :: !Int
, _gdvrsTotalSize :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'GetDimensionValuesResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'gdvrsNextPageToken' - The token for the next set of retrievable results. AWS provides the token when the response from a previous call has more results than the maximum page size.
--
-- * 'gdvrsResponseStatus' - -- | The response status code.
--
-- * 'gdvrsDimensionValues' - The filters that you used to filter your request. Some dimensions are available only for a specific context: If you set the context to @COST_AND_USAGE@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL. * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS services, such as Amazon Web Services. * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux. * OPERATION - The action performed. Examples include @RunInstance@ and @CreateBucket@ . * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * PURCHASE_TYPE - The reservation type of the purchase to which this usage is related. Examples include On-Demand Instances and Standard Reserved Instances. * SERVICE - The AWS service such as Amazon DynamoDB. * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the @GetDimensionValues@ operation includes a unit attribute. Examples include GB and Hrs. * USAGE_TYPE_GROUP - The grouping of common usage types. An example is EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute. * RECORD_TYPE - The different types of charges such as RI fees, usage costs, tax refunds, and credits. If you set the context to @RESERVATIONS@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux. * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are @SingleAZ@ and @MultiAZ@ . * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * REGION - The AWS Region. * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone. * TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI). * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
--
-- * 'gdvrsReturnSize' - The number of results that AWS returned at one time.
--
-- * 'gdvrsTotalSize' - The total number of search results.
getDimensionValuesResponse
:: Int -- ^ 'gdvrsResponseStatus'
-> Int -- ^ 'gdvrsReturnSize'
-> Int -- ^ 'gdvrsTotalSize'
-> GetDimensionValuesResponse
getDimensionValuesResponse pResponseStatus_ pReturnSize_ pTotalSize_ =
GetDimensionValuesResponse'
{ _gdvrsNextPageToken = Nothing
, _gdvrsResponseStatus = pResponseStatus_
, _gdvrsDimensionValues = mempty
, _gdvrsReturnSize = pReturnSize_
, _gdvrsTotalSize = pTotalSize_
}
-- | The token for the next set of retrievable results. AWS provides the token when the response from a previous call has more results than the maximum page size.
gdvrsNextPageToken :: Lens' GetDimensionValuesResponse (Maybe Text)
gdvrsNextPageToken = lens _gdvrsNextPageToken (\ s a -> s{_gdvrsNextPageToken = a})
-- | -- | The response status code.
gdvrsResponseStatus :: Lens' GetDimensionValuesResponse Int
gdvrsResponseStatus = lens _gdvrsResponseStatus (\ s a -> s{_gdvrsResponseStatus = a})
-- | The filters that you used to filter your request. Some dimensions are available only for a specific context: If you set the context to @COST_AND_USAGE@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL. * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LEGAL_ENTITY_NAME - The name of the organization that sells you AWS services, such as Amazon Web Services. * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * OPERATING_SYSTEM - The operating system. Examples are Windows or Linux. * OPERATION - The action performed. Examples include @RunInstance@ and @CreateBucket@ . * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * PURCHASE_TYPE - The reservation type of the purchase to which this usage is related. Examples include On-Demand Instances and Standard Reserved Instances. * SERVICE - The AWS service such as Amazon DynamoDB. * USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the @GetDimensionValues@ operation includes a unit attribute. Examples include GB and Hrs. * USAGE_TYPE_GROUP - The grouping of common usage types. An example is EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute. * RECORD_TYPE - The different types of charges such as RI fees, usage costs, tax refunds, and credits. If you set the context to @RESERVATIONS@ , you can use the following dimensions for searching: * AZ - The Availability Zone. An example is @us-east-1a@ . * CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux. * DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are @SingleAZ@ and @MultiAZ@ . * INSTANCE_TYPE - The type of EC2 instance. An example is @m4.xlarge@ . * LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account. * PLATFORM - The EC2 operating system. Examples are Windows or Linux. * REGION - The AWS Region. * SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone. * TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI). * TENANCY - The tenancy of a resource. Examples are shared or dedicated.
gdvrsDimensionValues :: Lens' GetDimensionValuesResponse [DimensionValuesWithAttributes]
gdvrsDimensionValues = lens _gdvrsDimensionValues (\ s a -> s{_gdvrsDimensionValues = a}) . _Coerce
-- | The number of results that AWS returned at one time.
gdvrsReturnSize :: Lens' GetDimensionValuesResponse Int
gdvrsReturnSize = lens _gdvrsReturnSize (\ s a -> s{_gdvrsReturnSize = a})
-- | The total number of search results.
gdvrsTotalSize :: Lens' GetDimensionValuesResponse Int
gdvrsTotalSize = lens _gdvrsTotalSize (\ s a -> s{_gdvrsTotalSize = a})
instance NFData GetDimensionValuesResponse where