UNPKG

@aws-sdk/client-eks

Version:

AWS SDK for JavaScript Eks Client for Node.js, Browser and React Native

1,382 lines 267 kB
import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; import { EKSServiceException as __BaseException } from "./EKSServiceException"; /** * @public * @enum */ export declare const AuthenticationMode: { readonly API: "API"; readonly API_AND_CONFIG_MAP: "API_AND_CONFIG_MAP"; readonly CONFIG_MAP: "CONFIG_MAP"; }; /** * @public */ export type AuthenticationMode = (typeof AuthenticationMode)[keyof typeof AuthenticationMode]; /** * <p>The access configuration for the cluster.</p> * @public */ export interface AccessConfigResponse { /** * <p>Specifies whether or not the cluster creator IAM principal was set as a cluster * admin access entry during cluster creation time.</p> * @public */ bootstrapClusterCreatorAdminPermissions?: boolean | undefined; /** * <p>The current authentication mode of the cluster.</p> * @public */ authenticationMode?: AuthenticationMode | undefined; } /** * <p>You don't have permissions to perform the requested operation. The <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html">IAM principal</a> * making the request must have at least one IAM permissions policy attached that grants * the required permissions. For more information, see <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html">Access * management</a> in the <i>IAM User Guide</i>. </p> * @public */ export declare class AccessDeniedException extends __BaseException { readonly name: "AccessDeniedException"; readonly $fault: "client"; /** * @internal */ constructor(opts: __ExceptionOptionType<AccessDeniedException, __BaseException>); } /** * <p>An access entry allows an IAM principal (user or role) to access your cluster. * Access entries can replace the need to maintain the <code>aws-auth</code> * <code>ConfigMap</code> for authentication. For more information about access entries, * see <a href="https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html">Access * entries</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ export interface AccessEntry { /** * <p>The name of your cluster.</p> * @public */ clusterName?: string | undefined; /** * <p>The ARN of the IAM principal for the access entry. If you ever delete the IAM * principal with this ARN, the access entry isn't automatically deleted. We recommend * that you delete the access entry with an ARN for an IAM principal that you delete. * If you don't delete the access entry and ever recreate the IAM principal, even if it * has the same ARN, the access entry won't work. This is because even though the ARN * is the same for the recreated IAM principal, the <code>roleID</code> or * <code>userID</code> (you can see this with the Security Token Service * <code>GetCallerIdentity</code> API) is different for the recreated IAM principal * than it was for the original IAM principal. Even though you don't see the IAM * principal's <code>roleID</code> or <code>userID</code> for an access entry, Amazon EKS stores * it with the access entry.</p> * @public */ principalArn?: string | undefined; /** * <p>A <code>name</code> that you've specified in a Kubernetes <code>RoleBinding</code> or * <code>ClusterRoleBinding</code> object so that Kubernetes authorizes the * <code>principalARN</code> access to cluster objects.</p> * @public */ kubernetesGroups?: string[] | undefined; /** * <p>The ARN of the access entry.</p> * @public */ accessEntryArn?: string | undefined; /** * <p>The Unix epoch timestamp at object creation.</p> * @public */ createdAt?: Date | undefined; /** * <p>The Unix epoch timestamp for the last modification to the object.</p> * @public */ modifiedAt?: Date | undefined; /** * <p>Metadata that assists with categorization and organization. * Each tag consists of a key and an optional value. You define both. Tags don't * propagate to any other cluster or Amazon Web Services resources.</p> * @public */ tags?: Record<string, string> | undefined; /** * <p>The <code>name</code> of a user that can authenticate to your cluster.</p> * @public */ username?: string | undefined; /** * <p>The type of the access entry.</p> * @public */ type?: string | undefined; } /** * <p>An access policy includes permissions that allow Amazon EKS to authorize an * IAM principal to work with Kubernetes objects on your cluster. The policies are * managed by Amazon EKS, but they're not IAM policies. You can't view the permissions in the * policies using the API. The permissions for many of the policies are similar to the * Kubernetes <code>cluster-admin</code>, <code>admin</code>, <code>edit</code>, and * <code>view</code> cluster roles. For more information about these cluster roles, see * <a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles">User-facing roles</a> in the Kubernetes documentation. To view the contents of the * policies, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html#access-policy-permissions">Access * policy permissions</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ export interface AccessPolicy { /** * <p>The name of the access policy.</p> * @public */ name?: string | undefined; /** * <p>The ARN of the access policy.</p> * @public */ arn?: string | undefined; } /** * @public * @enum */ export declare const AccessScopeType: { readonly cluster: "cluster"; readonly namespace: "namespace"; }; /** * @public */ export type AccessScopeType = (typeof AccessScopeType)[keyof typeof AccessScopeType]; /** * <p>The scope of an <code>AccessPolicy</code> that's associated to an * <code>AccessEntry</code>.</p> * @public */ export interface AccessScope { /** * <p>The scope type of an access policy.</p> * @public */ type?: AccessScopeType | undefined; /** * <p>A Kubernetes <code>namespace</code> that an access policy is scoped to. A value is required * if you specified <code>namespace</code> for <code>Type</code>.</p> * @public */ namespaces?: string[] | undefined; } /** * @public * @enum */ export declare const AddonIssueCode: { readonly ACCESS_DENIED: "AccessDenied"; readonly ADDON_PERMISSION_FAILURE: "AddonPermissionFailure"; readonly ADDON_SUBSCRIPTION_NEEDED: "AddonSubscriptionNeeded"; readonly ADMISSION_REQUEST_DENIED: "AdmissionRequestDenied"; readonly CLUSTER_UNREACHABLE: "ClusterUnreachable"; readonly CONFIGURATION_CONFLICT: "ConfigurationConflict"; readonly INSUFFICIENT_NUMBER_OF_REPLICAS: "InsufficientNumberOfReplicas"; readonly INTERNAL_FAILURE: "InternalFailure"; readonly K8S_RESOURCE_NOT_FOUND: "K8sResourceNotFound"; readonly UNSUPPORTED_ADDON_MODIFICATION: "UnsupportedAddonModification"; }; /** * @public */ export type AddonIssueCode = (typeof AddonIssueCode)[keyof typeof AddonIssueCode]; /** * <p>An issue related to an add-on.</p> * @public */ export interface AddonIssue { /** * <p>A code that describes the type of issue.</p> * @public */ code?: AddonIssueCode | undefined; /** * <p>A message that provides details about the issue and what might cause it.</p> * @public */ message?: string | undefined; /** * <p>The resource IDs of the issue.</p> * @public */ resourceIds?: string[] | undefined; } /** * <p>The health of the add-on.</p> * @public */ export interface AddonHealth { /** * <p>An object representing the health issues for an add-on.</p> * @public */ issues?: AddonIssue[] | undefined; } /** * <p>Information about an Amazon EKS add-on from the Amazon Web Services Marketplace.</p> * @public */ export interface MarketplaceInformation { /** * <p>The product ID from the Amazon Web Services Marketplace.</p> * @public */ productId?: string | undefined; /** * <p>The product URL from the Amazon Web Services Marketplace.</p> * @public */ productUrl?: string | undefined; } /** * @public * @enum */ export declare const AddonStatus: { readonly ACTIVE: "ACTIVE"; readonly CREATE_FAILED: "CREATE_FAILED"; readonly CREATING: "CREATING"; readonly DEGRADED: "DEGRADED"; readonly DELETE_FAILED: "DELETE_FAILED"; readonly DELETING: "DELETING"; readonly UPDATE_FAILED: "UPDATE_FAILED"; readonly UPDATING: "UPDATING"; }; /** * @public */ export type AddonStatus = (typeof AddonStatus)[keyof typeof AddonStatus]; /** * <p>An Amazon EKS add-on. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html">Amazon EKS add-ons</a> in the * <i>Amazon EKS User Guide</i>.</p> * @public */ export interface Addon { /** * <p>The name of the add-on.</p> * @public */ addonName?: string | undefined; /** * <p>The name of your cluster.</p> * @public */ clusterName?: string | undefined; /** * <p>The status of the add-on.</p> * @public */ status?: AddonStatus | undefined; /** * <p>The version of the add-on.</p> * @public */ addonVersion?: string | undefined; /** * <p>An object that represents the health of the add-on.</p> * @public */ health?: AddonHealth | undefined; /** * <p>The Amazon Resource Name (ARN) of the add-on.</p> * @public */ addonArn?: string | undefined; /** * <p>The Unix epoch timestamp at object creation.</p> * @public */ createdAt?: Date | undefined; /** * <p>The Unix epoch timestamp for the last modification to the object.</p> * @public */ modifiedAt?: Date | undefined; /** * <p>The Amazon Resource Name (ARN) of the IAM role that's bound to the Kubernetes <code>ServiceAccount</code> * object that the add-on uses.</p> * @public */ serviceAccountRoleArn?: string | undefined; /** * <p>Metadata that assists with categorization and organization. * Each tag consists of a key and an optional value. You define both. Tags don't * propagate to any other cluster or Amazon Web Services resources.</p> * @public */ tags?: Record<string, string> | undefined; /** * <p>The publisher of the add-on.</p> * @public */ publisher?: string | undefined; /** * <p>The owner of the add-on.</p> * @public */ owner?: string | undefined; /** * <p>Information about an Amazon EKS add-on from the Amazon Web Services Marketplace.</p> * @public */ marketplaceInformation?: MarketplaceInformation | undefined; /** * <p>The configuration values that you provided.</p> * @public */ configurationValues?: string | undefined; /** * <p>An array of Pod Identity Assocations owned by the Addon. Each EKS Pod Identity * association maps a role to a service account in a namespace in the cluster.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on * using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ podIdentityAssociations?: string[] | undefined; } /** * <p>The summary information about the Amazon EKS add-on compatibility for the next Kubernetes * version for an insight check in the <code>UPGRADE_READINESS</code> category.</p> * @public */ export interface AddonCompatibilityDetail { /** * <p>The name of the Amazon EKS add-on.</p> * @public */ name?: string | undefined; /** * <p>The list of compatible Amazon EKS add-on versions for the next Kubernetes version.</p> * @public */ compatibleVersions?: string[] | undefined; } /** * <p>Compatibility information.</p> * @public */ export interface Compatibility { /** * <p>The supported Kubernetes version of the cluster.</p> * @public */ clusterVersion?: string | undefined; /** * <p>The supported compute platform.</p> * @public */ platformVersions?: string[] | undefined; /** * <p>The supported default version.</p> * @public */ defaultVersion?: boolean | undefined; } /** * <p>Information about an add-on version.</p> * @public */ export interface AddonVersionInfo { /** * <p>The version of the add-on.</p> * @public */ addonVersion?: string | undefined; /** * <p>The architectures that the version supports.</p> * @public */ architecture?: string[] | undefined; /** * <p>Indicates the compute type of the addon version.</p> * @public */ computeTypes?: string[] | undefined; /** * <p>An object representing the compatibilities of a version.</p> * @public */ compatibilities?: Compatibility[] | undefined; /** * <p>Whether the add-on requires configuration.</p> * @public */ requiresConfiguration?: boolean | undefined; /** * <p>Indicates if the Addon requires IAM Permissions to operate, such as networking * permissions.</p> * @public */ requiresIamPermissions?: boolean | undefined; } /** * <p>Information about an add-on.</p> * @public */ export interface AddonInfo { /** * <p>The name of the add-on.</p> * @public */ addonName?: string | undefined; /** * <p>The type of the add-on.</p> * @public */ type?: string | undefined; /** * <p>An object representing information about available add-on versions and compatible * Kubernetes versions.</p> * @public */ addonVersions?: AddonVersionInfo[] | undefined; /** * <p>The publisher of the add-on.</p> * @public */ publisher?: string | undefined; /** * <p>The owner of the add-on.</p> * @public */ owner?: string | undefined; /** * <p>Information about the add-on from the Amazon Web Services Marketplace.</p> * @public */ marketplaceInformation?: MarketplaceInformation | undefined; } /** * <p>A type of Pod Identity Association owned by an Amazon EKS Add-on.</p> * <p>Each EKS Pod Identity Association maps a role to a service account in a namespace in * the cluster.</p> * <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on * using Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ export interface AddonPodIdentityAssociations { /** * <p>The name of a Kubernetes Service Account.</p> * @public */ serviceAccount: string | undefined; /** * <p>The ARN of an IAM Role.</p> * @public */ roleArn: string | undefined; } /** * <p>Information about how to configure IAM for an Addon.</p> * @public */ export interface AddonPodIdentityConfiguration { /** * <p>The Kubernetes Service Account name used by the addon.</p> * @public */ serviceAccount?: string | undefined; /** * <p>A suggested IAM Policy for the addon.</p> * @public */ recommendedManagedPolicies?: string[] | undefined; } /** * @public * @enum */ export declare const AMITypes: { readonly AL2023_ARM_64_STANDARD: "AL2023_ARM_64_STANDARD"; readonly AL2023_x86_64_NEURON: "AL2023_x86_64_NEURON"; readonly AL2023_x86_64_NVIDIA: "AL2023_x86_64_NVIDIA"; readonly AL2023_x86_64_STANDARD: "AL2023_x86_64_STANDARD"; readonly AL2_ARM_64: "AL2_ARM_64"; readonly AL2_x86_64: "AL2_x86_64"; readonly AL2_x86_64_GPU: "AL2_x86_64_GPU"; readonly BOTTLEROCKET_ARM_64: "BOTTLEROCKET_ARM_64"; readonly BOTTLEROCKET_ARM_64_NVIDIA: "BOTTLEROCKET_ARM_64_NVIDIA"; readonly BOTTLEROCKET_x86_64: "BOTTLEROCKET_x86_64"; readonly BOTTLEROCKET_x86_64_NVIDIA: "BOTTLEROCKET_x86_64_NVIDIA"; readonly CUSTOM: "CUSTOM"; readonly WINDOWS_CORE_2019_x86_64: "WINDOWS_CORE_2019_x86_64"; readonly WINDOWS_CORE_2022_x86_64: "WINDOWS_CORE_2022_x86_64"; readonly WINDOWS_FULL_2019_x86_64: "WINDOWS_FULL_2019_x86_64"; readonly WINDOWS_FULL_2022_x86_64: "WINDOWS_FULL_2022_x86_64"; }; /** * @public */ export type AMITypes = (typeof AMITypes)[keyof typeof AMITypes]; /** * @public */ export interface AssociateAccessPolicyRequest { /** * <p>The name of your cluster.</p> * @public */ clusterName: string | undefined; /** * <p>The Amazon Resource Name (ARN) of the IAM user or role for the <code>AccessEntry</code> that you're * associating the access policy to. </p> * @public */ principalArn: string | undefined; /** * <p>The ARN of the <code>AccessPolicy</code> that you're associating. For a list of * ARNs, use <code>ListAccessPolicies</code>.</p> * @public */ policyArn: string | undefined; /** * <p>The scope for the <code>AccessPolicy</code>. You can scope access policies to an * entire cluster or to specific Kubernetes namespaces.</p> * @public */ accessScope: AccessScope | undefined; } /** * <p>An access policy association.</p> * @public */ export interface AssociatedAccessPolicy { /** * <p>The ARN of the <code>AccessPolicy</code>.</p> * @public */ policyArn?: string | undefined; /** * <p>The scope of the access policy.</p> * @public */ accessScope?: AccessScope | undefined; /** * <p>The date and time the <code>AccessPolicy</code> was associated with an * <code>AccessEntry</code>.</p> * @public */ associatedAt?: Date | undefined; /** * <p>The Unix epoch timestamp for the last modification to the object.</p> * @public */ modifiedAt?: Date | undefined; } /** * @public */ export interface AssociateAccessPolicyResponse { /** * <p>The name of your cluster.</p> * @public */ clusterName?: string | undefined; /** * <p>The ARN of the IAM principal for the <code>AccessEntry</code>.</p> * @public */ principalArn?: string | undefined; /** * <p>The <code>AccessPolicy</code> and scope associated to the * <code>AccessEntry</code>.</p> * @public */ associatedAccessPolicy?: AssociatedAccessPolicy | undefined; } /** * <p>The specified parameter is invalid. Review the available parameters for the API * request.</p> * @public */ export declare class InvalidParameterException extends __BaseException { readonly name: "InvalidParameterException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The Fargate profile associated with the exception.</p> * @public */ fargateProfileName?: string | undefined; /** * <p>The specified parameter for the add-on name is invalid. Review the available * parameters for the API request</p> * @public */ addonName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<InvalidParameterException, __BaseException>); } /** * <p>The request is invalid given the state of the cluster. Check the state of the cluster * and the associated operations.</p> * @public */ export declare class InvalidRequestException extends __BaseException { readonly name: "InvalidRequestException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The request is invalid given the state of the add-on name. Check the state of the * cluster and the associated operations.</p> * @public */ addonName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<InvalidRequestException, __BaseException>); } /** * <p>The specified resource could not be found. You can view your available clusters with * <code>ListClusters</code>. You can view your available managed node groups with * <code>ListNodegroups</code>. Amazon EKS clusters and node groups are Amazon Web Services Region * specific.</p> * @public */ export declare class ResourceNotFoundException extends __BaseException { readonly name: "ResourceNotFoundException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The Fargate profile associated with the exception.</p> * @public */ fargateProfileName?: string | undefined; /** * <p>The Amazon EKS add-on name associated with the exception.</p> * @public */ addonName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<ResourceNotFoundException, __BaseException>); } /** * <p>These errors are usually caused by a server-side issue.</p> * @public */ export declare class ServerException extends __BaseException { readonly name: "ServerException"; readonly $fault: "server"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The Amazon EKS add-on name associated with the exception.</p> * @public */ addonName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<ServerException, __BaseException>); } /** * <p>Identifies the Key Management Service (KMS) key used to encrypt the secrets.</p> * @public */ export interface Provider { /** * <p>Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric and created in * the same Amazon Web Services Region as the cluster. If the KMS key was created in a different * account, the <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html">IAM principal</a> must have access to the KMS key. For more information, * see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html">Allowing * users in other accounts to use a KMS key</a> in the <i>Key Management Service * Developer Guide</i>.</p> * @public */ keyArn?: string | undefined; } /** * <p>The encryption configuration for the cluster.</p> * @public */ export interface EncryptionConfig { /** * <p>Specifies the resources to be encrypted. The only supported value is * <code>secrets</code>.</p> * @public */ resources?: string[] | undefined; /** * <p>Key Management Service (KMS) key. Either the ARN or the alias can be used.</p> * @public */ provider?: Provider | undefined; } /** * @public */ export interface AssociateEncryptionConfigRequest { /** * <p>The name of your cluster.</p> * @public */ clusterName: string | undefined; /** * <p>The configuration you are using for encryption.</p> * @public */ encryptionConfig: EncryptionConfig[] | undefined; /** * <p>A unique, case-sensitive identifier that you provide to ensure * the idempotency of the request.</p> * @public */ clientRequestToken?: string | undefined; } /** * @public * @enum */ export declare const ErrorCode: { readonly ACCESS_DENIED: "AccessDenied"; readonly ADMISSION_REQUEST_DENIED: "AdmissionRequestDenied"; readonly CLUSTER_UNREACHABLE: "ClusterUnreachable"; readonly CONFIGURATION_CONFLICT: "ConfigurationConflict"; readonly ENI_LIMIT_REACHED: "EniLimitReached"; readonly INSUFFICIENT_FREE_ADDRESSES: "InsufficientFreeAddresses"; readonly INSUFFICIENT_NUMBER_OF_REPLICAS: "InsufficientNumberOfReplicas"; readonly IP_NOT_AVAILABLE: "IpNotAvailable"; readonly K8S_RESOURCE_NOT_FOUND: "K8sResourceNotFound"; readonly NODE_CREATION_FAILURE: "NodeCreationFailure"; readonly OPERATION_NOT_PERMITTED: "OperationNotPermitted"; readonly POD_EVICTION_FAILURE: "PodEvictionFailure"; readonly SECURITY_GROUP_NOT_FOUND: "SecurityGroupNotFound"; readonly SUBNET_NOT_FOUND: "SubnetNotFound"; readonly UNKNOWN: "Unknown"; readonly UNSUPPORTED_ADDON_MODIFICATION: "UnsupportedAddonModification"; readonly VPC_ID_NOT_FOUND: "VpcIdNotFound"; }; /** * @public */ export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode]; /** * <p>An object representing an error when an asynchronous operation fails.</p> * @public */ export interface ErrorDetail { /** * <p>A brief description of the error. </p> * <ul> * <li> * <p> * <b>SubnetNotFound</b>: We couldn't find one of the * subnets associated with the cluster.</p> * </li> * <li> * <p> * <b>SecurityGroupNotFound</b>: We couldn't find one * of the security groups associated with the cluster.</p> * </li> * <li> * <p> * <b>EniLimitReached</b>: You have reached the elastic * network interface limit for your account.</p> * </li> * <li> * <p> * <b>IpNotAvailable</b>: A subnet associated with the * cluster doesn't have any available IP addresses.</p> * </li> * <li> * <p> * <b>AccessDenied</b>: You don't have permissions to * perform the specified operation.</p> * </li> * <li> * <p> * <b>OperationNotPermitted</b>: The service role * associated with the cluster doesn't have the required access permissions for * Amazon EKS.</p> * </li> * <li> * <p> * <b>VpcIdNotFound</b>: We couldn't find the VPC * associated with the cluster.</p> * </li> * </ul> * @public */ errorCode?: ErrorCode | undefined; /** * <p>A more complete description of the error.</p> * @public */ errorMessage?: string | undefined; /** * <p>An optional field that contains the resource IDs associated with the error.</p> * @public */ resourceIds?: string[] | undefined; } /** * @public * @enum */ export declare const UpdateParamType: { readonly ADDON_VERSION: "AddonVersion"; readonly AUTHENTICATION_MODE: "AuthenticationMode"; readonly CLUSTER_LOGGING: "ClusterLogging"; readonly COMPUTE_CONFIG: "ComputeConfig"; readonly CONFIGURATION_VALUES: "ConfigurationValues"; readonly DESIRED_SIZE: "DesiredSize"; readonly ENCRYPTION_CONFIG: "EncryptionConfig"; readonly ENDPOINT_PRIVATE_ACCESS: "EndpointPrivateAccess"; readonly ENDPOINT_PUBLIC_ACCESS: "EndpointPublicAccess"; readonly IDENTITY_PROVIDER_CONFIG: "IdentityProviderConfig"; readonly KUBERNETES_NETWORK_CONFIG: "KubernetesNetworkConfig"; readonly LABELS_TO_ADD: "LabelsToAdd"; readonly LABELS_TO_REMOVE: "LabelsToRemove"; readonly LAUNCH_TEMPLATE_NAME: "LaunchTemplateName"; readonly LAUNCH_TEMPLATE_VERSION: "LaunchTemplateVersion"; readonly MAX_SIZE: "MaxSize"; readonly MAX_UNAVAILABLE: "MaxUnavailable"; readonly MAX_UNAVAILABLE_PERCENTAGE: "MaxUnavailablePercentage"; readonly MIN_SIZE: "MinSize"; readonly NODE_REPAIR_ENABLED: "NodeRepairEnabled"; readonly PLATFORM_VERSION: "PlatformVersion"; readonly POD_IDENTITY_ASSOCIATIONS: "PodIdentityAssociations"; readonly PUBLIC_ACCESS_CIDRS: "PublicAccessCidrs"; readonly RELEASE_VERSION: "ReleaseVersion"; readonly RESOLVE_CONFLICTS: "ResolveConflicts"; readonly SECURITY_GROUPS: "SecurityGroups"; readonly SERVICE_ACCOUNT_ROLE_ARN: "ServiceAccountRoleArn"; readonly STORAGE_CONFIG: "StorageConfig"; readonly SUBNETS: "Subnets"; readonly TAINTS_TO_ADD: "TaintsToAdd"; readonly TAINTS_TO_REMOVE: "TaintsToRemove"; readonly UPDATE_STRATEGY: "UpdateStrategy"; readonly UPGRADE_POLICY: "UpgradePolicy"; readonly VERSION: "Version"; readonly ZONAL_SHIFT_CONFIG: "ZonalShiftConfig"; }; /** * @public */ export type UpdateParamType = (typeof UpdateParamType)[keyof typeof UpdateParamType]; /** * <p>An object representing the details of an update request.</p> * @public */ export interface UpdateParam { /** * <p>The keys associated with an update request.</p> * @public */ type?: UpdateParamType | undefined; /** * <p>The value of the keys submitted as part of an update request.</p> * @public */ value?: string | undefined; } /** * @public * @enum */ export declare const UpdateStatus: { readonly CANCELLED: "Cancelled"; readonly FAILED: "Failed"; readonly IN_PROGRESS: "InProgress"; readonly SUCCESSFUL: "Successful"; }; /** * @public */ export type UpdateStatus = (typeof UpdateStatus)[keyof typeof UpdateStatus]; /** * @public * @enum */ export declare const UpdateType: { readonly ACCESS_CONFIG_UPDATE: "AccessConfigUpdate"; readonly ADDON_UPDATE: "AddonUpdate"; readonly ASSOCIATE_ENCRYPTION_CONFIG: "AssociateEncryptionConfig"; readonly ASSOCIATE_IDENTITY_PROVIDER_CONFIG: "AssociateIdentityProviderConfig"; readonly AUTO_MODE_UPDATE: "AutoModeUpdate"; readonly CONFIG_UPDATE: "ConfigUpdate"; readonly DISASSOCIATE_IDENTITY_PROVIDER_CONFIG: "DisassociateIdentityProviderConfig"; readonly ENDPOINT_ACCESS_UPDATE: "EndpointAccessUpdate"; readonly LOGGING_UPDATE: "LoggingUpdate"; readonly UPGRADE_POLICY_UPDATE: "UpgradePolicyUpdate"; readonly VERSION_UPDATE: "VersionUpdate"; readonly VPC_CONFIG_UPDATE: "VpcConfigUpdate"; readonly ZONAL_SHIFT_CONFIG_UPDATE: "ZonalShiftConfigUpdate"; }; /** * @public */ export type UpdateType = (typeof UpdateType)[keyof typeof UpdateType]; /** * <p>An object representing an asynchronous update.</p> * @public */ export interface Update { /** * <p>A UUID that is used to track the update.</p> * @public */ id?: string | undefined; /** * <p>The current status of the update.</p> * @public */ status?: UpdateStatus | undefined; /** * <p>The type of the update.</p> * @public */ type?: UpdateType | undefined; /** * <p>A key-value map that contains the parameters associated with the update.</p> * @public */ params?: UpdateParam[] | undefined; /** * <p>The Unix epoch timestamp at object creation.</p> * @public */ createdAt?: Date | undefined; /** * <p>Any errors associated with a <code>Failed</code> update.</p> * @public */ errors?: ErrorDetail[] | undefined; } /** * @public */ export interface AssociateEncryptionConfigResponse { /** * <p>An object representing an asynchronous update.</p> * @public */ update?: Update | undefined; } /** * <p>These errors are usually caused by a client action. Actions can include using an * action or resource on behalf of an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html">IAM principal</a> that doesn't have permissions to use * the action or resource or specifying an identifier that is not valid.</p> * @public */ export declare class ClientException extends __BaseException { readonly name: "ClientException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The Amazon EKS add-on name associated with the exception.</p> * @public */ addonName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<ClientException, __BaseException>); } /** * <p>The specified resource is in use.</p> * @public */ export declare class ResourceInUseException extends __BaseException { readonly name: "ResourceInUseException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The specified add-on name is in use.</p> * @public */ addonName?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<ResourceInUseException, __BaseException>); } /** * <p>An object representing an OpenID Connect (OIDC) configuration. Before associating an * OIDC identity provider to your cluster, review the considerations in <a href="https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html">Authenticating * users for your cluster from an OIDC identity provider</a> in the * <i>Amazon EKS User Guide</i>.</p> * @public */ export interface OidcIdentityProviderConfigRequest { /** * <p>The name of the OIDC provider configuration.</p> * @public */ identityProviderConfigName: string | undefined; /** * <p>The URL of the OIDC identity provider that allows the API server to discover public * signing keys for verifying tokens. The URL must begin with <code>https://</code> and * should correspond to the <code>iss</code> claim in the provider's OIDC ID tokens. * Based on the OIDC standard, path components are allowed but query parameters are not. * Typically the URL consists of only a hostname, like * <code>https://server.example.org</code> or <code>https://example.com</code>. This * URL should point to the level below <code>.well-known/openid-configuration</code> and * must be publicly accessible over the internet.</p> * @public */ issuerUrl: string | undefined; /** * <p>This is also known as <i>audience</i>. The ID for the client application * that makes authentication requests to the OIDC identity provider.</p> * @public */ clientId: string | undefined; /** * <p>The JSON Web Token (JWT) claim to use as the username. The default is * <code>sub</code>, which is expected to be a unique identifier of the end user. You can * choose other claims, such as <code>email</code> or <code>name</code>, depending on the * OIDC identity provider. Claims other than <code>email</code> are prefixed with the * issuer URL to prevent naming clashes with other plug-ins.</p> * @public */ usernameClaim?: string | undefined; /** * <p>The prefix that is prepended to username claims to prevent clashes with existing * names. If you do not provide this field, and <code>username</code> is a value other than * <code>email</code>, the prefix defaults to <code>issuerurl#</code>. You can use the * value <code>-</code> to disable all prefixing.</p> * @public */ usernamePrefix?: string | undefined; /** * <p>The JWT claim that the provider uses to return your groups.</p> * @public */ groupsClaim?: string | undefined; /** * <p>The prefix that is prepended to group claims to prevent clashes with existing names * (such as <code>system:</code> groups). For example, the value<code> oidc:</code> will * create group names like <code>oidc:engineering</code> and * <code>oidc:infra</code>.</p> * @public */ groupsPrefix?: string | undefined; /** * <p>The key value pairs that describe required claims in the identity token. If set, each * claim is verified to be present in the token with a matching value. For the maximum * number of claims that you can require, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html">Amazon EKS service quotas</a> in the * <i>Amazon EKS User Guide</i>.</p> * @public */ requiredClaims?: Record<string, string> | undefined; } /** * @public */ export interface AssociateIdentityProviderConfigRequest { /** * <p>The name of your cluster.</p> * @public */ clusterName: string | undefined; /** * <p>An object representing an OpenID Connect (OIDC) identity provider configuration.</p> * @public */ oidc: OidcIdentityProviderConfigRequest | undefined; /** * <p>Metadata that assists with categorization and organization. * Each tag consists of a key and an optional value. You define both. Tags don't * propagate to any other cluster or Amazon Web Services resources.</p> * @public */ tags?: Record<string, string> | undefined; /** * <p>A unique, case-sensitive identifier that you provide to ensure * the idempotency of the request.</p> * @public */ clientRequestToken?: string | undefined; } /** * @public */ export interface AssociateIdentityProviderConfigResponse { /** * <p>An object representing an asynchronous update.</p> * @public */ update?: Update | undefined; /** * <p>The tags for the resource.</p> * @public */ tags?: Record<string, string> | undefined; } /** * <p>An Auto Scaling group that is associated with an Amazon EKS managed node group.</p> * @public */ export interface AutoScalingGroup { /** * <p>The name of the Auto Scaling group associated with an Amazon EKS managed node group.</p> * @public */ name?: string | undefined; } /** * @public */ export interface CreateAccessEntryRequest { /** * <p>The name of your cluster.</p> * @public */ clusterName: string | undefined; /** * <p>The ARN of the IAM principal for the <code>AccessEntry</code>. You can specify one ARN for each access entry. You can't specify the * same ARN in more than one access entry. This value can't be changed after access entry * creation.</p> * <p>The valid principals differ depending on the type of the access entry in the * <code>type</code> field. For <code>STANDARD</code> access entries, you can use every * IAM principal type. For nodes (<code>EC2</code> (for EKS Auto Mode), * <code>EC2_LINUX</code>, <code>EC2_WINDOWS</code>, <code>FARGATE_LINUX</code>, and * <code>HYBRID_LINUX</code>), the only valid ARN is IAM roles. * * You can't use the STS session principal type with access entries because this is a * temporary principal for each session and not a permanent identity that can be assigned * permissions.</p> * <p> * <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp">IAM best * practices</a> recommend using IAM roles with temporary credentials, rather * than IAM users with long-term credentials. </p> * @public */ principalArn: string | undefined; /** * <p>The value for <code>name</code> that you've specified for <code>kind: Group</code> as * a <code>subject</code> in a Kubernetes <code>RoleBinding</code> or * <code>ClusterRoleBinding</code> object. Amazon EKS doesn't confirm that the value for * <code>name</code> exists in any bindings on your cluster. You can specify one or * more names.</p> * <p>Kubernetes authorizes the <code>principalArn</code> of the access entry to access any * cluster objects that you've specified in a Kubernetes <code>Role</code> or * <code>ClusterRole</code> object that is also specified in a binding's * <code>roleRef</code>. For more information about creating Kubernetes * <code>RoleBinding</code>, <code>ClusterRoleBinding</code>, <code>Role</code>, or * <code>ClusterRole</code> objects, see <a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/">Using RBAC * Authorization in the Kubernetes documentation</a>.</p> * <p>If you want Amazon EKS to authorize the <code>principalArn</code> (instead of, or in * addition to Kubernetes authorizing the <code>principalArn</code>), you can associate one or * more access policies to the access entry using <code>AssociateAccessPolicy</code>. If * you associate any access policies, the <code>principalARN</code> has all permissions * assigned in the associated access policies and all permissions in any Kubernetes * <code>Role</code> or <code>ClusterRole</code> objects that the group names are bound * to.</p> * @public */ kubernetesGroups?: string[] | undefined; /** * <p>Metadata that assists with categorization and organization. * Each tag consists of a key and an optional value. You define both. Tags don't * propagate to any other cluster or Amazon Web Services resources.</p> * @public */ tags?: Record<string, string> | undefined; /** * <p>A unique, case-sensitive identifier that you provide to ensure * the idempotency of the request.</p> * @public */ clientRequestToken?: string | undefined; /** * <p>The username to authenticate to Kubernetes with. We recommend not specifying a username and * letting Amazon EKS specify it for you. For more information about the value Amazon EKS specifies * for you, or constraints before specifying your own username, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html#creating-access-entries">Creating * access entries</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ username?: string | undefined; /** * <p>The type of the new access entry. Valid values are <code>STANDARD</code>, * <code>FARGATE_LINUX</code>, <code>EC2_LINUX</code>, <code>EC2_WINDOWS</code>, * <code>EC2</code> (for EKS Auto Mode), <code>HYBRID_LINUX</code>, and * <code>HYPERPOD_LINUX</code>. </p> * <p>If the <code>principalArn</code> is for an IAM role that's used for self-managed * Amazon EC2 nodes, specify <code>EC2_LINUX</code> or <code>EC2_WINDOWS</code>. Amazon EKS grants * the necessary permissions to the node for you. If the <code>principalArn</code> is for * any other purpose, specify <code>STANDARD</code>. If you don't specify a value, Amazon EKS * sets the value to <code>STANDARD</code>. If you have the access mode of the cluster set * to <code>API_AND_CONFIG_MAP</code>, it's unnecessary to create access entries for IAM * roles used with Fargate profiles or managed Amazon EC2 nodes, because Amazon EKS creates entries * in the <code>aws-auth</code> * <code>ConfigMap</code> for the roles. You can't change this value once you've created * the access entry.</p> * <p>If you set the value to <code>EC2_LINUX</code> or <code>EC2_WINDOWS</code>, you can't * specify values for <code>kubernetesGroups</code>, or associate an * <code>AccessPolicy</code> to the access entry.</p> * @public */ type?: string | undefined; } /** * @public */ export interface CreateAccessEntryResponse { /** * <p>An access entry allows an IAM principal (user or role) to access your cluster. * Access entries can replace the need to maintain the <code>aws-auth</code> * <code>ConfigMap</code> for authentication. For more information about access entries, * see <a href="https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html">Access * entries</a> in the <i>Amazon EKS User Guide</i>.</p> * @public */ accessEntry?: AccessEntry | undefined; } /** * <p>You have encountered a service limit on the specified resource.</p> * @public */ export declare class ResourceLimitExceededException extends __BaseException { readonly name: "ResourceLimitExceededException"; readonly $fault: "client"; /** * <p>The Amazon EKS cluster associated with the exception.</p> * @public */ clusterName?: string | undefined; /** * <p>The Amazon EKS managed node group associated with the exception.</p> * @public */ nodegroupName?: string | undefined; /** * <p>The Amazon EKS subscription ID with the exception.</p> * @public */ subscriptionId?: string | undefined; /** * @internal */ constructor(opts: __ExceptionOptionType<ResourceLimitExceededException, __BaseException>); } /** * @public * @enum */ export declare const ResolveConflicts: { readonly NONE: "NONE"; readonly OVERWRITE: "OVERWRITE"; readonly PRESERVE: "PRESERVE"; }; /** * @public */ export type ResolveConflicts = (typeof ResolveConflicts)[keyof typeof ResolveConflicts]; /** * @public */ export interface CreateAddonRequest { /** * <p>The name of your cluster.</p> * @public */ clusterName: string | undefined; /** * <p>The name of the add-on. The name must match one of the names returned by * <code>DescribeAddonVersions</code>.</p> * @public */ addonName: string | undefined; /** * <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> * <code>DescribeAddonVersions</code> * </a>.</p> * @public */ addonVersion?: string | undefined; /** * <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the * permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i