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

Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that * makes it easy for you to run Kubernetes on Amazon Web Services without needing * to stand up or maintain your own Kubernetes control plane. Kubernetes is an * open-source system for automating the deployment, scaling, and management of * containerized applications.

Amazon EKS runs up-to-date versions of the * open-source Kubernetes software, so you can use all the existing plugins and * tooling from the Kubernetes community. Applications running on Amazon EKS are * fully compatible with applications running on any standard Kubernetes * environment, whether running in on-premises data centers or public clouds. This * means that you can easily migrate any standard Kubernetes application to Amazon * EKS without any code modification required.

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

Associate encryption configuration to an existing cluster.

You can use * this API to enable encryption on existing clusters which do not have encryption * already enabled. This allows you to implement a defense-in-depth security * strategy without migrating applications to new Amazon EKS * clusters.

See Also:

AWS * API Reference

*/ virtual Model::AssociateEncryptionConfigOutcome AssociateEncryptionConfig(const Model::AssociateEncryptionConfigRequest& request) const; /** * A Callable wrapper for AssociateEncryptionConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AssociateEncryptionConfigOutcomeCallable AssociateEncryptionConfigCallable(const AssociateEncryptionConfigRequestT& request) const { return SubmitCallable(&EKSClient::AssociateEncryptionConfig, request); } /** * An Async wrapper for AssociateEncryptionConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AssociateEncryptionConfigAsync(const AssociateEncryptionConfigRequestT& request, const AssociateEncryptionConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::AssociateEncryptionConfig, request, handler, context); } /** *

Associate an identity provider configuration to a cluster.

If you want * to authenticate identities using an identity provider, you can create an * identity provider configuration and associate it to your cluster. After * configuring authentication to your cluster you can create Kubernetes * roles and clusterroles to assign permissions to the * roles, and then bind the roles to the identities using Kubernetes * rolebindings and clusterrolebindings. For more * information see Using RBAC * Authorization in the Kubernetes documentation.

See Also:

AWS * API Reference

*/ virtual Model::AssociateIdentityProviderConfigOutcome AssociateIdentityProviderConfig(const Model::AssociateIdentityProviderConfigRequest& request) const; /** * A Callable wrapper for AssociateIdentityProviderConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AssociateIdentityProviderConfigOutcomeCallable AssociateIdentityProviderConfigCallable(const AssociateIdentityProviderConfigRequestT& request) const { return SubmitCallable(&EKSClient::AssociateIdentityProviderConfig, request); } /** * An Async wrapper for AssociateIdentityProviderConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AssociateIdentityProviderConfigAsync(const AssociateIdentityProviderConfigRequestT& request, const AssociateIdentityProviderConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::AssociateIdentityProviderConfig, request, handler, context); } /** *

Creates an Amazon EKS add-on.

Amazon EKS add-ons help to automate the * provisioning and lifecycle management of common operational software for Amazon * EKS clusters. For more information, see Amazon * EKS add-ons in the Amazon EKS User Guide.

See Also:

* AWS * API Reference

*/ virtual Model::CreateAddonOutcome CreateAddon(const Model::CreateAddonRequest& request) const; /** * A Callable wrapper for CreateAddon that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateAddonOutcomeCallable CreateAddonCallable(const CreateAddonRequestT& request) const { return SubmitCallable(&EKSClient::CreateAddon, request); } /** * An Async wrapper for CreateAddon that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateAddonAsync(const CreateAddonRequestT& request, const CreateAddonResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::CreateAddon, request, handler, context); } /** *

Creates an Amazon EKS control plane.

The Amazon EKS control plane * consists of control plane instances that run the Kubernetes software, such as * etcd and the API server. The control plane runs in an account * managed by Amazon Web Services, and the Kubernetes API is exposed by the Amazon * EKS API server endpoint. Each Amazon EKS cluster control plane is single tenant * and unique. It runs on its own set of Amazon EC2 instances.

The cluster * control plane is provisioned across multiple Availability Zones and fronted by * an Elastic Load Balancing Network Load Balancer. Amazon EKS also provisions * elastic network interfaces in your VPC subnets to provide connectivity from the * control plane instances to the nodes (for example, to support kubectl * exec, logs, and proxy data flows).

*

Amazon EKS nodes run in your Amazon Web Services account and connect to your * cluster's control plane over the Kubernetes API server endpoint and a * certificate file that is created for your cluster.

In most cases, it * takes several minutes to create a cluster. After you create an Amazon EKS * cluster, you must configure your Kubernetes tooling to communicate with the API * server and launch nodes into your cluster. For more information, see Managing * Cluster Authentication and Launching * Amazon EKS nodes in the Amazon EKS User Guide.

See * Also:

AWS * API Reference

*/ virtual Model::CreateClusterOutcome CreateCluster(const Model::CreateClusterRequest& request) const; /** * A Callable wrapper for CreateCluster that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateClusterOutcomeCallable CreateClusterCallable(const CreateClusterRequestT& request) const { return SubmitCallable(&EKSClient::CreateCluster, request); } /** * An Async wrapper for CreateCluster that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateClusterAsync(const CreateClusterRequestT& request, const CreateClusterResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::CreateCluster, request, handler, context); } /** *

Creates an Fargate profile for your Amazon EKS cluster. You must have at * least one Fargate profile in a cluster to be able to run pods on Fargate.

*

The Fargate profile allows an administrator to declare which pods run on * Fargate and specify which pods run on which Fargate profile. This declaration is * done through the profile’s selectors. Each profile can have up to five selectors * that contain a namespace and labels. A namespace is required for every selector. * The label field consists of multiple optional key-value pairs. Pods that match * the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of * the selectors in the Fargate profile, then that pod is run on Fargate.

*

When you create a Fargate profile, you must specify a pod execution role to * use with the pods that are scheduled with the profile. This role is added to the * cluster's Kubernetes Role Based Access * Control (RBAC) for authorization so that the kubelet that is * running on the Fargate infrastructure can register with your Amazon EKS cluster * so that it can appear in your cluster as a node. The pod execution role also * provides IAM permissions to the Fargate infrastructure to allow read access to * Amazon ECR image repositories. For more information, see Pod * Execution Role in the Amazon EKS User Guide.

Fargate profiles * are immutable. However, you can create a new updated profile to replace an * existing profile and then delete the original after the updated profile has * finished creating.

If any Fargate profiles in a cluster are in the * DELETING status, you must wait for that Fargate profile to finish * deleting before you can create any other profiles in that cluster.

For * more information, see Fargate * Profile in the Amazon EKS User Guide.

See Also:

AWS * API Reference

*/ virtual Model::CreateFargateProfileOutcome CreateFargateProfile(const Model::CreateFargateProfileRequest& request) const; /** * A Callable wrapper for CreateFargateProfile that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateFargateProfileOutcomeCallable CreateFargateProfileCallable(const CreateFargateProfileRequestT& request) const { return SubmitCallable(&EKSClient::CreateFargateProfile, request); } /** * An Async wrapper for CreateFargateProfile that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateFargateProfileAsync(const CreateFargateProfileRequestT& request, const CreateFargateProfileResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::CreateFargateProfile, request, handler, context); } /** *

Creates a managed node group for an Amazon EKS cluster. You can only create a * node group for your cluster that is equal to the current Kubernetes version for * the cluster. All node groups are created with the latest AMI release version for * the respective minor Kubernetes version of the cluster, unless you deploy a * custom AMI using a launch template. For more information about using launch * templates, see Launch * template support.

An Amazon EKS managed node group is an Amazon EC2 * Auto Scaling group and associated Amazon EC2 instances that are managed by * Amazon Web Services for an Amazon EKS cluster. For more information, see Managed * node groups in the Amazon EKS User Guide.

Windows AMI * types are only supported for commercial Regions that support Windows Amazon * EKS.

See Also:

AWS * API Reference

*/ virtual Model::CreateNodegroupOutcome CreateNodegroup(const Model::CreateNodegroupRequest& request) const; /** * A Callable wrapper for CreateNodegroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateNodegroupOutcomeCallable CreateNodegroupCallable(const CreateNodegroupRequestT& request) const { return SubmitCallable(&EKSClient::CreateNodegroup, request); } /** * An Async wrapper for CreateNodegroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateNodegroupAsync(const CreateNodegroupRequestT& request, const CreateNodegroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::CreateNodegroup, request, handler, context); } /** *

Delete an Amazon EKS add-on.

When you remove the add-on, it will also * be deleted from the cluster. You can always manually start an add-on on the * cluster using the Kubernetes API.

See Also:

AWS API * Reference

*/ virtual Model::DeleteAddonOutcome DeleteAddon(const Model::DeleteAddonRequest& request) const; /** * A Callable wrapper for DeleteAddon that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteAddonOutcomeCallable DeleteAddonCallable(const DeleteAddonRequestT& request) const { return SubmitCallable(&EKSClient::DeleteAddon, request); } /** * An Async wrapper for DeleteAddon that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteAddonAsync(const DeleteAddonRequestT& request, const DeleteAddonResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DeleteAddon, request, handler, context); } /** *

Deletes the Amazon EKS cluster control plane.

If you have active * services in your cluster that are associated with a load balancer, you must * delete those services before deleting the cluster so that the load balancers are * deleted properly. Otherwise, you can have orphaned resources in your VPC that * prevent you from being able to delete the VPC. For more information, see Deleting * a Cluster in the Amazon EKS User Guide.

If you have managed * node groups or Fargate profiles attached to the cluster, you must delete them * first. For more information, see DeleteNodegroup and * DeleteFargateProfile.

See Also:

AWS * API Reference

*/ virtual Model::DeleteClusterOutcome DeleteCluster(const Model::DeleteClusterRequest& request) const; /** * A Callable wrapper for DeleteCluster that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteClusterOutcomeCallable DeleteClusterCallable(const DeleteClusterRequestT& request) const { return SubmitCallable(&EKSClient::DeleteCluster, request); } /** * An Async wrapper for DeleteCluster that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteClusterAsync(const DeleteClusterRequestT& request, const DeleteClusterResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DeleteCluster, request, handler, context); } /** *

Deletes an Fargate profile.

When you delete a Fargate profile, any * pods running on Fargate that were created with the profile are deleted. If those * pods match another Fargate profile, then they are scheduled on Fargate with that * profile. If they no longer match any Fargate profiles, then they are not * scheduled on Fargate and they may remain in a pending state.

Only one * Fargate profile in a cluster can be in the DELETING status at a * time. You must wait for a Fargate profile to finish deleting before you can * delete any other profiles in that cluster.

See Also:

AWS * API Reference

*/ virtual Model::DeleteFargateProfileOutcome DeleteFargateProfile(const Model::DeleteFargateProfileRequest& request) const; /** * A Callable wrapper for DeleteFargateProfile that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteFargateProfileOutcomeCallable DeleteFargateProfileCallable(const DeleteFargateProfileRequestT& request) const { return SubmitCallable(&EKSClient::DeleteFargateProfile, request); } /** * An Async wrapper for DeleteFargateProfile that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteFargateProfileAsync(const DeleteFargateProfileRequestT& request, const DeleteFargateProfileResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DeleteFargateProfile, request, handler, context); } /** *

Deletes an Amazon EKS node group for a cluster.

See Also:

AWS * API Reference

*/ virtual Model::DeleteNodegroupOutcome DeleteNodegroup(const Model::DeleteNodegroupRequest& request) const; /** * A Callable wrapper for DeleteNodegroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteNodegroupOutcomeCallable DeleteNodegroupCallable(const DeleteNodegroupRequestT& request) const { return SubmitCallable(&EKSClient::DeleteNodegroup, request); } /** * An Async wrapper for DeleteNodegroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteNodegroupAsync(const DeleteNodegroupRequestT& request, const DeleteNodegroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DeleteNodegroup, request, handler, context); } /** *

Deregisters a connected cluster to remove it from the Amazon EKS control * plane.

See Also:

AWS * API Reference

*/ virtual Model::DeregisterClusterOutcome DeregisterCluster(const Model::DeregisterClusterRequest& request) const; /** * A Callable wrapper for DeregisterCluster that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeregisterClusterOutcomeCallable DeregisterClusterCallable(const DeregisterClusterRequestT& request) const { return SubmitCallable(&EKSClient::DeregisterCluster, request); } /** * An Async wrapper for DeregisterCluster that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeregisterClusterAsync(const DeregisterClusterRequestT& request, const DeregisterClusterResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DeregisterCluster, request, handler, context); } /** *

Describes an Amazon EKS add-on.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAddonOutcome DescribeAddon(const Model::DescribeAddonRequest& request) const; /** * A Callable wrapper for DescribeAddon that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAddonOutcomeCallable DescribeAddonCallable(const DescribeAddonRequestT& request) const { return SubmitCallable(&EKSClient::DescribeAddon, request); } /** * An Async wrapper for DescribeAddon that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAddonAsync(const DescribeAddonRequestT& request, const DescribeAddonResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeAddon, request, handler, context); } /** *

Returns configuration options.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAddonConfigurationOutcome DescribeAddonConfiguration(const Model::DescribeAddonConfigurationRequest& request) const; /** * A Callable wrapper for DescribeAddonConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAddonConfigurationOutcomeCallable DescribeAddonConfigurationCallable(const DescribeAddonConfigurationRequestT& request) const { return SubmitCallable(&EKSClient::DescribeAddonConfiguration, request); } /** * An Async wrapper for DescribeAddonConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAddonConfigurationAsync(const DescribeAddonConfigurationRequestT& request, const DescribeAddonConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeAddonConfiguration, request, handler, context); } /** *

Describes the versions for an add-on. Information such as the Kubernetes * versions that you can use the add-on with, the owner, * publisher, and the type of the add-on are returned. *

See Also:

AWS * API Reference

*/ virtual Model::DescribeAddonVersionsOutcome DescribeAddonVersions(const Model::DescribeAddonVersionsRequest& request) const; /** * A Callable wrapper for DescribeAddonVersions that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAddonVersionsOutcomeCallable DescribeAddonVersionsCallable(const DescribeAddonVersionsRequestT& request) const { return SubmitCallable(&EKSClient::DescribeAddonVersions, request); } /** * An Async wrapper for DescribeAddonVersions that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAddonVersionsAsync(const DescribeAddonVersionsRequestT& request, const DescribeAddonVersionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeAddonVersions, request, handler, context); } /** *

Returns descriptive information about an Amazon EKS cluster.

The API * server endpoint and certificate authority data returned by this operation are * required for kubelet and kubectl to communicate with * your Kubernetes API server. For more information, see Create * a kubeconfig for Amazon EKS.

The API server endpoint and * certificate authority data aren't available until the cluster reaches the * ACTIVE state.

See Also:

AWS * API Reference

*/ virtual Model::DescribeClusterOutcome DescribeCluster(const Model::DescribeClusterRequest& request) const; /** * A Callable wrapper for DescribeCluster that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeClusterOutcomeCallable DescribeClusterCallable(const DescribeClusterRequestT& request) const { return SubmitCallable(&EKSClient::DescribeCluster, request); } /** * An Async wrapper for DescribeCluster that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeClusterAsync(const DescribeClusterRequestT& request, const DescribeClusterResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeCluster, request, handler, context); } /** *

Returns descriptive information about an Fargate profile.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeFargateProfileOutcome DescribeFargateProfile(const Model::DescribeFargateProfileRequest& request) const; /** * A Callable wrapper for DescribeFargateProfile that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeFargateProfileOutcomeCallable DescribeFargateProfileCallable(const DescribeFargateProfileRequestT& request) const { return SubmitCallable(&EKSClient::DescribeFargateProfile, request); } /** * An Async wrapper for DescribeFargateProfile that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeFargateProfileAsync(const DescribeFargateProfileRequestT& request, const DescribeFargateProfileResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeFargateProfile, request, handler, context); } /** *

Returns descriptive information about an identity provider * configuration.

See Also:

AWS * API Reference

*/ virtual Model::DescribeIdentityProviderConfigOutcome DescribeIdentityProviderConfig(const Model::DescribeIdentityProviderConfigRequest& request) const; /** * A Callable wrapper for DescribeIdentityProviderConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeIdentityProviderConfigOutcomeCallable DescribeIdentityProviderConfigCallable(const DescribeIdentityProviderConfigRequestT& request) const { return SubmitCallable(&EKSClient::DescribeIdentityProviderConfig, request); } /** * An Async wrapper for DescribeIdentityProviderConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeIdentityProviderConfigAsync(const DescribeIdentityProviderConfigRequestT& request, const DescribeIdentityProviderConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeIdentityProviderConfig, request, handler, context); } /** *

Returns descriptive information about an Amazon EKS node group.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeNodegroupOutcome DescribeNodegroup(const Model::DescribeNodegroupRequest& request) const; /** * A Callable wrapper for DescribeNodegroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeNodegroupOutcomeCallable DescribeNodegroupCallable(const DescribeNodegroupRequestT& request) const { return SubmitCallable(&EKSClient::DescribeNodegroup, request); } /** * An Async wrapper for DescribeNodegroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeNodegroupAsync(const DescribeNodegroupRequestT& request, const DescribeNodegroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeNodegroup, request, handler, context); } /** *

Returns descriptive information about an update against your Amazon EKS * cluster or associated managed node group or Amazon EKS add-on.

When the * status of the update is Succeeded, the update is complete. If an * update fails, the status is Failed, and an error detail explains * the reason for the failure.

See Also:

AWS * API Reference

*/ virtual Model::DescribeUpdateOutcome DescribeUpdate(const Model::DescribeUpdateRequest& request) const; /** * A Callable wrapper for DescribeUpdate that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeUpdateOutcomeCallable DescribeUpdateCallable(const DescribeUpdateRequestT& request) const { return SubmitCallable(&EKSClient::DescribeUpdate, request); } /** * An Async wrapper for DescribeUpdate that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeUpdateAsync(const DescribeUpdateRequestT& request, const DescribeUpdateResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DescribeUpdate, request, handler, context); } /** *

Disassociates an identity provider configuration from a cluster. If you * disassociate an identity provider from your cluster, users included in the * provider can no longer access the cluster. However, you can still access the * cluster with Amazon Web Services IAM users.

See Also:

AWS * API Reference

*/ virtual Model::DisassociateIdentityProviderConfigOutcome DisassociateIdentityProviderConfig(const Model::DisassociateIdentityProviderConfigRequest& request) const; /** * A Callable wrapper for DisassociateIdentityProviderConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DisassociateIdentityProviderConfigOutcomeCallable DisassociateIdentityProviderConfigCallable(const DisassociateIdentityProviderConfigRequestT& request) const { return SubmitCallable(&EKSClient::DisassociateIdentityProviderConfig, request); } /** * An Async wrapper for DisassociateIdentityProviderConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DisassociateIdentityProviderConfigAsync(const DisassociateIdentityProviderConfigRequestT& request, const DisassociateIdentityProviderConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::DisassociateIdentityProviderConfig, request, handler, context); } /** *

Lists the available add-ons.

See Also:

AWS API * Reference

*/ virtual Model::ListAddonsOutcome ListAddons(const Model::ListAddonsRequest& request) const; /** * A Callable wrapper for ListAddons that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListAddonsOutcomeCallable ListAddonsCallable(const ListAddonsRequestT& request) const { return SubmitCallable(&EKSClient::ListAddons, request); } /** * An Async wrapper for ListAddons that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListAddonsAsync(const ListAddonsRequestT& request, const ListAddonsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListAddons, request, handler, context); } /** *

Lists the Amazon EKS clusters in your Amazon Web Services account in the * specified Region.

See Also:

AWS * API Reference

*/ virtual Model::ListClustersOutcome ListClusters(const Model::ListClustersRequest& request) const; /** * A Callable wrapper for ListClusters that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListClustersOutcomeCallable ListClustersCallable(const ListClustersRequestT& request) const { return SubmitCallable(&EKSClient::ListClusters, request); } /** * An Async wrapper for ListClusters that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListClustersAsync(const ListClustersRequestT& request, const ListClustersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListClusters, request, handler, context); } /** *

Lists the Fargate profiles associated with the specified cluster in your * Amazon Web Services account in the specified Region.

See Also:

* AWS * API Reference

*/ virtual Model::ListFargateProfilesOutcome ListFargateProfiles(const Model::ListFargateProfilesRequest& request) const; /** * A Callable wrapper for ListFargateProfiles that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListFargateProfilesOutcomeCallable ListFargateProfilesCallable(const ListFargateProfilesRequestT& request) const { return SubmitCallable(&EKSClient::ListFargateProfiles, request); } /** * An Async wrapper for ListFargateProfiles that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListFargateProfilesAsync(const ListFargateProfilesRequestT& request, const ListFargateProfilesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListFargateProfiles, request, handler, context); } /** *

A list of identity provider configurations.

See Also:

AWS * API Reference

*/ virtual Model::ListIdentityProviderConfigsOutcome ListIdentityProviderConfigs(const Model::ListIdentityProviderConfigsRequest& request) const; /** * A Callable wrapper for ListIdentityProviderConfigs that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListIdentityProviderConfigsOutcomeCallable ListIdentityProviderConfigsCallable(const ListIdentityProviderConfigsRequestT& request) const { return SubmitCallable(&EKSClient::ListIdentityProviderConfigs, request); } /** * An Async wrapper for ListIdentityProviderConfigs that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListIdentityProviderConfigsAsync(const ListIdentityProviderConfigsRequestT& request, const ListIdentityProviderConfigsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListIdentityProviderConfigs, request, handler, context); } /** *

Lists the Amazon EKS managed node groups associated with the specified * cluster in your Amazon Web Services account in the specified Region. * Self-managed node groups are not listed.

See Also:

AWS * API Reference

*/ virtual Model::ListNodegroupsOutcome ListNodegroups(const Model::ListNodegroupsRequest& request) const; /** * A Callable wrapper for ListNodegroups that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListNodegroupsOutcomeCallable ListNodegroupsCallable(const ListNodegroupsRequestT& request) const { return SubmitCallable(&EKSClient::ListNodegroups, request); } /** * An Async wrapper for ListNodegroups that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListNodegroupsAsync(const ListNodegroupsRequestT& request, const ListNodegroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListNodegroups, request, handler, context); } /** *

List the tags for an Amazon EKS resource.

See Also:

AWS * API Reference

*/ virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const; /** * A Callable wrapper for ListTagsForResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const ListTagsForResourceRequestT& request) const { return SubmitCallable(&EKSClient::ListTagsForResource, request); } /** * An Async wrapper for ListTagsForResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTagsForResourceAsync(const ListTagsForResourceRequestT& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListTagsForResource, request, handler, context); } /** *

Lists the updates associated with an Amazon EKS cluster or managed node group * in your Amazon Web Services account, in the specified Region.

See * Also:

AWS API * Reference

*/ virtual Model::ListUpdatesOutcome ListUpdates(const Model::ListUpdatesRequest& request) const; /** * A Callable wrapper for ListUpdates that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListUpdatesOutcomeCallable ListUpdatesCallable(const ListUpdatesRequestT& request) const { return SubmitCallable(&EKSClient::ListUpdates, request); } /** * An Async wrapper for ListUpdates that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListUpdatesAsync(const ListUpdatesRequestT& request, const ListUpdatesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::ListUpdates, request, handler, context); } /** *

Connects a Kubernetes cluster to the Amazon EKS control plane.

Any * Kubernetes cluster can be connected to the Amazon EKS control plane to view * current information about the cluster and its nodes.

Cluster connection * requires two steps. First, send a RegisterClusterRequest * to add it to the Amazon EKS control plane.

Second, a Manifest * containing the activationID and activationCode must be * applied to the Kubernetes cluster through it's native provider to provide * visibility.

After the Manifest is updated and applied, then the connected * cluster is visible to the Amazon EKS control plane. If the Manifest is not * applied within three days, then the connected cluster will no longer be visible * and must be deregistered. See DeregisterCluster.

See Also:

* AWS * API Reference

*/ virtual Model::RegisterClusterOutcome RegisterCluster(const Model::RegisterClusterRequest& request) const; /** * A Callable wrapper for RegisterCluster that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::RegisterClusterOutcomeCallable RegisterClusterCallable(const RegisterClusterRequestT& request) const { return SubmitCallable(&EKSClient::RegisterCluster, request); } /** * An Async wrapper for RegisterCluster that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void RegisterClusterAsync(const RegisterClusterRequestT& request, const RegisterClusterResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::RegisterCluster, request, handler, context); } /** *

Associates the specified tags to a resource with the specified * resourceArn. If existing tags on a resource are not specified in * the request parameters, they are not changed. When a resource is deleted, the * tags associated with that resource are deleted as well. Tags that you create for * Amazon EKS resources do not propagate to any other resources associated with the * cluster. For example, if you tag a cluster with this operation, that tag does * not automatically propagate to the subnets and nodes associated with the * cluster.

See Also:

AWS API * Reference

*/ virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const; /** * A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const { return SubmitCallable(&EKSClient::TagResource, request); } /** * An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::TagResource, request, handler, context); } /** *

Deletes specified tags from a resource.

See Also:

AWS * API Reference

*/ virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const; /** * A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const { return SubmitCallable(&EKSClient::UntagResource, request); } /** * An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UntagResource, request, handler, context); } /** *

Updates an Amazon EKS add-on.

See Also:

AWS API * Reference

*/ virtual Model::UpdateAddonOutcome UpdateAddon(const Model::UpdateAddonRequest& request) const; /** * A Callable wrapper for UpdateAddon that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateAddonOutcomeCallable UpdateAddonCallable(const UpdateAddonRequestT& request) const { return SubmitCallable(&EKSClient::UpdateAddon, request); } /** * An Async wrapper for UpdateAddon that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateAddonAsync(const UpdateAddonRequestT& request, const UpdateAddonResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UpdateAddon, request, handler, context); } /** *

Updates an Amazon EKS cluster configuration. Your cluster continues to * function during the update. The response output includes an update ID that you * can use to track the status of your cluster update with the * DescribeUpdate API operation.

You can use this API operation to * enable or disable exporting the Kubernetes control plane logs for your cluster * to CloudWatch Logs. By default, cluster control plane logs aren't exported to * CloudWatch Logs. For more information, see Amazon * EKS Cluster Control Plane Logs in the Amazon EKS User Guide * .

CloudWatch Logs ingestion, archive storage, and data * scanning rates apply to exported control plane logs. For more information, see * CloudWatch Pricing.

*

You can also use this API operation to enable or disable public and * private access to your cluster's Kubernetes API server endpoint. By default, * public access is enabled, and private access is disabled. For more information, * see Amazon * EKS cluster endpoint access control in the Amazon EKS User Guide * .

You can't update the subnets or security group IDs for * an existing cluster.

Cluster updates are asynchronous, and * they should finish within a few minutes. During an update, the cluster status * moves to UPDATING (this status transition is eventually * consistent). When the update is complete (either Failed or * Successful), the cluster status moves to * Active.

See Also:

AWS * API Reference

*/ virtual Model::UpdateClusterConfigOutcome UpdateClusterConfig(const Model::UpdateClusterConfigRequest& request) const; /** * A Callable wrapper for UpdateClusterConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateClusterConfigOutcomeCallable UpdateClusterConfigCallable(const UpdateClusterConfigRequestT& request) const { return SubmitCallable(&EKSClient::UpdateClusterConfig, request); } /** * An Async wrapper for UpdateClusterConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateClusterConfigAsync(const UpdateClusterConfigRequestT& request, const UpdateClusterConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UpdateClusterConfig, request, handler, context); } /** *

Updates an Amazon EKS cluster to the specified Kubernetes version. Your * cluster continues to function during the update. The response output includes an * update ID that you can use to track the status of your cluster update with the * DescribeUpdate API operation.

Cluster updates are asynchronous, * and they should finish within a few minutes. During an update, the cluster * status moves to UPDATING (this status transition is eventually * consistent). When the update is complete (either Failed or * Successful), the cluster status moves to Active.

*

If your cluster has managed node groups attached to it, all of your node * groups’ Kubernetes versions must match the cluster’s Kubernetes version in order * to update the cluster to a new Kubernetes version.

See Also:

AWS * API Reference

*/ virtual Model::UpdateClusterVersionOutcome UpdateClusterVersion(const Model::UpdateClusterVersionRequest& request) const; /** * A Callable wrapper for UpdateClusterVersion that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateClusterVersionOutcomeCallable UpdateClusterVersionCallable(const UpdateClusterVersionRequestT& request) const { return SubmitCallable(&EKSClient::UpdateClusterVersion, request); } /** * An Async wrapper for UpdateClusterVersion that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateClusterVersionAsync(const UpdateClusterVersionRequestT& request, const UpdateClusterVersionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UpdateClusterVersion, request, handler, context); } /** *

Updates an Amazon EKS managed node group configuration. Your node group * continues to function during the update. The response output includes an update * ID that you can use to track the status of your node group update with the * DescribeUpdate API operation. Currently you can update the Kubernetes * labels for a node group or the scaling configuration.

See Also:

* AWS * API Reference

*/ virtual Model::UpdateNodegroupConfigOutcome UpdateNodegroupConfig(const Model::UpdateNodegroupConfigRequest& request) const; /** * A Callable wrapper for UpdateNodegroupConfig that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateNodegroupConfigOutcomeCallable UpdateNodegroupConfigCallable(const UpdateNodegroupConfigRequestT& request) const { return SubmitCallable(&EKSClient::UpdateNodegroupConfig, request); } /** * An Async wrapper for UpdateNodegroupConfig that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateNodegroupConfigAsync(const UpdateNodegroupConfigRequestT& request, const UpdateNodegroupConfigResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UpdateNodegroupConfig, request, handler, context); } /** *

Updates the Kubernetes version or AMI version of an Amazon EKS managed node * group.

You can update a node group using a launch template only if the * node group was originally deployed with a launch template. If you need to update * a custom AMI in a node group that was deployed with a launch template, then * update your custom AMI, specify the new ID in a new version of the launch * template, and then update the node group to the new version of the launch * template.

If you update without a launch template, then you can update to * the latest available AMI version of a node group's current Kubernetes version by * not specifying a Kubernetes version in the request. You can update to the latest * AMI version of your cluster's current Kubernetes version by specifying your * cluster's Kubernetes version in the request. For information about Linux * versions, see Amazon * EKS optimized Amazon Linux AMI versions in the Amazon EKS User Guide. * For information about Windows versions, see Amazon * EKS optimized Windows AMI versions in the Amazon EKS User Guide.

*

You cannot roll back a node group to an earlier Kubernetes version or AMI * version.

When a node in a managed node group is terminated due to a * scaling action or update, the pods in that node are drained first. Amazon EKS * attempts to drain the nodes gracefully and will fail if it is unable to do so. * You can force the update if Amazon EKS is unable to drain the nodes * as a result of a pod disruption budget issue.

See Also:

AWS * API Reference

*/ virtual Model::UpdateNodegroupVersionOutcome UpdateNodegroupVersion(const Model::UpdateNodegroupVersionRequest& request) const; /** * A Callable wrapper for UpdateNodegroupVersion that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateNodegroupVersionOutcomeCallable UpdateNodegroupVersionCallable(const UpdateNodegroupVersionRequestT& request) const { return SubmitCallable(&EKSClient::UpdateNodegroupVersion, request); } /** * An Async wrapper for UpdateNodegroupVersion that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateNodegroupVersionAsync(const UpdateNodegroupVersionRequestT& request, const UpdateNodegroupVersionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&EKSClient::UpdateNodegroupVersion, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const EKSClientConfiguration& clientConfiguration); EKSClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace EKS } // namespace Aws