/** * 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 namespace Aws { namespace ElasticLoadBalancing { /** * Elastic Load Balancing

A load balancer can distribute * incoming traffic across your EC2 instances. This enables you to increase the * availability of your application. The load balancer also monitors the health of * its registered instances and ensures that it routes traffic only to healthy * instances. You configure your load balancer to accept incoming traffic by * specifying one or more listeners, which are configured with a protocol and port * number for connections from clients to the load balancer and a protocol and port * number for connections from the load balancer to the instances.

Elastic * Load Balancing supports three types of load balancers: Application Load * Balancers, Network Load Balancers, and Classic Load Balancers. You can select a * load balancer based on your application needs. For more information, see the Elastic * Load Balancing User Guide.

This reference covers the 2012-06-01 API, * which supports Classic Load Balancers. The 2015-12-01 API supports Application * Load Balancers and Network Load Balancers.

To get started, create a load * balancer with one or more listeners using CreateLoadBalancer. Register * your instances with the load balancer using * RegisterInstancesWithLoadBalancer.

All Elastic Load Balancing * operations are idempotent, which means that they complete at most one * time. If you repeat an operation, it succeeds with a 200 OK response code.

*/ class AWS_ELASTICLOADBALANCING_API ElasticLoadBalancingClient : public Aws::Client::AWSXMLClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSXMLClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef ElasticLoadBalancingClientConfiguration ClientConfigurationType; typedef ElasticLoadBalancingEndpointProvider 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. */ ElasticLoadBalancingClient(const Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration& clientConfiguration = Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration(), 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. */ ElasticLoadBalancingClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration& clientConfiguration = Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration()); /** * 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 */ ElasticLoadBalancingClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration& clientConfiguration = Aws::ElasticLoadBalancing::ElasticLoadBalancingClientConfiguration()); /* 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. */ ElasticLoadBalancingClient(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. */ ElasticLoadBalancingClient(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 */ ElasticLoadBalancingClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~ElasticLoadBalancingClient(); /** * Converts any request object to a presigned URL with the GET method, using region for the signer and a timeout of 15 minutes. */ Aws::String ConvertRequestToPresignedUrl(const Aws::AmazonSerializableWebServiceRequest& requestToConvert, const char* region) const; /** *

Adds the specified tags to the specified load balancer. Each load balancer * can have a maximum of 10 tags.

Each tag consists of a key and an optional * value. If a tag with the same key is already associated with the load balancer, * AddTags updates its value.

For more information, see Tag * Your Classic Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::AddTagsOutcome AddTags(const Model::AddTagsRequest& request) const; /** * A Callable wrapper for AddTags that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AddTagsOutcomeCallable AddTagsCallable(const AddTagsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::AddTags, request); } /** * An Async wrapper for AddTags that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AddTagsAsync(const AddTagsRequestT& request, const AddTagsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::AddTags, request, handler, context); } /** *

Associates one or more security groups with your load balancer in a virtual * private cloud (VPC). The specified security groups override the previously * associated security groups.

For more information, see Security * Groups for Load Balancers in a VPC in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::ApplySecurityGroupsToLoadBalancerOutcome ApplySecurityGroupsToLoadBalancer(const Model::ApplySecurityGroupsToLoadBalancerRequest& request) const; /** * A Callable wrapper for ApplySecurityGroupsToLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ApplySecurityGroupsToLoadBalancerOutcomeCallable ApplySecurityGroupsToLoadBalancerCallable(const ApplySecurityGroupsToLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::ApplySecurityGroupsToLoadBalancer, request); } /** * An Async wrapper for ApplySecurityGroupsToLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ApplySecurityGroupsToLoadBalancerAsync(const ApplySecurityGroupsToLoadBalancerRequestT& request, const ApplySecurityGroupsToLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::ApplySecurityGroupsToLoadBalancer, request, handler, context); } /** *

Adds one or more subnets to the set of configured subnets for the specified * load balancer.

The load balancer evenly distributes requests across all * registered subnets. For more information, see Add * or Remove Subnets for Your Load Balancer in a VPC in the Classic Load * Balancers Guide.

See Also:

AWS * API Reference

*/ virtual Model::AttachLoadBalancerToSubnetsOutcome AttachLoadBalancerToSubnets(const Model::AttachLoadBalancerToSubnetsRequest& request) const; /** * A Callable wrapper for AttachLoadBalancerToSubnets that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AttachLoadBalancerToSubnetsOutcomeCallable AttachLoadBalancerToSubnetsCallable(const AttachLoadBalancerToSubnetsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::AttachLoadBalancerToSubnets, request); } /** * An Async wrapper for AttachLoadBalancerToSubnets that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AttachLoadBalancerToSubnetsAsync(const AttachLoadBalancerToSubnetsRequestT& request, const AttachLoadBalancerToSubnetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::AttachLoadBalancerToSubnets, request, handler, context); } /** *

Specifies the health check settings to use when evaluating the health state * of your EC2 instances.

For more information, see Configure * Health Checks for Your Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::ConfigureHealthCheckOutcome ConfigureHealthCheck(const Model::ConfigureHealthCheckRequest& request) const; /** * A Callable wrapper for ConfigureHealthCheck that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ConfigureHealthCheckOutcomeCallable ConfigureHealthCheckCallable(const ConfigureHealthCheckRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::ConfigureHealthCheck, request); } /** * An Async wrapper for ConfigureHealthCheck that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ConfigureHealthCheckAsync(const ConfigureHealthCheckRequestT& request, const ConfigureHealthCheckResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::ConfigureHealthCheck, request, handler, context); } /** *

Generates a stickiness policy with sticky session lifetimes that follow that * of an application-generated cookie. This policy can be associated only with * HTTP/HTTPS listeners.

This policy is similar to the policy created by * CreateLBCookieStickinessPolicy, except that the lifetime of the special * Elastic Load Balancing cookie, AWSELB, follows the lifetime of the * application-generated cookie specified in the policy configuration. The load * balancer only inserts a new stickiness cookie when the application response * includes a new application cookie.

If the application cookie is * explicitly removed or expires, the session stops being sticky until a new * application cookie is issued.

For more information, see Application-Controlled * Session Stickiness in the Classic Load Balancers Guide.

See * Also:

AWS * API Reference

*/ virtual Model::CreateAppCookieStickinessPolicyOutcome CreateAppCookieStickinessPolicy(const Model::CreateAppCookieStickinessPolicyRequest& request) const; /** * A Callable wrapper for CreateAppCookieStickinessPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateAppCookieStickinessPolicyOutcomeCallable CreateAppCookieStickinessPolicyCallable(const CreateAppCookieStickinessPolicyRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::CreateAppCookieStickinessPolicy, request); } /** * An Async wrapper for CreateAppCookieStickinessPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateAppCookieStickinessPolicyAsync(const CreateAppCookieStickinessPolicyRequestT& request, const CreateAppCookieStickinessPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::CreateAppCookieStickinessPolicy, request, handler, context); } /** *

Generates a stickiness policy with sticky session lifetimes controlled by the * lifetime of the browser (user-agent) or a specified expiration period. This * policy can be associated only with HTTP/HTTPS listeners.

When a load * balancer implements this policy, the load balancer uses a special cookie to * track the instance for each request. When the load balancer receives a request, * it first checks to see if this cookie is present in the request. If so, the load * balancer sends the request to the application server specified in the cookie. If * not, the load balancer sends the request to a server that is chosen based on the * existing load-balancing algorithm.

A cookie is inserted into the response * for binding subsequent requests from the same user to that server. The validity * of the cookie is based on the cookie expiration time, which is specified in the * policy configuration.

For more information, see Duration-Based * Session Stickiness in the Classic Load Balancers Guide.

See * Also:

AWS * API Reference

*/ virtual Model::CreateLBCookieStickinessPolicyOutcome CreateLBCookieStickinessPolicy(const Model::CreateLBCookieStickinessPolicyRequest& request) const; /** * A Callable wrapper for CreateLBCookieStickinessPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateLBCookieStickinessPolicyOutcomeCallable CreateLBCookieStickinessPolicyCallable(const CreateLBCookieStickinessPolicyRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::CreateLBCookieStickinessPolicy, request); } /** * An Async wrapper for CreateLBCookieStickinessPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateLBCookieStickinessPolicyAsync(const CreateLBCookieStickinessPolicyRequestT& request, const CreateLBCookieStickinessPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::CreateLBCookieStickinessPolicy, request, handler, context); } /** *

Creates a Classic Load Balancer.

You can add listeners, security * groups, subnets, and tags when you create your load balancer, or you can add * them later using CreateLoadBalancerListeners, * ApplySecurityGroupsToLoadBalancer, AttachLoadBalancerToSubnets, * and AddTags.

To describe your current load balancers, see * DescribeLoadBalancers. When you are finished with a load balancer, you * can delete it using DeleteLoadBalancer.

You can create up to 20 * load balancers per region per account. You can request an increase for the * number of load balancers for your account. For more information, see Limits * for Your Classic Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::CreateLoadBalancerOutcome CreateLoadBalancer(const Model::CreateLoadBalancerRequest& request) const; /** * A Callable wrapper for CreateLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateLoadBalancerOutcomeCallable CreateLoadBalancerCallable(const CreateLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::CreateLoadBalancer, request); } /** * An Async wrapper for CreateLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateLoadBalancerAsync(const CreateLoadBalancerRequestT& request, const CreateLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::CreateLoadBalancer, request, handler, context); } /** *

Creates one or more listeners for the specified load balancer. If a listener * with the specified port does not already exist, it is created; otherwise, the * properties of the new listener must match the properties of the existing * listener.

For more information, see Listeners * for Your Classic Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::CreateLoadBalancerListenersOutcome CreateLoadBalancerListeners(const Model::CreateLoadBalancerListenersRequest& request) const; /** * A Callable wrapper for CreateLoadBalancerListeners that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateLoadBalancerListenersOutcomeCallable CreateLoadBalancerListenersCallable(const CreateLoadBalancerListenersRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::CreateLoadBalancerListeners, request); } /** * An Async wrapper for CreateLoadBalancerListeners that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateLoadBalancerListenersAsync(const CreateLoadBalancerListenersRequestT& request, const CreateLoadBalancerListenersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::CreateLoadBalancerListeners, request, handler, context); } /** *

Creates a policy with the specified attributes for the specified load * balancer.

Policies are settings that are saved for your load balancer and * that can be applied to the listener or the application server, depending on the * policy type.

See Also:

AWS * API Reference

*/ virtual Model::CreateLoadBalancerPolicyOutcome CreateLoadBalancerPolicy(const Model::CreateLoadBalancerPolicyRequest& request) const; /** * A Callable wrapper for CreateLoadBalancerPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateLoadBalancerPolicyOutcomeCallable CreateLoadBalancerPolicyCallable(const CreateLoadBalancerPolicyRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::CreateLoadBalancerPolicy, request); } /** * An Async wrapper for CreateLoadBalancerPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateLoadBalancerPolicyAsync(const CreateLoadBalancerPolicyRequestT& request, const CreateLoadBalancerPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::CreateLoadBalancerPolicy, request, handler, context); } /** *

Deletes the specified load balancer.

If you are attempting to recreate * a load balancer, you must reconfigure all settings. The DNS name associated with * a deleted load balancer are no longer usable. The name and associated DNS record * of the deleted load balancer no longer exist and traffic sent to any of its IP * addresses is no longer delivered to your instances.

If the load balancer * does not exist or has already been deleted, the call to * DeleteLoadBalancer still succeeds.

See Also:

AWS * API Reference

*/ virtual Model::DeleteLoadBalancerOutcome DeleteLoadBalancer(const Model::DeleteLoadBalancerRequest& request) const; /** * A Callable wrapper for DeleteLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteLoadBalancerOutcomeCallable DeleteLoadBalancerCallable(const DeleteLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DeleteLoadBalancer, request); } /** * An Async wrapper for DeleteLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteLoadBalancerAsync(const DeleteLoadBalancerRequestT& request, const DeleteLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DeleteLoadBalancer, request, handler, context); } /** *

Deletes the specified listeners from the specified load * balancer.

See Also:

AWS * API Reference

*/ virtual Model::DeleteLoadBalancerListenersOutcome DeleteLoadBalancerListeners(const Model::DeleteLoadBalancerListenersRequest& request) const; /** * A Callable wrapper for DeleteLoadBalancerListeners that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteLoadBalancerListenersOutcomeCallable DeleteLoadBalancerListenersCallable(const DeleteLoadBalancerListenersRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DeleteLoadBalancerListeners, request); } /** * An Async wrapper for DeleteLoadBalancerListeners that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteLoadBalancerListenersAsync(const DeleteLoadBalancerListenersRequestT& request, const DeleteLoadBalancerListenersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DeleteLoadBalancerListeners, request, handler, context); } /** *

Deletes the specified policy from the specified load balancer. This policy * must not be enabled for any listeners.

See Also:

AWS * API Reference

*/ virtual Model::DeleteLoadBalancerPolicyOutcome DeleteLoadBalancerPolicy(const Model::DeleteLoadBalancerPolicyRequest& request) const; /** * A Callable wrapper for DeleteLoadBalancerPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteLoadBalancerPolicyOutcomeCallable DeleteLoadBalancerPolicyCallable(const DeleteLoadBalancerPolicyRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DeleteLoadBalancerPolicy, request); } /** * An Async wrapper for DeleteLoadBalancerPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteLoadBalancerPolicyAsync(const DeleteLoadBalancerPolicyRequestT& request, const DeleteLoadBalancerPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DeleteLoadBalancerPolicy, request, handler, context); } /** *

Deregisters the specified instances from the specified load balancer. After * the instance is deregistered, it no longer receives traffic from the load * balancer.

You can use DescribeLoadBalancers to verify that the * instance is deregistered from the load balancer.

For more information, * see Register * or De-Register EC2 Instances in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::DeregisterInstancesFromLoadBalancerOutcome DeregisterInstancesFromLoadBalancer(const Model::DeregisterInstancesFromLoadBalancerRequest& request) const; /** * A Callable wrapper for DeregisterInstancesFromLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeregisterInstancesFromLoadBalancerOutcomeCallable DeregisterInstancesFromLoadBalancerCallable(const DeregisterInstancesFromLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DeregisterInstancesFromLoadBalancer, request); } /** * An Async wrapper for DeregisterInstancesFromLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeregisterInstancesFromLoadBalancerAsync(const DeregisterInstancesFromLoadBalancerRequestT& request, const DeregisterInstancesFromLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DeregisterInstancesFromLoadBalancer, request, handler, context); } /** *

Describes the current Elastic Load Balancing resource limits for your AWS * account.

For more information, see Limits * for Your Classic Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAccountLimitsOutcome DescribeAccountLimits(const Model::DescribeAccountLimitsRequest& request) const; /** * A Callable wrapper for DescribeAccountLimits that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAccountLimitsOutcomeCallable DescribeAccountLimitsCallable(const DescribeAccountLimitsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeAccountLimits, request); } /** * An Async wrapper for DescribeAccountLimits that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAccountLimitsAsync(const DescribeAccountLimitsRequestT& request, const DescribeAccountLimitsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeAccountLimits, request, handler, context); } /** *

Describes the state of the specified instances with respect to the specified * load balancer. If no instances are specified, the call describes the state of * all instances that are currently registered with the load balancer. If instances * are specified, their state is returned even if they are no longer registered * with the load balancer. The state of terminated instances is not * returned.

See Also:

AWS * API Reference

*/ virtual Model::DescribeInstanceHealthOutcome DescribeInstanceHealth(const Model::DescribeInstanceHealthRequest& request) const; /** * A Callable wrapper for DescribeInstanceHealth that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeInstanceHealthOutcomeCallable DescribeInstanceHealthCallable(const DescribeInstanceHealthRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeInstanceHealth, request); } /** * An Async wrapper for DescribeInstanceHealth that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeInstanceHealthAsync(const DescribeInstanceHealthRequestT& request, const DescribeInstanceHealthResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeInstanceHealth, request, handler, context); } /** *

Describes the attributes for the specified load balancer.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeLoadBalancerAttributesOutcome DescribeLoadBalancerAttributes(const Model::DescribeLoadBalancerAttributesRequest& request) const; /** * A Callable wrapper for DescribeLoadBalancerAttributes that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLoadBalancerAttributesOutcomeCallable DescribeLoadBalancerAttributesCallable(const DescribeLoadBalancerAttributesRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeLoadBalancerAttributes, request); } /** * An Async wrapper for DescribeLoadBalancerAttributes that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLoadBalancerAttributesAsync(const DescribeLoadBalancerAttributesRequestT& request, const DescribeLoadBalancerAttributesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeLoadBalancerAttributes, request, handler, context); } /** *

Describes the specified policies.

If you specify a load balancer name, * the action returns the descriptions of all policies created for the load * balancer. If you specify a policy name associated with your load balancer, the * action returns the description of that policy. If you don't specify a load * balancer name, the action returns descriptions of the specified sample policies, * or descriptions of all sample policies. The names of the sample policies have * the ELBSample- prefix.

See Also:

AWS * API Reference

*/ virtual Model::DescribeLoadBalancerPoliciesOutcome DescribeLoadBalancerPolicies(const Model::DescribeLoadBalancerPoliciesRequest& request) const; /** * A Callable wrapper for DescribeLoadBalancerPolicies that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLoadBalancerPoliciesOutcomeCallable DescribeLoadBalancerPoliciesCallable(const DescribeLoadBalancerPoliciesRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeLoadBalancerPolicies, request); } /** * An Async wrapper for DescribeLoadBalancerPolicies that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLoadBalancerPoliciesAsync(const DescribeLoadBalancerPoliciesRequestT& request, const DescribeLoadBalancerPoliciesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeLoadBalancerPolicies, request, handler, context); } /** *

Describes the specified load balancer policy types or all load balancer * policy types.

The description of each type indicates how it can be used. * For example, some policies can be used only with layer 7 listeners, some * policies can be used only with layer 4 listeners, and some policies can be used * only with your EC2 instances.

You can use CreateLoadBalancerPolicy * to create a policy configuration for any of these policy types. Then, depending * on the policy type, use either SetLoadBalancerPoliciesOfListener or * SetLoadBalancerPoliciesForBackendServer to set the policy.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeLoadBalancerPolicyTypesOutcome DescribeLoadBalancerPolicyTypes(const Model::DescribeLoadBalancerPolicyTypesRequest& request) const; /** * A Callable wrapper for DescribeLoadBalancerPolicyTypes that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLoadBalancerPolicyTypesOutcomeCallable DescribeLoadBalancerPolicyTypesCallable(const DescribeLoadBalancerPolicyTypesRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeLoadBalancerPolicyTypes, request); } /** * An Async wrapper for DescribeLoadBalancerPolicyTypes that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLoadBalancerPolicyTypesAsync(const DescribeLoadBalancerPolicyTypesRequestT& request, const DescribeLoadBalancerPolicyTypesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeLoadBalancerPolicyTypes, request, handler, context); } /** *

Describes the specified the load balancers. If no load balancers are * specified, the call describes all of your load balancers.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeLoadBalancersOutcome DescribeLoadBalancers(const Model::DescribeLoadBalancersRequest& request) const; /** * A Callable wrapper for DescribeLoadBalancers that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLoadBalancersOutcomeCallable DescribeLoadBalancersCallable(const DescribeLoadBalancersRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeLoadBalancers, request); } /** * An Async wrapper for DescribeLoadBalancers that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLoadBalancersAsync(const DescribeLoadBalancersRequestT& request, const DescribeLoadBalancersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeLoadBalancers, request, handler, context); } /** *

Describes the tags associated with the specified load * balancers.

See Also:

AWS * API Reference

*/ virtual Model::DescribeTagsOutcome DescribeTags(const Model::DescribeTagsRequest& request) const; /** * A Callable wrapper for DescribeTags that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeTagsOutcomeCallable DescribeTagsCallable(const DescribeTagsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DescribeTags, request); } /** * An Async wrapper for DescribeTags that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeTagsAsync(const DescribeTagsRequestT& request, const DescribeTagsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DescribeTags, request, handler, context); } /** *

Removes the specified subnets from the set of configured subnets for the load * balancer.

After a subnet is removed, all EC2 instances registered with * the load balancer in the removed subnet go into the OutOfService * state. Then, the load balancer balances the traffic among the remaining routable * subnets.

See Also:

AWS * API Reference

*/ virtual Model::DetachLoadBalancerFromSubnetsOutcome DetachLoadBalancerFromSubnets(const Model::DetachLoadBalancerFromSubnetsRequest& request) const; /** * A Callable wrapper for DetachLoadBalancerFromSubnets that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DetachLoadBalancerFromSubnetsOutcomeCallable DetachLoadBalancerFromSubnetsCallable(const DetachLoadBalancerFromSubnetsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DetachLoadBalancerFromSubnets, request); } /** * An Async wrapper for DetachLoadBalancerFromSubnets that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DetachLoadBalancerFromSubnetsAsync(const DetachLoadBalancerFromSubnetsRequestT& request, const DetachLoadBalancerFromSubnetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DetachLoadBalancerFromSubnets, request, handler, context); } /** *

Removes the specified Availability Zones from the set of Availability Zones * for the specified load balancer in EC2-Classic or a default VPC.

For load * balancers in a non-default VPC, use DetachLoadBalancerFromSubnets.

*

There must be at least one Availability Zone registered with a load balancer * at all times. After an Availability Zone is removed, all instances registered * with the load balancer that are in the removed Availability Zone go into the * OutOfService state. Then, the load balancer attempts to equally * balance the traffic among its remaining Availability Zones.

For more * information, see Add * or Remove Availability Zones in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::DisableAvailabilityZonesForLoadBalancerOutcome DisableAvailabilityZonesForLoadBalancer(const Model::DisableAvailabilityZonesForLoadBalancerRequest& request) const; /** * A Callable wrapper for DisableAvailabilityZonesForLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DisableAvailabilityZonesForLoadBalancerOutcomeCallable DisableAvailabilityZonesForLoadBalancerCallable(const DisableAvailabilityZonesForLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::DisableAvailabilityZonesForLoadBalancer, request); } /** * An Async wrapper for DisableAvailabilityZonesForLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DisableAvailabilityZonesForLoadBalancerAsync(const DisableAvailabilityZonesForLoadBalancerRequestT& request, const DisableAvailabilityZonesForLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::DisableAvailabilityZonesForLoadBalancer, request, handler, context); } /** *

Adds the specified Availability Zones to the set of Availability Zones for * the specified load balancer in EC2-Classic or a default VPC.

For load * balancers in a non-default VPC, use AttachLoadBalancerToSubnets.

*

The load balancer evenly distributes requests across all its registered * Availability Zones that contain instances. For more information, see Add * or Remove Availability Zones in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::EnableAvailabilityZonesForLoadBalancerOutcome EnableAvailabilityZonesForLoadBalancer(const Model::EnableAvailabilityZonesForLoadBalancerRequest& request) const; /** * A Callable wrapper for EnableAvailabilityZonesForLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::EnableAvailabilityZonesForLoadBalancerOutcomeCallable EnableAvailabilityZonesForLoadBalancerCallable(const EnableAvailabilityZonesForLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::EnableAvailabilityZonesForLoadBalancer, request); } /** * An Async wrapper for EnableAvailabilityZonesForLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void EnableAvailabilityZonesForLoadBalancerAsync(const EnableAvailabilityZonesForLoadBalancerRequestT& request, const EnableAvailabilityZonesForLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::EnableAvailabilityZonesForLoadBalancer, request, handler, context); } /** *

Modifies the attributes of the specified load balancer.

You can modify * the load balancer attributes, such as AccessLogs, * ConnectionDraining, and CrossZoneLoadBalancing by * either enabling or disabling them. Or, you can modify the load balancer * attribute ConnectionSettings by specifying an idle connection * timeout value for your load balancer.

For more information, see the * following in the Classic Load Balancers Guide:

See Also:

AWS * API Reference

*/ virtual Model::ModifyLoadBalancerAttributesOutcome ModifyLoadBalancerAttributes(const Model::ModifyLoadBalancerAttributesRequest& request) const; /** * A Callable wrapper for ModifyLoadBalancerAttributes that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ModifyLoadBalancerAttributesOutcomeCallable ModifyLoadBalancerAttributesCallable(const ModifyLoadBalancerAttributesRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::ModifyLoadBalancerAttributes, request); } /** * An Async wrapper for ModifyLoadBalancerAttributes that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ModifyLoadBalancerAttributesAsync(const ModifyLoadBalancerAttributesRequestT& request, const ModifyLoadBalancerAttributesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::ModifyLoadBalancerAttributes, request, handler, context); } /** *

Adds the specified instances to the specified load balancer.

The * instance must be a running instance in the same network as the load balancer * (EC2-Classic or the same VPC). If you have EC2-Classic instances and a load * balancer in a VPC with ClassicLink enabled, you can link the EC2-Classic * instances to that VPC and then register the linked EC2-Classic instances with * the load balancer in the VPC.

Note that * RegisterInstanceWithLoadBalancer completes when the request has * been registered. Instance registration takes a little time to complete. To check * the state of the registered instances, use DescribeLoadBalancers or * DescribeInstanceHealth.

After the instance is registered, it * starts receiving traffic and requests from the load balancer. Any instance that * is not in one of the Availability Zones registered for the load balancer is * moved to the OutOfService state. If an Availability Zone is added * to the load balancer later, any instances registered with the load balancer move * to the InService state.

To deregister instances from a load * balancer, use DeregisterInstancesFromLoadBalancer.

For more * information, see Register * or De-Register EC2 Instances in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::RegisterInstancesWithLoadBalancerOutcome RegisterInstancesWithLoadBalancer(const Model::RegisterInstancesWithLoadBalancerRequest& request) const; /** * A Callable wrapper for RegisterInstancesWithLoadBalancer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::RegisterInstancesWithLoadBalancerOutcomeCallable RegisterInstancesWithLoadBalancerCallable(const RegisterInstancesWithLoadBalancerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::RegisterInstancesWithLoadBalancer, request); } /** * An Async wrapper for RegisterInstancesWithLoadBalancer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void RegisterInstancesWithLoadBalancerAsync(const RegisterInstancesWithLoadBalancerRequestT& request, const RegisterInstancesWithLoadBalancerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::RegisterInstancesWithLoadBalancer, request, handler, context); } /** *

Removes one or more tags from the specified load balancer.

See * Also:

AWS * API Reference

*/ virtual Model::RemoveTagsOutcome RemoveTags(const Model::RemoveTagsRequest& request) const; /** * A Callable wrapper for RemoveTags that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::RemoveTagsOutcomeCallable RemoveTagsCallable(const RemoveTagsRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::RemoveTags, request); } /** * An Async wrapper for RemoveTags that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void RemoveTagsAsync(const RemoveTagsRequestT& request, const RemoveTagsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::RemoveTags, request, handler, context); } /** *

Sets the certificate that terminates the specified listener's SSL * connections. The specified certificate replaces any prior certificate that was * used on the same load balancer and port.

For more information about * updating your SSL certificate, see Replace * the SSL Certificate for Your Load Balancer in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::SetLoadBalancerListenerSSLCertificateOutcome SetLoadBalancerListenerSSLCertificate(const Model::SetLoadBalancerListenerSSLCertificateRequest& request) const; /** * A Callable wrapper for SetLoadBalancerListenerSSLCertificate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::SetLoadBalancerListenerSSLCertificateOutcomeCallable SetLoadBalancerListenerSSLCertificateCallable(const SetLoadBalancerListenerSSLCertificateRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::SetLoadBalancerListenerSSLCertificate, request); } /** * An Async wrapper for SetLoadBalancerListenerSSLCertificate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void SetLoadBalancerListenerSSLCertificateAsync(const SetLoadBalancerListenerSSLCertificateRequestT& request, const SetLoadBalancerListenerSSLCertificateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::SetLoadBalancerListenerSSLCertificate, request, handler, context); } /** *

Replaces the set of policies associated with the specified port on which the * EC2 instance is listening with a new set of policies. At this time, only the * back-end server authentication policy type can be applied to the instance ports; * this policy type is composed of multiple public key policies.

Each time * you use SetLoadBalancerPoliciesForBackendServer to enable the * policies, use the PolicyNames parameter to list the policies that * you want to enable.

You can use DescribeLoadBalancers or * DescribeLoadBalancerPolicies to verify that the policy is associated with * the EC2 instance.

For more information about enabling back-end instance * authentication, see Configure * Back-end Instance Authentication in the Classic Load Balancers Guide. * For more information about Proxy Protocol, see Configure * Proxy Protocol Support in the Classic Load Balancers * Guide.

See Also:

AWS * API Reference

*/ virtual Model::SetLoadBalancerPoliciesForBackendServerOutcome SetLoadBalancerPoliciesForBackendServer(const Model::SetLoadBalancerPoliciesForBackendServerRequest& request) const; /** * A Callable wrapper for SetLoadBalancerPoliciesForBackendServer that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::SetLoadBalancerPoliciesForBackendServerOutcomeCallable SetLoadBalancerPoliciesForBackendServerCallable(const SetLoadBalancerPoliciesForBackendServerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::SetLoadBalancerPoliciesForBackendServer, request); } /** * An Async wrapper for SetLoadBalancerPoliciesForBackendServer that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void SetLoadBalancerPoliciesForBackendServerAsync(const SetLoadBalancerPoliciesForBackendServerRequestT& request, const SetLoadBalancerPoliciesForBackendServerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::SetLoadBalancerPoliciesForBackendServer, request, handler, context); } /** *

Replaces the current set of policies for the specified load balancer port * with the specified set of policies.

To enable back-end server * authentication, use SetLoadBalancerPoliciesForBackendServer.

For * more information about setting policies, see Update * the SSL Negotiation Configuration, Duration-Based * Session Stickiness, and Application-Controlled * Session Stickiness in the Classic Load Balancers Guide.

See * Also:

AWS * API Reference

*/ virtual Model::SetLoadBalancerPoliciesOfListenerOutcome SetLoadBalancerPoliciesOfListener(const Model::SetLoadBalancerPoliciesOfListenerRequest& request) const; /** * A Callable wrapper for SetLoadBalancerPoliciesOfListener that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::SetLoadBalancerPoliciesOfListenerOutcomeCallable SetLoadBalancerPoliciesOfListenerCallable(const SetLoadBalancerPoliciesOfListenerRequestT& request) const { return SubmitCallable(&ElasticLoadBalancingClient::SetLoadBalancerPoliciesOfListener, request); } /** * An Async wrapper for SetLoadBalancerPoliciesOfListener that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void SetLoadBalancerPoliciesOfListenerAsync(const SetLoadBalancerPoliciesOfListenerRequestT& request, const SetLoadBalancerPoliciesOfListenerResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&ElasticLoadBalancingClient::SetLoadBalancerPoliciesOfListener, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const ElasticLoadBalancingClientConfiguration& clientConfiguration); ElasticLoadBalancingClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace ElasticLoadBalancing } // namespace Aws