/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace Pricing
{
/**
* The Amazon Web Services Price List API is a centralized and convenient way to
* programmatically query Amazon Web Services for services, products, and pricing
* information. The Amazon Web Services Price List uses standardized product
* attributes such as Location
, Storage Class
, and
* Operating System
, and provides prices at the SKU level. You can use
* the Amazon Web Services Price List to do the following:
-
Build
* cost control and scenario planning tools
-
Reconcile billing
* data
-
Forecast future spend for budgeting purposes
* -
Provide cost benefit analysis that compare your internal workloads with
* Amazon Web Services
Use GetServices
without a
* service code to retrieve the service codes for all Amazon Web Services, then
* GetServices
with a service code to retrieve the attribute names for
* that service. After you have the service code and attribute names, you can use
* GetAttributeValues
to see what values are available for an
* attribute. With the service code and an attribute name and value, you can use
* GetProducts
to find specific products that you're interested in,
* such as an AmazonEC2
instance, with a Provisioned IOPS
* volumeType
.
You can use the following endpoints for the
* Amazon Web Services Price List API:
*/
class AWS_PRICING_API PricingClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* SERVICE_NAME;
static const char* ALLOCATION_TAG;
typedef PricingClientConfiguration ClientConfigurationType;
typedef PricingEndpointProvider EndpointProviderType;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
PricingClient(const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration(),
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG));
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
PricingClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
PricingClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::Pricing::PricingClientConfiguration& clientConfiguration = Aws::Pricing::PricingClientConfiguration());
/* Legacy constructors due deprecation */
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
PricingClient(const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
PricingClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
PricingClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~PricingClient();
/**
* Returns the metadata for one service or a list of the metadata for all
* services. Use this without a service code to get the service codes for all
* services. Use it with a service code, such as AmazonEC2
, to get
* information specific to that service, such as the attribute names available for
* that service. For example, some of the attribute names available for EC2 are
* volumeType
, maxIopsVolume
, operation
,
* locationType
, and
* instanceCapacity10xlarge
.
See Also:
AWS
* API Reference
*/
virtual Model::DescribeServicesOutcome DescribeServices(const Model::DescribeServicesRequest& request) const;
/**
* A Callable wrapper for DescribeServices that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DescribeServicesOutcomeCallable DescribeServicesCallable(const DescribeServicesRequestT& request) const
{
return SubmitCallable(&PricingClient::DescribeServices, request);
}
/**
* An Async wrapper for DescribeServices that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DescribeServicesAsync(const DescribeServicesRequestT& request, const DescribeServicesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&PricingClient::DescribeServices, request, handler, context);
}
/**
* Returns a list of attribute values. Attributes are similar to the details in
* a Price List API offer file. For a list of available attributes, see Offer
* File Definitions in the Billing
* and Cost Management User Guide.
See Also:
AWS
* API Reference
*/
virtual Model::GetAttributeValuesOutcome GetAttributeValues(const Model::GetAttributeValuesRequest& request) const;
/**
* A Callable wrapper for GetAttributeValues that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetAttributeValuesOutcomeCallable GetAttributeValuesCallable(const GetAttributeValuesRequestT& request) const
{
return SubmitCallable(&PricingClient::GetAttributeValues, request);
}
/**
* An Async wrapper for GetAttributeValues that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetAttributeValuesAsync(const GetAttributeValuesRequestT& request, const GetAttributeValuesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&PricingClient::GetAttributeValues, request, handler, context);
}
/**
* This feature is in preview release and is subject to change. Your use
* of Amazon Web Services Price List API is subject to the Beta Service
* Participation terms of the Amazon Web Services Service
* Terms (Section 1.10).
This returns the URL that you can
* retrieve your Price List file from. This URL is based on the
* PriceListArn
and FileFormat
that you retrieve from the
*
* ListPriceLists
response.
See Also:
AWS
* API Reference
*/
virtual Model::GetPriceListFileUrlOutcome GetPriceListFileUrl(const Model::GetPriceListFileUrlRequest& request) const;
/**
* A Callable wrapper for GetPriceListFileUrl that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetPriceListFileUrlOutcomeCallable GetPriceListFileUrlCallable(const GetPriceListFileUrlRequestT& request) const
{
return SubmitCallable(&PricingClient::GetPriceListFileUrl, request);
}
/**
* An Async wrapper for GetPriceListFileUrl that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetPriceListFileUrlAsync(const GetPriceListFileUrlRequestT& request, const GetPriceListFileUrlResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&PricingClient::GetPriceListFileUrl, request, handler, context);
}
/**
* Returns a list of all products that match the filter criteria.
See
* Also:
AWS
* API Reference
*/
virtual Model::GetProductsOutcome GetProducts(const Model::GetProductsRequest& request) const;
/**
* A Callable wrapper for GetProducts that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetProductsOutcomeCallable GetProductsCallable(const GetProductsRequestT& request) const
{
return SubmitCallable(&PricingClient::GetProducts, request);
}
/**
* An Async wrapper for GetProducts that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetProductsAsync(const GetProductsRequestT& request, const GetProductsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&PricingClient::GetProducts, request, handler, context);
}
/**
* This feature is in preview release and is subject to change. Your use
* of Amazon Web Services Price List API is subject to the Beta Service
* Participation terms of the Amazon Web Services Service
* Terms (Section 1.10).
This returns a list of Price List
* references that the requester if authorized to view, given a
* ServiceCode
, CurrencyCode
, and an
* EffectiveDate
. Use without a RegionCode
filter to list
* Price List references from all available Amazon Web Services Regions. Use with a
* RegionCode
filter to get the Price List reference that's specific
* to a specific Amazon Web Services Region. You can use the
* PriceListArn
from the response to get your preferred Price List
* files through the
* GetPriceListFileUrl
API.
See Also:
AWS
* API Reference
*/
virtual Model::ListPriceListsOutcome ListPriceLists(const Model::ListPriceListsRequest& request) const;
/**
* A Callable wrapper for ListPriceLists that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListPriceListsOutcomeCallable ListPriceListsCallable(const ListPriceListsRequestT& request) const
{
return SubmitCallable(&PricingClient::ListPriceLists, request);
}
/**
* An Async wrapper for ListPriceLists that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListPriceListsAsync(const ListPriceListsRequestT& request, const ListPriceListsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&PricingClient::ListPriceLists, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const PricingClientConfiguration& clientConfiguration);
PricingClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace Pricing
} // namespace Aws