/** * 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 ApplicationCostProfiler { /** *

This reference provides descriptions of the AWS Application Cost Profiler * API.

The AWS Application Cost Profiler API provides programmatic access * to view, create, update, and delete application cost report definitions, as well * as to import your usage data into the Application Cost Profiler service.

*

For more information about using this service, see the AWS * Application Cost Profiler User Guide.

*/ class AWS_APPLICATIONCOSTPROFILER_API ApplicationCostProfilerClient : 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 ApplicationCostProfilerClientConfiguration ClientConfigurationType; typedef ApplicationCostProfilerEndpointProvider 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. */ ApplicationCostProfilerClient(const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration(), 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. */ ApplicationCostProfilerClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration()); /** * 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 */ ApplicationCostProfilerClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration& clientConfiguration = Aws::ApplicationCostProfiler::ApplicationCostProfilerClientConfiguration()); /* 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. */ ApplicationCostProfilerClient(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. */ ApplicationCostProfilerClient(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 */ ApplicationCostProfilerClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~ApplicationCostProfilerClient(); /** *

Deletes the specified report definition in AWS Application Cost Profiler. * This stops the report from being generated.

See Also:

AWS * API Reference

*/ virtual Model::DeleteReportDefinitionOutcome DeleteReportDefinition(const Model::DeleteReportDefinitionRequest& request) const; /** * A Callable wrapper for DeleteReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteReportDefinitionOutcomeCallable DeleteReportDefinitionCallable(const DeleteReportDefinitionRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::DeleteReportDefinition, request); } /** * An Async wrapper for DeleteReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteReportDefinitionAsync(const DeleteReportDefinitionRequestT& request, const DeleteReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::DeleteReportDefinition, request, handler, context); } /** *

Retrieves the definition of a report already configured in AWS Application * Cost Profiler.

See Also:

AWS * API Reference

*/ virtual Model::GetReportDefinitionOutcome GetReportDefinition(const Model::GetReportDefinitionRequest& request) const; /** * A Callable wrapper for GetReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::GetReportDefinitionOutcomeCallable GetReportDefinitionCallable(const GetReportDefinitionRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::GetReportDefinition, request); } /** * An Async wrapper for GetReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void GetReportDefinitionAsync(const GetReportDefinitionRequestT& request, const GetReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::GetReportDefinition, request, handler, context); } /** *

Ingests application usage data from Amazon Simple Storage Service (Amazon * S3).

The data must already exist in the S3 location. As part of the * action, AWS Application Cost Profiler copies the object from your S3 bucket to * an S3 bucket owned by Amazon for processing asynchronously.

See * Also:

AWS * API Reference

*/ virtual Model::ImportApplicationUsageOutcome ImportApplicationUsage(const Model::ImportApplicationUsageRequest& request) const; /** * A Callable wrapper for ImportApplicationUsage that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ImportApplicationUsageOutcomeCallable ImportApplicationUsageCallable(const ImportApplicationUsageRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::ImportApplicationUsage, request); } /** * An Async wrapper for ImportApplicationUsage that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ImportApplicationUsageAsync(const ImportApplicationUsageRequestT& request, const ImportApplicationUsageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::ImportApplicationUsage, request, handler, context); } /** *

Retrieves a list of all reports and their configurations for your AWS * account.

The maximum number of reports is one.

See Also:

* AWS * API Reference

*/ virtual Model::ListReportDefinitionsOutcome ListReportDefinitions(const Model::ListReportDefinitionsRequest& request) const; /** * A Callable wrapper for ListReportDefinitions that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListReportDefinitionsOutcomeCallable ListReportDefinitionsCallable(const ListReportDefinitionsRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::ListReportDefinitions, request); } /** * An Async wrapper for ListReportDefinitions that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListReportDefinitionsAsync(const ListReportDefinitionsRequestT& request, const ListReportDefinitionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::ListReportDefinitions, request, handler, context); } /** *

Creates the report definition for a report in Application Cost * Profiler.

See Also:

AWS * API Reference

*/ virtual Model::PutReportDefinitionOutcome PutReportDefinition(const Model::PutReportDefinitionRequest& request) const; /** * A Callable wrapper for PutReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutReportDefinitionOutcomeCallable PutReportDefinitionCallable(const PutReportDefinitionRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::PutReportDefinition, request); } /** * An Async wrapper for PutReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutReportDefinitionAsync(const PutReportDefinitionRequestT& request, const PutReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::PutReportDefinition, request, handler, context); } /** *

Updates existing report in AWS Application Cost Profiler.

See * Also:

AWS * API Reference

*/ virtual Model::UpdateReportDefinitionOutcome UpdateReportDefinition(const Model::UpdateReportDefinitionRequest& request) const; /** * A Callable wrapper for UpdateReportDefinition that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateReportDefinitionOutcomeCallable UpdateReportDefinitionCallable(const UpdateReportDefinitionRequestT& request) const { return SubmitCallable(&ApplicationCostProfilerClient::UpdateReportDefinition, request); } /** * An Async wrapper for UpdateReportDefinition that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateReportDefinitionAsync(const UpdateReportDefinitionRequestT& request, const UpdateReportDefinitionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ApplicationCostProfilerClient::UpdateReportDefinition, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const ApplicationCostProfilerClientConfiguration& clientConfiguration); ApplicationCostProfilerClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace ApplicationCostProfiler } // namespace Aws