/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Http { class HttpClient; class HttpClientFactory; } // namespace Http namespace Utils { template< typename R, typename E> class Outcome; namespace Threading { class Executor; } // namespace Threading } // namespace Utils namespace Auth { class AWSCredentials; class AWSCredentialsProvider; } // namespace Auth namespace Client { class RetryStrategy; } // namespace Client namespace Pricing { namespace Model { class DescribeServicesRequest; class GetAttributeValuesRequest; class GetProductsRequest; typedef Aws::Utils::Outcome DescribeServicesOutcome; typedef Aws::Utils::Outcome GetAttributeValuesOutcome; typedef Aws::Utils::Outcome GetProductsOutcome; typedef std::future DescribeServicesOutcomeCallable; typedef std::future GetAttributeValuesOutcomeCallable; typedef std::future GetProductsOutcomeCallable; } // namespace Model class PricingClient; typedef std::function&) > DescribeServicesResponseReceivedHandler; typedef std::function&) > GetAttributeValuesResponseReceivedHandler; typedef std::function&) > GetProductsResponseReceivedHandler; /** *

AWS Price List Service API (AWS Price List Service) is a centralized and * convenient way to programmatically query Amazon Web Services for services, * products, and pricing information. The AWS Price List Service uses standardized * product attributes such as Location, Storage Class, * and Operating System, and provides prices at the SKU level. You can * use the AWS Price List Service to build cost control and scenario planning * tools, reconcile billing data, forecast future spend for budgeting purposes, and * provide cost benefit analysis that compare your internal workloads with AWS.

*

Use GetServices without a service code to retrieve the service * codes for all AWS services, then GetServices with a service code to * retreive 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.

Service * Endpoint

AWS Price List Service API provides the following two * endpoints:

  • https://api.pricing.us-east-1.amazonaws.com

    *
  • https://api.pricing.ap-south-1.amazonaws.com

*/ class AWS_PRICING_API PricingClient : public Aws::Client::AWSJsonClient { public: typedef Aws::Client::AWSJsonClient BASECLASS; /** * 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 = Aws::Client::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 = Aws::Client::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 = Aws::Client::ClientConfiguration()); 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; /** *

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

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::DescribeServicesOutcomeCallable DescribeServicesCallable(const Model::DescribeServicesRequest& request) const; /** *

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

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void DescribeServicesAsync(const Model::DescribeServicesRequest& request, const DescribeServicesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

Returns a list of attribute values. Attibutes are similar to the details in a * Price List API offer file. For a list of available attributes, see Offer * File Definitions in the AWS * Billing and Cost Management User Guide.

See Also:

AWS * API Reference

*/ virtual Model::GetAttributeValuesOutcome GetAttributeValues(const Model::GetAttributeValuesRequest& request) const; /** *

Returns a list of attribute values. Attibutes are similar to the details in a * Price List API offer file. For a list of available attributes, see Offer * File Definitions in the AWS * Billing and Cost Management User Guide.

See Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetAttributeValuesOutcomeCallable GetAttributeValuesCallable(const Model::GetAttributeValuesRequest& request) const; /** *

Returns a list of attribute values. Attibutes are similar to the details in a * Price List API offer file. For a list of available attributes, see Offer * File Definitions in the AWS * Billing and Cost Management User Guide.

See Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetAttributeValuesAsync(const Model::GetAttributeValuesRequest& request, const GetAttributeValuesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; /** *

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; /** *

Returns a list of all products that match the filter criteria.

See * Also:

AWS * API Reference

* * returns a future to the operation so that it can be executed in parallel to other requests. */ virtual Model::GetProductsOutcomeCallable GetProductsCallable(const Model::GetProductsRequest& request) const; /** *

Returns a list of all products that match the filter criteria.

See * Also:

AWS * API Reference

* * Queues the request into a thread executor and triggers associated callback when operation has finished. */ virtual void GetProductsAsync(const Model::GetProductsRequest& request, const GetProductsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const; void OverrideEndpoint(const Aws::String& endpoint); private: void init(const Aws::Client::ClientConfiguration& clientConfiguration); void DescribeServicesAsyncHelper(const Model::DescribeServicesRequest& request, const DescribeServicesResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetAttributeValuesAsyncHelper(const Model::GetAttributeValuesRequest& request, const GetAttributeValuesResponseReceivedHandler& handler, const std::shared_ptr& context) const; void GetProductsAsyncHelper(const Model::GetProductsRequest& request, const GetProductsResponseReceivedHandler& handler, const std::shared_ptr& context) const; Aws::String m_uri; Aws::String m_configScheme; std::shared_ptr m_executor; }; } // namespace Pricing } // namespace Aws