# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.EKS do
@moduledoc """
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 setup 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.
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
list_nodegroups_response() :: %{
"nextToken" => String.t() | atom(),
"nodegroups" => list(String.t() | atom())
}
"""
@type list_nodegroups_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_cluster_request() :: %{}
"""
@type describe_cluster_request() :: %{}
@typedoc """
## Example:
delete_fargate_profile_response() :: %{
"fargateProfile" => fargate_profile()
}
"""
@type delete_fargate_profile_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_access_policies_response() :: %{
"accessPolicies" => list(access_policy()),
"nextToken" => String.t() | atom()
}
"""
@type list_access_policies_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
insight_summary() :: %{
"category" => list(any()),
"description" => String.t() | atom(),
"id" => String.t() | atom(),
"insightStatus" => insight_status(),
"kubernetesVersion" => String.t() | atom(),
"lastRefreshTime" => non_neg_integer(),
"lastTransitionTime" => non_neg_integer(),
"name" => String.t() | atom()
}
"""
@type insight_summary() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
access_policy() :: %{
"arn" => String.t() | atom(),
"name" => String.t() | atom()
}
"""
@type access_policy() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_issue() :: %{
"code" => list(any()),
"message" => String.t() | atom(),
"resourceIds" => list(String.t() | atom())
}
"""
@type addon_issue() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_insights_request() :: %{
optional("filter") => insights_filter(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_insights_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_insight_response() :: %{
"insight" => insight()
}
"""
@type describe_insight_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_resource_request() :: %{
required("tags") => map()
}
"""
@type tag_resource_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_namespace_config_request() :: %{
"namespace" => String.t() | atom()
}
"""
@type addon_namespace_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
encryption_config() :: %{
"provider" => provider(),
"resources" => list(String.t() | atom())
}
"""
@type encryption_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_labels_payload() :: %{
"addOrUpdateLabels" => map(),
"removeLabels" => list(String.t() | atom())
}
"""
@type update_labels_payload() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_eks_anywhere_subscription_response() :: %{
"subscription" => eks_anywhere_subscription()
}
"""
@type describe_eks_anywhere_subscription_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
outpost_config_response() :: %{
"controlPlaneInstanceType" => String.t() | atom(),
"controlPlanePlacement" => control_plane_placement_response(),
"outpostArns" => list(String.t() | atom())
}
"""
@type outpost_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
compute_config_response() :: %{
"enabled" => boolean(),
"nodePools" => list(String.t() | atom()),
"nodeRoleArn" => String.t() | atom()
}
"""
@type compute_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
compatibility() :: %{
"clusterVersion" => String.t() | atom(),
"defaultVersion" => boolean(),
"platformVersions" => list(String.t() | atom())
}
"""
@type compatibility() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_response() :: %{
"addon" => addon()
}
"""
@type describe_addon_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_nodegroup_request() :: %{
optional("amiType") => list(any()),
optional("capacityType") => list(any()),
optional("clientRequestToken") => String.t() | atom(),
optional("diskSize") => integer(),
optional("instanceTypes") => list(String.t() | atom()),
optional("labels") => map(),
optional("launchTemplate") => launch_template_specification(),
optional("nodeRepairConfig") => node_repair_config(),
optional("releaseVersion") => String.t() | atom(),
optional("remoteAccess") => remote_access_config(),
optional("scalingConfig") => nodegroup_scaling_config(),
optional("tags") => map(),
optional("taints") => list(taint()),
optional("updateConfig") => nodegroup_update_config(),
optional("version") => String.t() | atom(),
required("nodeRole") => String.t() | atom(),
required("nodegroupName") => String.t() | atom(),
required("subnets") => list(String.t() | atom())
}
"""
@type create_nodegroup_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_addon_request() :: %{
optional("preserve") => boolean()
}
"""
@type delete_addon_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_cluster_response() :: %{
"cluster" => cluster()
}
"""
@type describe_cluster_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
unsupported_availability_zone_exception() :: %{
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"validZones" => list(String.t() | atom())
}
"""
@type unsupported_availability_zone_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
deregister_cluster_request() :: %{}
"""
@type deregister_cluster_request() :: %{}
@typedoc """
## Example:
update_nodegroup_config_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("labels") => update_labels_payload(),
optional("nodeRepairConfig") => node_repair_config(),
optional("scalingConfig") => nodegroup_scaling_config(),
optional("taints") => update_taints_payload(),
optional("updateConfig") => nodegroup_update_config()
}
"""
@type update_nodegroup_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
access_scope() :: %{
"namespaces" => list(String.t() | atom()),
"type" => list(any())
}
"""
@type access_scope() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_associated_access_policies_response() :: %{
"associatedAccessPolicies" => list(associated_access_policy()),
"clusterName" => String.t() | atom(),
"nextToken" => String.t() | atom(),
"principalArn" => String.t() | atom()
}
"""
@type list_associated_access_policies_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_addon_response() :: %{
"addon" => addon()
}
"""
@type delete_addon_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
untag_resource_response() :: %{}
"""
@type untag_resource_response() :: %{}
@typedoc """
## Example:
create_fargate_profile_response() :: %{
"fargateProfile" => fargate_profile()
}
"""
@type create_fargate_profile_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
remote_network_config_request() :: %{
"remoteNodeNetworks" => list(remote_node_network()),
"remotePodNetworks" => list(remote_pod_network())
}
"""
@type remote_network_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_cluster_response() :: %{
"cluster" => cluster()
}
"""
@type create_cluster_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
pod_identity_association() :: %{
"associationArn" => String.t() | atom(),
"associationId" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"createdAt" => non_neg_integer(),
"disableSessionTags" => boolean(),
"externalId" => String.t() | atom(),
"modifiedAt" => non_neg_integer(),
"namespace" => String.t() | atom(),
"ownerArn" => String.t() | atom(),
"roleArn" => String.t() | atom(),
"serviceAccount" => String.t() | atom(),
"tags" => map(),
"targetRoleArn" => String.t() | atom()
}
"""
@type pod_identity_association() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_in_use_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom()
}
"""
@type resource_in_use_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_identity_provider_config_request() :: %{
required("identityProviderConfig") => identity_provider_config()
}
"""
@type describe_identity_provider_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_configuration_response() :: %{
"addonName" => String.t() | atom(),
"addonVersion" => String.t() | atom(),
"configurationSchema" => String.t() | atom(),
"podIdentityConfiguration" => list(addon_pod_identity_configuration())
}
"""
@type describe_addon_configuration_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
identity() :: %{
"oidc" => o_id_c()
}
"""
@type identity() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
nodegroup_update_config() :: %{
"maxUnavailable" => integer(),
"maxUnavailablePercentage" => integer(),
"updateStrategy" => list(any())
}
"""
@type nodegroup_update_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_identity_provider_config_response() :: %{
"tags" => map(),
"update" => update()
}
"""
@type associate_identity_provider_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
identity_provider_config() :: %{
"name" => String.t() | atom(),
"type" => String.t() | atom()
}
"""
@type identity_provider_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
disassociate_access_policy_request() :: %{}
"""
@type disassociate_access_policy_request() :: %{}
@typedoc """
## Example:
addon_pod_identity_configuration() :: %{
"recommendedManagedPolicies" => list(String.t() | atom()),
"serviceAccount" => String.t() | atom()
}
"""
@type addon_pod_identity_configuration() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
license() :: %{
"id" => String.t() | atom(),
"token" => String.t() | atom()
}
"""
@type license() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_access_entry_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("kubernetesGroups") => list(String.t() | atom()),
optional("username") => String.t() | atom()
}
"""
@type update_access_entry_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_compatibility_detail() :: %{
"compatibleVersions" => list(String.t() | atom()),
"name" => String.t() | atom()
}
"""
@type addon_compatibility_detail() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
nodegroup() :: %{
"amiType" => list(any()),
"capacityType" => list(any()),
"clusterName" => String.t() | atom(),
"createdAt" => non_neg_integer(),
"diskSize" => integer(),
"health" => nodegroup_health(),
"instanceTypes" => list(String.t() | atom()),
"labels" => map(),
"launchTemplate" => launch_template_specification(),
"modifiedAt" => non_neg_integer(),
"nodeRepairConfig" => node_repair_config(),
"nodeRole" => String.t() | atom(),
"nodegroupArn" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"releaseVersion" => String.t() | atom(),
"remoteAccess" => remote_access_config(),
"resources" => nodegroup_resources(),
"scalingConfig" => nodegroup_scaling_config(),
"status" => list(any()),
"subnets" => list(String.t() | atom()),
"tags" => map(),
"taints" => list(taint()),
"updateConfig" => nodegroup_update_config(),
"version" => String.t() | atom()
}
"""
@type nodegroup() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
nodegroup_scaling_config() :: %{
"desiredSize" => integer(),
"maxSize" => integer(),
"minSize" => integer()
}
"""
@type nodegroup_scaling_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
deregister_cluster_response() :: %{
"cluster" => cluster()
}
"""
@type deregister_cluster_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_eks_anywhere_subscriptions_request() :: %{
optional("includeStatus") => list(list(any())()),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_eks_anywhere_subscriptions_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_access_policies_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_access_policies_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_insights_response() :: %{
"insights" => list(insight_summary()),
"nextToken" => String.t() | atom()
}
"""
@type list_insights_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
elastic_load_balancing() :: %{
"enabled" => boolean()
}
"""
@type elastic_load_balancing() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_pod_identity_associations() :: %{
"roleArn" => String.t() | atom(),
"serviceAccount" => String.t() | atom()
}
"""
@type addon_pod_identity_associations() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
identity_provider_config_response() :: %{
"oidc" => oidc_identity_provider_config()
}
"""
@type identity_provider_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_access_config_request() :: %{
"authenticationMode" => list(any()),
"bootstrapClusterCreatorAdminPermissions" => boolean()
}
"""
@type create_access_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_eks_anywhere_subscription_request() :: %{}
"""
@type delete_eks_anywhere_subscription_request() :: %{}
@typedoc """
## Example:
untag_resource_request() :: %{
required("tagKeys") => list(String.t() | atom())
}
"""
@type untag_resource_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_state_exception() :: %{
"clusterName" => String.t() | atom(),
"message" => String.t() | atom()
}
"""
@type invalid_state_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
register_cluster_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("tags") => map(),
required("connectorConfig") => connector_config_request(),
required("name") => String.t() | atom()
}
"""
@type register_cluster_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_insights_refresh_response() :: %{
"endedAt" => non_neg_integer(),
"message" => String.t() | atom(),
"startedAt" => non_neg_integer(),
"status" => list(any())
}
"""
@type describe_insights_refresh_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
control_plane_placement_response() :: %{
"groupName" => String.t() | atom()
}
"""
@type control_plane_placement_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
insight_status() :: %{
"reason" => String.t() | atom(),
"status" => list(any())
}
"""
@type insight_status() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
disassociate_access_policy_response() :: %{}
"""
@type disassociate_access_policy_response() :: %{}
@typedoc """
## Example:
list_pod_identity_associations_response() :: %{
"associations" => list(pod_identity_association_summary()),
"nextToken" => String.t() | atom()
}
"""
@type list_pod_identity_associations_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_addons_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_addons_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
fargate_profile_issue() :: %{
"code" => list(any()),
"message" => String.t() | atom(),
"resourceIds" => list(String.t() | atom())
}
"""
@type fargate_profile_issue() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
compute_config_request() :: %{
"enabled" => boolean(),
"nodePools" => list(String.t() | atom()),
"nodeRoleArn" => String.t() | atom()
}
"""
@type compute_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_versions_request() :: %{
optional("addonName") => String.t() | atom(),
optional("kubernetesVersion") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
optional("owners") => list(String.t() | atom()),
optional("publishers") => list(String.t() | atom()),
optional("types") => list(String.t() | atom())
}
"""
@type describe_addon_versions_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon() :: %{
"addonArn" => String.t() | atom(),
"addonName" => String.t() | atom(),
"addonVersion" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"configurationValues" => String.t() | atom(),
"createdAt" => non_neg_integer(),
"health" => addon_health(),
"marketplaceInformation" => marketplace_information(),
"modifiedAt" => non_neg_integer(),
"namespaceConfig" => addon_namespace_config_response(),
"owner" => String.t() | atom(),
"podIdentityAssociations" => list(String.t() | atom()),
"publisher" => String.t() | atom(),
"serviceAccountRoleArn" => String.t() | atom(),
"status" => list(any()),
"tags" => map()
}
"""
@type addon() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_taints_payload() :: %{
"addOrUpdateTaints" => list(taint()),
"removeTaints" => list(taint())
}
"""
@type update_taints_payload() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
access_entry() :: %{
"accessEntryArn" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"createdAt" => non_neg_integer(),
"kubernetesGroups" => list(String.t() | atom()),
"modifiedAt" => non_neg_integer(),
"principalArn" => String.t() | atom(),
"tags" => map(),
"type" => String.t() | atom(),
"username" => String.t() | atom()
}
"""
@type access_entry() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_namespace_config_response() :: %{
"namespace" => String.t() | atom()
}
"""
@type addon_namespace_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_fargate_profile_request() :: %{}
"""
@type describe_fargate_profile_request() :: %{}
@typedoc """
## Example:
provider() :: %{
"keyArn" => String.t() | atom()
}
"""
@type provider() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
eks_anywhere_subscription_term() :: %{
"duration" => integer(),
"unit" => list(any())
}
"""
@type eks_anywhere_subscription_term() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_access_entry_response() :: %{
"accessEntry" => access_entry()
}
"""
@type update_access_entry_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_eks_anywhere_subscription_request() :: %{
optional("autoRenew") => boolean(),
optional("clientRequestToken") => String.t() | atom(),
optional("licenseQuantity") => integer(),
optional("licenseType") => list(any()),
optional("tags") => map(),
required("name") => String.t() | atom(),
required("term") => eks_anywhere_subscription_term()
}
"""
@type create_eks_anywhere_subscription_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
zonal_shift_config_request() :: %{
"enabled" => boolean()
}
"""
@type zonal_shift_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_cluster_request() :: %{
optional("accessConfig") => create_access_config_request(),
optional("bootstrapSelfManagedAddons") => boolean(),
optional("clientRequestToken") => String.t() | atom(),
optional("computeConfig") => compute_config_request(),
optional("deletionProtection") => boolean(),
optional("encryptionConfig") => list(encryption_config()),
optional("kubernetesNetworkConfig") => kubernetes_network_config_request(),
optional("logging") => logging(),
optional("outpostConfig") => outpost_config_request(),
optional("remoteNetworkConfig") => remote_network_config_request(),
optional("storageConfig") => storage_config_request(),
optional("tags") => map(),
optional("upgradePolicy") => upgrade_policy_request(),
optional("version") => String.t() | atom(),
optional("zonalShiftConfig") => zonal_shift_config_request(),
required("name") => String.t() | atom(),
required("resourcesVpcConfig") => vpc_config_request(),
required("roleArn") => String.t() | atom()
}
"""
@type create_cluster_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update() :: %{
"createdAt" => non_neg_integer(),
"errors" => list(error_detail()),
"id" => String.t() | atom(),
"params" => list(update_param()),
"status" => list(any()),
"type" => list(any())
}
"""
@type update() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
insights_filter() :: %{
"categories" => list(list(any())()),
"kubernetesVersions" => list(String.t() | atom()),
"statuses" => list(list(any())())
}
"""
@type insights_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_encryption_config_response() :: %{
"update" => update()
}
"""
@type associate_encryption_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
client_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type client_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_not_found_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"fargateProfileName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type resource_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_addon_request() :: %{
optional("addonVersion") => String.t() | atom(),
optional("clientRequestToken") => String.t() | atom(),
optional("configurationValues") => String.t() | atom(),
optional("podIdentityAssociations") => list(addon_pod_identity_associations()),
optional("resolveConflicts") => list(any()),
optional("serviceAccountRoleArn") => String.t() | atom()
}
"""
@type update_addon_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_pod_identity_association_response() :: %{
"association" => pod_identity_association()
}
"""
@type update_pod_identity_association_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
outpost_config_request() :: %{
"controlPlaneInstanceType" => String.t() | atom(),
"controlPlanePlacement" => control_plane_placement_request(),
"outpostArns" => list(String.t() | atom())
}
"""
@type outpost_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_fargate_profile_response() :: %{
"fargateProfile" => fargate_profile()
}
"""
@type describe_fargate_profile_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_cluster_versions_request() :: %{
optional("clusterType") => String.t() | atom(),
optional("clusterVersions") => list(String.t() | atom()),
optional("defaultOnly") => boolean(),
optional("includeAll") => boolean(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
optional("status") => list(any()),
optional("versionStatus") => list(any())
}
"""
@type describe_cluster_versions_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
deprecation_detail() :: %{
"clientStats" => list(client_stat()),
"replacedWith" => String.t() | atom(),
"startServingReplacementVersion" => String.t() | atom(),
"stopServingVersion" => String.t() | atom(),
"usage" => String.t() | atom()
}
"""
@type deprecation_detail() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_request_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type invalid_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
zonal_shift_config_response() :: %{
"enabled" => boolean()
}
"""
@type zonal_shift_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
upgrade_policy_response() :: %{
"supportType" => list(any())
}
"""
@type upgrade_policy_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_encryption_config_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
required("encryptionConfig") => list(encryption_config())
}
"""
@type associate_encryption_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
issue() :: %{
"code" => list(any()),
"message" => String.t() | atom(),
"resourceIds" => list(String.t() | atom())
}
"""
@type issue() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_eks_anywhere_subscription_response() :: %{
"subscription" => eks_anywhere_subscription()
}
"""
@type create_eks_anywhere_subscription_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
cluster() :: %{
"accessConfig" => access_config_response(),
"arn" => String.t() | atom(),
"certificateAuthority" => certificate(),
"clientRequestToken" => String.t() | atom(),
"computeConfig" => compute_config_response(),
"connectorConfig" => connector_config_response(),
"createdAt" => non_neg_integer(),
"deletionProtection" => boolean(),
"encryptionConfig" => list(encryption_config()),
"endpoint" => String.t() | atom(),
"health" => cluster_health(),
"id" => String.t() | atom(),
"identity" => identity(),
"kubernetesNetworkConfig" => kubernetes_network_config_response(),
"logging" => logging(),
"name" => String.t() | atom(),
"outpostConfig" => outpost_config_response(),
"platformVersion" => String.t() | atom(),
"remoteNetworkConfig" => remote_network_config_response(),
"resourcesVpcConfig" => vpc_config_response(),
"roleArn" => String.t() | atom(),
"status" => list(any()),
"storageConfig" => storage_config_response(),
"tags" => map(),
"upgradePolicy" => upgrade_policy_response(),
"version" => String.t() | atom(),
"zonalShiftConfig" => zonal_shift_config_response()
}
"""
@type cluster() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_cluster_config_response() :: %{
"update" => update()
}
"""
@type update_cluster_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_pod_identity_association_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("disableSessionTags") => boolean(),
optional("roleArn") => String.t() | atom(),
optional("targetRoleArn") => String.t() | atom()
}
"""
@type update_pod_identity_association_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_updates_response() :: %{
"nextToken" => String.t() | atom(),
"updateIds" => list(String.t() | atom())
}
"""
@type list_updates_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_versions_response() :: %{
"addons" => list(addon_info()),
"nextToken" => String.t() | atom()
}
"""
@type describe_addon_versions_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
access_config_response() :: %{
"authenticationMode" => list(any()),
"bootstrapClusterCreatorAdminPermissions" => boolean()
}
"""
@type access_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_limit_exceeded_exception() :: %{
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type resource_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_updates_request() :: %{
optional("addonName") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
optional("nodegroupName") => String.t() | atom()
}
"""
@type list_updates_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
not_found_exception() :: %{
"message" => String.t() | atom()
}
"""
@type not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_cluster_versions_response() :: %{
"clusterVersions" => list(cluster_version_information()),
"nextToken" => String.t() | atom()
}
"""
@type describe_cluster_versions_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
node_repair_config_overrides() :: %{
"minRepairWaitTimeMins" => integer(),
"nodeMonitoringCondition" => String.t() | atom(),
"nodeUnhealthyReason" => String.t() | atom(),
"repairAction" => list(any())
}
"""
@type node_repair_config_overrides() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
fargate_profile_health() :: %{
"issues" => list(fargate_profile_issue())
}
"""
@type fargate_profile_health() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_addon_request() :: %{
optional("addonVersion") => String.t() | atom(),
optional("clientRequestToken") => String.t() | atom(),
optional("configurationValues") => String.t() | atom(),
optional("namespaceConfig") => addon_namespace_config_request(),
optional("podIdentityAssociations") => list(addon_pod_identity_associations()),
optional("resolveConflicts") => list(any()),
optional("serviceAccountRoleArn") => String.t() | atom(),
optional("tags") => map(),
required("addonName") => String.t() | atom()
}
"""
@type create_addon_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
remote_network_config_response() :: %{
"remoteNodeNetworks" => list(remote_node_network()),
"remotePodNetworks" => list(remote_pod_network())
}
"""
@type remote_network_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_configuration_request() :: %{
required("addonName") => String.t() | atom(),
required("addonVersion") => String.t() | atom()
}
"""
@type describe_addon_configuration_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_nodegroup_request() :: %{}
"""
@type describe_nodegroup_request() :: %{}
@typedoc """
## Example:
describe_access_entry_response() :: %{
"accessEntry" => access_entry()
}
"""
@type describe_access_entry_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_tags_for_resource_response() :: %{
"tags" => map()
}
"""
@type list_tags_for_resource_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_pod_identity_association_response() :: %{
"association" => pod_identity_association()
}
"""
@type delete_pod_identity_association_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_insight_request() :: %{}
"""
@type describe_insight_request() :: %{}
@typedoc """
## Example:
list_nodegroups_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_nodegroups_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
vpc_config_request() :: %{
"endpointPrivateAccess" => boolean(),
"endpointPublicAccess" => boolean(),
"publicAccessCidrs" => list(String.t() | atom()),
"securityGroupIds" => list(String.t() | atom()),
"subnetIds" => list(String.t() | atom())
}
"""
@type vpc_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
pod_identity_association_summary() :: %{
"associationArn" => String.t() | atom(),
"associationId" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"namespace" => String.t() | atom(),
"ownerArn" => String.t() | atom(),
"serviceAccount" => String.t() | atom()
}
"""
@type pod_identity_association_summary() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
service_unavailable_exception() :: %{
"message" => String.t() | atom()
}
"""
@type service_unavailable_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_identity_provider_config_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("tags") => map(),
required("oidc") => oidc_identity_provider_config_request()
}
"""
@type associate_identity_provider_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_nodegroup_response() :: %{
"nodegroup" => nodegroup()
}
"""
@type create_nodegroup_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
disassociate_identity_provider_config_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
required("identityProviderConfig") => identity_provider_config()
}
"""
@type disassociate_identity_provider_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
o_id_c() :: %{
"issuer" => String.t() | atom()
}
"""
@type o_id_c() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_clusters_response() :: %{
"clusters" => list(String.t() | atom()),
"nextToken" => String.t() | atom()
}
"""
@type list_clusters_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_cluster_response() :: %{
"cluster" => cluster()
}
"""
@type delete_cluster_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_fargate_profiles_response() :: %{
"fargateProfileNames" => list(String.t() | atom()),
"nextToken" => String.t() | atom()
}
"""
@type list_fargate_profiles_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
node_repair_config() :: %{
"enabled" => boolean(),
"maxParallelNodesRepairedCount" => integer(),
"maxParallelNodesRepairedPercentage" => integer(),
"maxUnhealthyNodeThresholdCount" => integer(),
"maxUnhealthyNodeThresholdPercentage" => integer(),
"nodeRepairConfigOverrides" => list(node_repair_config_overrides())
}
"""
@type node_repair_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_fargate_profile_request() :: %{}
"""
@type delete_fargate_profile_request() :: %{}
@typedoc """
## Example:
block_storage() :: %{
"enabled" => boolean()
}
"""
@type block_storage() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
upgrade_policy_request() :: %{
"supportType" => list(any())
}
"""
@type upgrade_policy_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_access_policy_response() :: %{
"associatedAccessPolicy" => associated_access_policy(),
"clusterName" => String.t() | atom(),
"principalArn" => String.t() | atom()
}
"""
@type associate_access_policy_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_addon_response() :: %{
"update" => update()
}
"""
@type update_addon_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_clusters_request() :: %{
optional("include") => list(String.t() | atom()),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_clusters_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_nodegroup_config_response() :: %{
"update" => update()
}
"""
@type update_nodegroup_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_nodegroup_version_response() :: %{
"update" => update()
}
"""
@type update_nodegroup_version_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kubernetes_network_config_request() :: %{
"elasticLoadBalancing" => elastic_load_balancing(),
"ipFamily" => list(any()),
"serviceIpv4Cidr" => String.t() | atom()
}
"""
@type kubernetes_network_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
control_plane_placement_request() :: %{
"groupName" => String.t() | atom()
}
"""
@type control_plane_placement_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
certificate() :: %{
"data" => String.t() | atom()
}
"""
@type certificate() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
marketplace_information() :: %{
"productId" => String.t() | atom(),
"productUrl" => String.t() | atom()
}
"""
@type marketplace_information() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
insight_resource_detail() :: %{
"arn" => String.t() | atom(),
"insightStatus" => insight_status(),
"kubernetesResourceUri" => String.t() | atom()
}
"""
@type insight_resource_detail() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_access_entry_response() :: %{
"accessEntry" => access_entry()
}
"""
@type create_access_entry_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associated_access_policy() :: %{
"accessScope" => access_scope(),
"associatedAt" => non_neg_integer(),
"modifiedAt" => non_neg_integer(),
"policyArn" => String.t() | atom()
}
"""
@type associated_access_policy() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_cluster_request() :: %{}
"""
@type delete_cluster_request() :: %{}
@typedoc """
## Example:
delete_eks_anywhere_subscription_response() :: %{
"subscription" => eks_anywhere_subscription()
}
"""
@type delete_eks_anywhere_subscription_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
start_insights_refresh_request() :: %{}
"""
@type start_insights_refresh_request() :: %{}
@typedoc """
## Example:
create_fargate_profile_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("selectors") => list(fargate_profile_selector()),
optional("subnets") => list(String.t() | atom()),
optional("tags") => map(),
required("fargateProfileName") => String.t() | atom(),
required("podExecutionRoleArn") => String.t() | atom()
}
"""
@type create_fargate_profile_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_eks_anywhere_subscription_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
required("autoRenew") => boolean()
}
"""
@type update_eks_anywhere_subscription_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
error_detail() :: %{
"errorCode" => list(any()),
"errorMessage" => String.t() | atom(),
"resourceIds" => list(String.t() | atom())
}
"""
@type error_detail() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_param() :: %{
"type" => list(any()),
"value" => String.t() | atom()
}
"""
@type update_param() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
access_denied_exception() :: %{
"message" => String.t() | atom()
}
"""
@type access_denied_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
eks_anywhere_subscription() :: %{
"arn" => String.t() | atom(),
"autoRenew" => boolean(),
"createdAt" => non_neg_integer(),
"effectiveDate" => non_neg_integer(),
"expirationDate" => non_neg_integer(),
"id" => String.t() | atom(),
"licenseArns" => list(String.t() | atom()),
"licenseQuantity" => integer(),
"licenseType" => list(any()),
"licenses" => list(license()),
"status" => String.t() | atom(),
"tags" => map(),
"term" => eks_anywhere_subscription_term()
}
"""
@type eks_anywhere_subscription() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_parameter_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"fargateProfileName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type invalid_parameter_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
storage_config_request() :: %{
"blockStorage" => block_storage()
}
"""
@type storage_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_pod_identity_association_request() :: %{}
"""
@type delete_pod_identity_association_request() :: %{}
@typedoc """
## Example:
cluster_health() :: %{
"issues" => list(cluster_issue())
}
"""
@type cluster_health() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_resource_response() :: %{}
"""
@type tag_resource_response() :: %{}
@typedoc """
## Example:
remote_access_config() :: %{
"ec2SshKey" => String.t() | atom(),
"sourceSecurityGroups" => list(String.t() | atom())
}
"""
@type remote_access_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_identity_provider_configs_response() :: %{
"identityProviderConfigs" => list(identity_provider_config()),
"nextToken" => String.t() | atom()
}
"""
@type list_identity_provider_configs_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_associated_access_policies_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_associated_access_policies_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
oidc_identity_provider_config_request() :: %{
"clientId" => String.t() | atom(),
"groupsClaim" => String.t() | atom(),
"groupsPrefix" => String.t() | atom(),
"identityProviderConfigName" => String.t() | atom(),
"issuerUrl" => String.t() | atom(),
"requiredClaims" => map(),
"usernameClaim" => String.t() | atom(),
"usernamePrefix" => String.t() | atom()
}
"""
@type oidc_identity_provider_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_access_entry_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("kubernetesGroups") => list(String.t() | atom()),
optional("tags") => map(),
optional("type") => String.t() | atom(),
optional("username") => String.t() | atom(),
required("principalArn") => String.t() | atom()
}
"""
@type create_access_entry_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
taint() :: %{
"effect" => list(any()),
"key" => String.t() | atom(),
"value" => String.t() | atom()
}
"""
@type taint() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
auto_scaling_group() :: %{
"name" => String.t() | atom()
}
"""
@type auto_scaling_group() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_tags_for_resource_request() :: %{}
"""
@type list_tags_for_resource_request() :: %{}
@typedoc """
## Example:
addon_health() :: %{
"issues" => list(addon_issue())
}
"""
@type addon_health() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_update_request() :: %{
optional("addonName") => String.t() | atom(),
optional("nodegroupName") => String.t() | atom()
}
"""
@type describe_update_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_insights_refresh_request() :: %{}
"""
@type describe_insights_refresh_request() :: %{}
@typedoc """
## Example:
oidc_identity_provider_config() :: %{
"clientId" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"groupsClaim" => String.t() | atom(),
"groupsPrefix" => String.t() | atom(),
"identityProviderConfigArn" => String.t() | atom(),
"identityProviderConfigName" => String.t() | atom(),
"issuerUrl" => String.t() | atom(),
"requiredClaims" => map(),
"status" => list(any()),
"tags" => map(),
"usernameClaim" => String.t() | atom(),
"usernamePrefix" => String.t() | atom()
}
"""
@type oidc_identity_provider_config() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
nodegroup_health() :: %{
"issues" => list(issue())
}
"""
@type nodegroup_health() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_nodegroup_version_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("force") => boolean(),
optional("launchTemplate") => launch_template_specification(),
optional("releaseVersion") => String.t() | atom(),
optional("version") => String.t() | atom()
}
"""
@type update_nodegroup_version_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
connector_config_request() :: %{
"provider" => list(any()),
"roleArn" => String.t() | atom()
}
"""
@type connector_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_access_entry_request() :: %{}
"""
@type describe_access_entry_request() :: %{}
@typedoc """
## Example:
delete_nodegroup_response() :: %{
"nodegroup" => nodegroup()
}
"""
@type delete_nodegroup_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
client_stat() :: %{
"lastRequestTime" => non_neg_integer(),
"numberOfRequestsLast30Days" => integer(),
"userAgent" => String.t() | atom()
}
"""
@type client_stat() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
throttling_exception() :: %{
"clusterName" => String.t() | atom(),
"message" => String.t() | atom()
}
"""
@type throttling_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
connector_config_response() :: %{
"activationCode" => String.t() | atom(),
"activationExpiry" => non_neg_integer(),
"activationId" => String.t() | atom(),
"provider" => String.t() | atom(),
"roleArn" => String.t() | atom()
}
"""
@type connector_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
storage_config_response() :: %{
"blockStorage" => block_storage()
}
"""
@type storage_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
nodegroup_resources() :: %{
"autoScalingGroups" => list(auto_scaling_group()),
"remoteAccessSecurityGroup" => String.t() | atom()
}
"""
@type nodegroup_resources() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
disassociate_identity_provider_config_response() :: %{
"update" => update()
}
"""
@type disassociate_identity_provider_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
server_exception() :: %{
"addonName" => String.t() | atom(),
"clusterName" => String.t() | atom(),
"message" => String.t() | atom(),
"nodegroupName" => String.t() | atom(),
"subscriptionId" => String.t() | atom()
}
"""
@type server_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kubernetes_network_config_response() :: %{
"elasticLoadBalancing" => elastic_load_balancing(),
"ipFamily" => list(any()),
"serviceIpv4Cidr" => String.t() | atom(),
"serviceIpv6Cidr" => String.t() | atom()
}
"""
@type kubernetes_network_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
fargate_profile() :: %{
"clusterName" => String.t() | atom(),
"createdAt" => non_neg_integer(),
"fargateProfileArn" => String.t() | atom(),
"fargateProfileName" => String.t() | atom(),
"health" => fargate_profile_health(),
"podExecutionRoleArn" => String.t() | atom(),
"selectors" => list(fargate_profile_selector()),
"status" => list(any()),
"subnets" => list(String.t() | atom()),
"tags" => map()
}
"""
@type fargate_profile() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
start_insights_refresh_response() :: %{
"message" => String.t() | atom(),
"status" => list(any())
}
"""
@type start_insights_refresh_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_access_config_request() :: %{
"authenticationMode" => list(any())
}
"""
@type update_access_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_info() :: %{
"addonName" => String.t() | atom(),
"addonVersions" => list(addon_version_info()),
"defaultNamespace" => String.t() | atom(),
"marketplaceInformation" => marketplace_information(),
"owner" => String.t() | atom(),
"publisher" => String.t() | atom(),
"type" => String.t() | atom()
}
"""
@type addon_info() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_eks_anywhere_subscriptions_response() :: %{
"nextToken" => String.t() | atom(),
"subscriptions" => list(eks_anywhere_subscription())
}
"""
@type list_eks_anywhere_subscriptions_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_pod_identity_associations_request() :: %{
optional("maxResults") => integer(),
optional("namespace") => String.t() | atom(),
optional("nextToken") => String.t() | atom(),
optional("serviceAccount") => String.t() | atom()
}
"""
@type list_pod_identity_associations_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
remote_node_network() :: %{
"cidrs" => list(String.t() | atom())
}
"""
@type remote_node_network() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_cluster_version_response() :: %{
"update" => update()
}
"""
@type update_cluster_version_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
associate_access_policy_request() :: %{
required("accessScope") => access_scope(),
required("policyArn") => String.t() | atom()
}
"""
@type associate_access_policy_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
launch_template_specification() :: %{
"id" => String.t() | atom(),
"name" => String.t() | atom(),
"version" => String.t() | atom()
}
"""
@type launch_template_specification() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
bad_request_exception() :: %{
"message" => String.t() | atom()
}
"""
@type bad_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
vpc_config_response() :: %{
"clusterSecurityGroupId" => String.t() | atom(),
"endpointPrivateAccess" => boolean(),
"endpointPublicAccess" => boolean(),
"publicAccessCidrs" => list(String.t() | atom()),
"securityGroupIds" => list(String.t() | atom()),
"subnetIds" => list(String.t() | atom()),
"vpcId" => String.t() | atom()
}
"""
@type vpc_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_eks_anywhere_subscription_response() :: %{
"subscription" => eks_anywhere_subscription()
}
"""
@type update_eks_anywhere_subscription_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_fargate_profiles_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_fargate_profiles_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_pod_identity_association_request() :: %{}
"""
@type describe_pod_identity_association_request() :: %{}
@typedoc """
## Example:
delete_access_entry_request() :: %{}
"""
@type delete_access_entry_request() :: %{}
@typedoc """
## Example:
insight() :: %{
"additionalInfo" => map(),
"category" => list(any()),
"categorySpecificSummary" => insight_category_specific_summary(),
"description" => String.t() | atom(),
"id" => String.t() | atom(),
"insightStatus" => insight_status(),
"kubernetesVersion" => String.t() | atom(),
"lastRefreshTime" => non_neg_integer(),
"lastTransitionTime" => non_neg_integer(),
"name" => String.t() | atom(),
"recommendation" => String.t() | atom(),
"resources" => list(insight_resource_detail())
}
"""
@type insight() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_cluster_config_request() :: %{
optional("accessConfig") => update_access_config_request(),
optional("clientRequestToken") => String.t() | atom(),
optional("computeConfig") => compute_config_request(),
optional("deletionProtection") => boolean(),
optional("kubernetesNetworkConfig") => kubernetes_network_config_request(),
optional("logging") => logging(),
optional("remoteNetworkConfig") => remote_network_config_request(),
optional("resourcesVpcConfig") => vpc_config_request(),
optional("storageConfig") => storage_config_request(),
optional("upgradePolicy") => upgrade_policy_request(),
optional("zonalShiftConfig") => zonal_shift_config_request()
}
"""
@type update_cluster_config_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
remote_pod_network() :: %{
"cidrs" => list(String.t() | atom())
}
"""
@type remote_pod_network() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
cluster_issue() :: %{
"code" => list(any()),
"message" => String.t() | atom(),
"resourceIds" => list(String.t() | atom())
}
"""
@type cluster_issue() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_addon_request() :: %{}
"""
@type describe_addon_request() :: %{}
@typedoc """
## Example:
list_addons_response() :: %{
"addons" => list(String.t() | atom()),
"nextToken" => String.t() | atom()
}
"""
@type list_addons_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
insight_category_specific_summary() :: %{
"addonCompatibilityDetails" => list(addon_compatibility_detail()),
"deprecationDetails" => list(deprecation_detail())
}
"""
@type insight_category_specific_summary() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
log_setup() :: %{
"enabled" => boolean(),
"types" => list(list(any())())
}
"""
@type log_setup() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_addon_response() :: %{
"addon" => addon()
}
"""
@type create_addon_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
register_cluster_response() :: %{
"cluster" => cluster()
}
"""
@type register_cluster_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_nodegroup_response() :: %{
"nodegroup" => nodegroup()
}
"""
@type describe_nodegroup_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_access_entries_response() :: %{
"accessEntries" => list(String.t() | atom()),
"nextToken" => String.t() | atom()
}
"""
@type list_access_entries_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_pod_identity_association_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("disableSessionTags") => boolean(),
optional("tags") => map(),
optional("targetRoleArn") => String.t() | atom(),
required("namespace") => String.t() | atom(),
required("roleArn") => String.t() | atom(),
required("serviceAccount") => String.t() | atom()
}
"""
@type create_pod_identity_association_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_identity_provider_config_response() :: %{
"identityProviderConfig" => identity_provider_config_response()
}
"""
@type describe_identity_provider_config_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
fargate_profile_selector() :: %{
"labels" => map(),
"namespace" => String.t() | atom()
}
"""
@type fargate_profile_selector() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_access_entries_request() :: %{
optional("associatedPolicyArn") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_access_entries_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_pod_identity_association_response() :: %{
"association" => pod_identity_association()
}
"""
@type describe_pod_identity_association_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
logging() :: %{
"clusterLogging" => list(log_setup())
}
"""
@type logging() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_identity_provider_configs_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type list_identity_provider_configs_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_cluster_version_request() :: %{
optional("clientRequestToken") => String.t() | atom(),
optional("force") => boolean(),
required("version") => String.t() | atom()
}
"""
@type update_cluster_version_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_propagation_delay_exception() :: %{
"message" => String.t() | atom()
}
"""
@type resource_propagation_delay_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_eks_anywhere_subscription_request() :: %{}
"""
@type describe_eks_anywhere_subscription_request() :: %{}
@typedoc """
## Example:
delete_access_entry_response() :: %{}
"""
@type delete_access_entry_response() :: %{}
@typedoc """
## Example:
describe_update_response() :: %{
"update" => update()
}
"""
@type describe_update_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
cluster_version_information() :: %{
"clusterType" => String.t() | atom(),
"clusterVersion" => String.t() | atom(),
"defaultPlatformVersion" => String.t() | atom(),
"defaultVersion" => boolean(),
"endOfExtendedSupportDate" => non_neg_integer(),
"endOfStandardSupportDate" => non_neg_integer(),
"kubernetesPatchVersion" => String.t() | atom(),
"releaseDate" => non_neg_integer(),
"status" => list(any()),
"versionStatus" => list(any())
}
"""
@type cluster_version_information() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_pod_identity_association_response() :: %{
"association" => pod_identity_association()
}
"""
@type create_pod_identity_association_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
addon_version_info() :: %{
"addonVersion" => String.t() | atom(),
"architecture" => list(String.t() | atom()),
"compatibilities" => list(compatibility()),
"computeTypes" => list(String.t() | atom()),
"requiresConfiguration" => boolean(),
"requiresIamPermissions" => boolean()
}
"""
@type addon_version_info() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_nodegroup_request() :: %{}
"""
@type delete_nodegroup_request() :: %{}
@type associate_access_policy_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type associate_encryption_config_errors() ::
server_exception()
| throttling_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type associate_identity_provider_config_errors() ::
server_exception()
| throttling_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type create_access_entry_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_limit_exceeded_exception()
| invalid_request_exception()
| resource_not_found_exception()
| resource_in_use_exception()
@type create_addon_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type create_cluster_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_limit_exceeded_exception()
| client_exception()
| resource_in_use_exception()
| unsupported_availability_zone_exception()
@type create_eks_anywhere_subscription_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_limit_exceeded_exception()
| client_exception()
@type create_fargate_profile_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_limit_exceeded_exception()
| invalid_request_exception()
| client_exception()
| unsupported_availability_zone_exception()
@type create_nodegroup_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_limit_exceeded_exception()
| invalid_request_exception()
| client_exception()
| resource_in_use_exception()
@type create_pod_identity_association_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_limit_exceeded_exception()
| invalid_request_exception()
| resource_not_found_exception()
| resource_in_use_exception()
@type delete_access_entry_errors() ::
server_exception() | invalid_request_exception() | resource_not_found_exception()
@type delete_addon_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
@type delete_cluster_errors() ::
server_exception()
| service_unavailable_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type delete_eks_anywhere_subscription_errors() ::
server_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
@type delete_fargate_profile_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| client_exception()
@type delete_nodegroup_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type delete_pod_identity_association_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type deregister_cluster_errors() ::
server_exception()
| access_denied_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type describe_access_entry_errors() ::
server_exception() | invalid_request_exception() | resource_not_found_exception()
@type describe_addon_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
@type describe_addon_configuration_errors() ::
server_exception() | invalid_parameter_exception() | resource_not_found_exception()
@type describe_addon_versions_errors() ::
server_exception() | invalid_parameter_exception() | resource_not_found_exception()
@type describe_cluster_errors() ::
server_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type describe_cluster_versions_errors() ::
server_exception() | invalid_parameter_exception() | invalid_request_exception()
@type describe_eks_anywhere_subscription_errors() ::
server_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type describe_fargate_profile_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| client_exception()
@type describe_identity_provider_config_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type describe_insight_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type describe_insights_refresh_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type describe_nodegroup_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type describe_pod_identity_association_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type describe_update_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| client_exception()
@type disassociate_access_policy_errors() ::
server_exception() | invalid_request_exception() | resource_not_found_exception()
@type disassociate_identity_provider_config_errors() ::
server_exception()
| throttling_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type list_access_entries_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type list_access_policies_errors() :: server_exception()
@type list_addons_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
@type list_associated_access_policies_errors() ::
server_exception() | invalid_request_exception() | resource_not_found_exception()
@type list_clusters_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| client_exception()
@type list_eks_anywhere_subscriptions_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| client_exception()
@type list_fargate_profiles_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| client_exception()
@type list_identity_provider_configs_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type list_insights_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type list_nodegroups_errors() ::
server_exception()
| invalid_parameter_exception()
| service_unavailable_exception()
| resource_not_found_exception()
| client_exception()
@type list_pod_identity_associations_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type list_tags_for_resource_errors() :: bad_request_exception() | not_found_exception()
@type list_updates_errors() ::
server_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| client_exception()
@type register_cluster_errors() ::
resource_propagation_delay_exception()
| server_exception()
| invalid_parameter_exception()
| access_denied_exception()
| service_unavailable_exception()
| resource_limit_exceeded_exception()
| client_exception()
| resource_in_use_exception()
@type start_insights_refresh_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type tag_resource_errors() :: bad_request_exception() | not_found_exception()
@type untag_resource_errors() :: bad_request_exception() | not_found_exception()
@type update_access_entry_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
@type update_addon_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type update_cluster_config_errors() ::
server_exception()
| throttling_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type update_cluster_version_errors() ::
server_exception()
| throttling_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| invalid_state_exception()
| resource_in_use_exception()
@type update_eks_anywhere_subscription_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
@type update_nodegroup_config_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type update_nodegroup_version_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
| client_exception()
| resource_in_use_exception()
@type update_pod_identity_association_errors() ::
server_exception()
| invalid_parameter_exception()
| invalid_request_exception()
| resource_not_found_exception()
def metadata do
%{
api_version: "2017-11-01",
content_type: "application/x-amz-json-1.1",
credential_scope: nil,
endpoint_prefix: "eks",
global?: false,
hostname: nil,
protocol: "rest-json",
service_id: "EKS",
signature_version: "v4",
signing_name: "eks",
target_prefix: nil
}
end
@doc """
Associates an access policy and its scope to an access entry.
For more information
about associating access policies, see [Associating and disassociating access policies to and from access
entries](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html)
in the *Amazon EKS User Guide*.
"""
@spec associate_access_policy(
map(),
String.t() | atom(),
String.t() | atom(),
associate_access_policy_request(),
list()
) ::
{:ok, associate_access_policy_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, associate_access_policy_errors()}
def associate_access_policy(
%Client{} = client,
cluster_name,
principal_arn,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}/access-policies"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Associates an encryption configuration to an existing cluster.
Use this API to enable encryption on existing clusters that don't already have
encryption enabled. This allows you to implement a defense-in-depth security
strategy
without migrating applications to new Amazon EKS clusters.
"""
@spec associate_encryption_config(
map(),
String.t() | atom(),
associate_encryption_config_request(),
list()
) ::
{:ok, associate_encryption_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, associate_encryption_config_errors()}
def associate_encryption_config(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/encryption-config/associate"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Associates 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 `Role` and
`ClusterRole` objects, assign permissions to them, and then bind them to
the identities using Kubernetes `RoleBinding` and `ClusterRoleBinding`
objects. For more information see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) in
the Kubernetes documentation.
"""
@spec associate_identity_provider_config(
map(),
String.t() | atom(),
associate_identity_provider_config_request(),
list()
) ::
{:ok, associate_identity_provider_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, associate_identity_provider_config_errors()}
def associate_identity_provider_config(%Client{} = client, cluster_name, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/identity-provider-configs/associate"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Creates an access entry.
An access entry allows an IAM principal to access your cluster. Access
entries can replace the need to maintain entries in the `aws-auth`
`ConfigMap` for authentication. You have the following options for
authorizing an IAM principal to access Kubernetes objects on your cluster:
Kubernetes
role-based access control (RBAC), Amazon EKS, or both. Kubernetes RBAC
authorization requires you
to create and manage Kubernetes `Role`, `ClusterRole`,
`RoleBinding`, and `ClusterRoleBinding` objects, in addition
to managing access entries. If you use Amazon EKS authorization exclusively, you
don't need
to create and manage Kubernetes `Role`, `ClusterRole`,
`RoleBinding`, and `ClusterRoleBinding` objects.
For more information about access entries, see [Access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)
in the
*Amazon EKS User Guide*.
"""
@spec create_access_entry(map(), String.t() | atom(), create_access_entry_request(), list()) ::
{:ok, create_access_entry_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_access_entry_errors()}
def create_access_entry(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html) in
the *Amazon EKS User Guide*.
"""
@spec create_addon(map(), String.t() | atom(), create_addon_request(), list()) ::
{:ok, create_addon_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_addon_errors()}
def create_addon(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/addons"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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.
You can use the `endpointPublicAccess` and
`endpointPrivateAccess` parameters 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. The
endpoint domain name and IP address family depends on the value of the
`ipFamily` for the cluster. For more information, see [Amazon EKS Cluster Endpoint Access
Control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)
in the *
*Amazon EKS User Guide*
*.
You can use the `logging` parameter 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](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html)
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](http://aws.amazon.com/cloudwatch/pricing/).
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 [Allowing users to access your
cluster](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html) and
[Launching Amazon EKS nodes](https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html) in
the *Amazon EKS User Guide*.
"""
@spec create_cluster(map(), create_cluster_request(), list()) ::
{:ok, create_cluster_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_cluster_errors()}
def create_cluster(%Client{} = client, input, options \\ []) do
url_path = "/clusters"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Creates an EKS Anywhere subscription.
When a subscription is created, it is a contract
agreement for the length of the term specified in the request. Licenses that are
used to
validate support are provisioned in Amazon Web Services License Manager and the
caller account is
granted access to EKS Anywhere Curated Packages.
"""
@spec create_eks_anywhere_subscription(
map(),
create_eks_anywhere_subscription_request(),
list()
) ::
{:ok, create_eks_anywhere_subscription_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_eks_anywhere_subscription_errors()}
def create_eks_anywhere_subscription(%Client{} = client, input, options \\ []) do
url_path = "/eks-anywhere-subscriptions"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (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](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html)
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](https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html)
in the *Amazon EKS User Guide*.
"""
@spec create_fargate_profile(
map(),
String.t() | atom(),
create_fargate_profile_request(),
list()
) ::
{:ok, create_fargate_profile_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_fargate_profile_errors()}
def create_fargate_profile(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/fargate-profiles"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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 later updates, you will only be able to update a node group using a launch
template only if it was originally deployed with a launch template.
Additionally, the
launch template ID or name must match what was used when the node group was
created. You
can update the launch template version with necessary changes. For more
information
about using launch templates, see [Customizing managed nodes with launch
templates](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html).
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](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)
in the *Amazon EKS User Guide*.
Windows AMI types are only supported for commercial Amazon Web Services Regions
that support
Windows on Amazon EKS.
"""
@spec create_nodegroup(map(), String.t() | atom(), create_nodegroup_request(), list()) ::
{:ok, create_nodegroup_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_nodegroup_errors()}
def create_nodegroup(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Creates an EKS Pod Identity association between a service account in an Amazon
EKS cluster and an IAM role
with *EKS Pod Identity*.
Use EKS Pod Identity to give temporary IAM credentials to
Pods and the credentials are rotated automatically.
Amazon EKS Pod Identity associations provide the ability to manage credentials
for your applications, similar to the way that Amazon EC2 instance profiles
provide credentials to Amazon EC2 instances.
If a Pod uses a service account that has an association, Amazon EKS sets
environment variables
in the containers of the Pod. The environment variables configure the Amazon Web
Services SDKs,
including the Command Line Interface, to use the EKS Pod Identity credentials.
EKS Pod Identity is a simpler method than *IAM roles for service
accounts*, as this method doesn't use OIDC identity providers.
Additionally, you can configure a role for EKS Pod Identity once, and reuse it
across
clusters.
Similar to Amazon Web Services IAM behavior, EKS Pod Identity associations are
eventually consistent,
and may take several seconds to be effective after the initial API call returns
successfully. You must design your applications to account for these potential
delays.
We recommend that you don’t include association create/updates in the
critical, high-availability code paths of your application. Instead, make
changes in a
separate initialization or setup routine that you run less frequently.
You can set a *target IAM role* in the same or a different
account for advanced scenarios. With a target role, EKS Pod Identity
automatically performs two
role assumptions in sequence: first assuming the role in the association that is
in this
account, then using those credentials to assume the target IAM role. This
process
provides your Pod with temporary credentials that have the permissions defined
in the
target role, allowing secure access to resources in another Amazon Web Services
account.
"""
@spec create_pod_identity_association(
map(),
String.t() | atom(),
create_pod_identity_association_request(),
list()
) ::
{:ok, create_pod_identity_association_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_pod_identity_association_errors()}
def create_pod_identity_association(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/pod-identity-associations"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes an access entry.
Deleting an access entry of a type other than `Standard` can cause your
cluster to function improperly. If you delete an access entry in error, you can
recreate
it.
"""
@spec delete_access_entry(
map(),
String.t() | atom(),
String.t() | atom(),
delete_access_entry_request(),
list()
) ::
{:ok, delete_access_entry_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_access_entry_errors()}
def delete_access_entry(%Client{} = client, cluster_name, principal_arn, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes an Amazon EKS add-on.
When you remove an add-on, it's deleted from the cluster. You can always
manually
start an add-on on the cluster using the Kubernetes API.
"""
@spec delete_addon(
map(),
String.t() | atom(),
String.t() | atom(),
delete_addon_request(),
list()
) ::
{:ok, delete_addon_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_addon_errors()}
def delete_addon(%Client{} = client, addon_name, cluster_name, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/addons/#{AWS.Util.encode_uri(addon_name)}"
headers = []
custom_headers = []
{query_params, input} =
[
{"preserve", "preserve"}
]
|> Request.build_params(input)
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes an 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](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html)
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 `DeleteNodgroup` and
`DeleteFargateProfile`.
"""
@spec delete_cluster(map(), String.t() | atom(), delete_cluster_request(), list()) ::
{:ok, delete_cluster_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_cluster_errors()}
def delete_cluster(%Client{} = client, name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes an expired or inactive subscription.
Deleting inactive subscriptions removes
them from the Amazon Web Services Management Console view and from list/describe
API responses. Subscriptions can
only be cancelled within 7 days of creation and are cancelled by creating a
ticket in
the Amazon Web Services Support Center.
"""
@spec delete_eks_anywhere_subscription(
map(),
String.t() | atom(),
delete_eks_anywhere_subscription_request(),
list()
) ::
{:ok, delete_eks_anywhere_subscription_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_eks_anywhere_subscription_errors()}
def delete_eks_anywhere_subscription(%Client{} = client, id, input, options \\ []) do
url_path = "/eks-anywhere-subscriptions/#{AWS.Util.encode_uri(id)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes an Fargate profile.
When you delete a Fargate profile, any `Pod` running on Fargate that
was created with the profile is deleted. If the `Pod` matches another
Fargate profile, then it is scheduled on Fargate with that profile. If it no
longer
matches any Fargate profiles, then it's not scheduled on Fargate and 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.
"""
@spec delete_fargate_profile(
map(),
String.t() | atom(),
String.t() | atom(),
delete_fargate_profile_request(),
list()
) ::
{:ok, delete_fargate_profile_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_fargate_profile_errors()}
def delete_fargate_profile(
%Client{} = client,
cluster_name,
fargate_profile_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/fargate-profiles/#{AWS.Util.encode_uri(fargate_profile_name)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes a managed node group.
"""
@spec delete_nodegroup(
map(),
String.t() | atom(),
String.t() | atom(),
delete_nodegroup_request(),
list()
) ::
{:ok, delete_nodegroup_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_nodegroup_errors()}
def delete_nodegroup(%Client{} = client, cluster_name, nodegroup_name, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups/#{AWS.Util.encode_uri(nodegroup_name)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes a EKS Pod Identity association.
The temporary Amazon Web Services credentials from the previous IAM role session
might still be valid until the session expiry. If you need to immediately revoke
the temporary session credentials, then go to the role in the IAM console.
"""
@spec delete_pod_identity_association(
map(),
String.t() | atom(),
String.t() | atom(),
delete_pod_identity_association_request(),
list()
) ::
{:ok, delete_pod_identity_association_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_pod_identity_association_errors()}
def delete_pod_identity_association(
%Client{} = client,
association_id,
cluster_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/pod-identity-associations/#{AWS.Util.encode_uri(association_id)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deregisters a connected cluster to remove it from the Amazon EKS control plane.
A connected cluster is a Kubernetes cluster that you've connected to your
control plane
using the [Amazon EKS Connector](https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html).
"""
@spec deregister_cluster(map(), String.t() | atom(), deregister_cluster_request(), list()) ::
{:ok, deregister_cluster_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, deregister_cluster_errors()}
def deregister_cluster(%Client{} = client, name, input, options \\ []) do
url_path = "/cluster-registrations/#{AWS.Util.encode_uri(name)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Describes an access entry.
"""
@spec describe_access_entry(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_access_entry_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_access_entry_errors()}
def describe_access_entry(%Client{} = client, cluster_name, principal_arn, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes an Amazon EKS add-on.
"""
@spec describe_addon(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_addon_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_addon_errors()}
def describe_addon(%Client{} = client, addon_name, cluster_name, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/addons/#{AWS.Util.encode_uri(addon_name)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Returns configuration options.
"""
@spec describe_addon_configuration(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_addon_configuration_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_addon_configuration_errors()}
def describe_addon_configuration(%Client{} = client, addon_name, addon_version, options \\ []) do
url_path = "/addons/configuration-schemas"
headers = []
query_params = []
query_params =
if !is_nil(addon_version) do
[{"addonVersion", addon_version} | query_params]
else
query_params
end
query_params =
if !is_nil(addon_name) do
[{"addonName", addon_name} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
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.
"""
@spec describe_addon_versions(
map(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, describe_addon_versions_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_addon_versions_errors()}
def describe_addon_versions(
%Client{} = client,
addon_name \\ nil,
kubernetes_version \\ nil,
max_results \\ nil,
next_token \\ nil,
owners \\ nil,
publishers \\ nil,
types \\ nil,
options \\ []
) do
url_path = "/addons/supported-versions"
headers = []
query_params = []
query_params =
if !is_nil(types) do
[{"types", types} | query_params]
else
query_params
end
query_params =
if !is_nil(publishers) do
[{"publishers", publishers} | query_params]
else
query_params
end
query_params =
if !is_nil(owners) do
[{"owners", owners} | query_params]
else
query_params
end
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(kubernetes_version) do
[{"kubernetesVersion", kubernetes_version} | query_params]
else
query_params
end
query_params =
if !is_nil(addon_name) do
[{"addonName", addon_name} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes 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 [Creating or updating a `kubeconfig` file for an Amazon EKS
cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html).
The API server endpoint and certificate authority data aren't available until
the
cluster reaches the `ACTIVE` state.
"""
@spec describe_cluster(map(), String.t() | atom(), list()) ::
{:ok, describe_cluster_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_cluster_errors()}
def describe_cluster(%Client{} = client, name, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists available Kubernetes versions for Amazon EKS clusters.
"""
@spec describe_cluster_versions(
map(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, describe_cluster_versions_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_cluster_versions_errors()}
def describe_cluster_versions(
%Client{} = client,
cluster_type \\ nil,
cluster_versions \\ nil,
default_only \\ nil,
include_all \\ nil,
max_results \\ nil,
next_token \\ nil,
status \\ nil,
version_status \\ nil,
options \\ []
) do
url_path = "/cluster-versions"
headers = []
query_params = []
query_params =
if !is_nil(version_status) do
[{"versionStatus", version_status} | query_params]
else
query_params
end
query_params =
if !is_nil(status) do
[{"status", status} | query_params]
else
query_params
end
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(include_all) do
[{"includeAll", include_all} | query_params]
else
query_params
end
query_params =
if !is_nil(default_only) do
[{"defaultOnly", default_only} | query_params]
else
query_params
end
query_params =
if !is_nil(cluster_versions) do
[{"clusterVersions", cluster_versions} | query_params]
else
query_params
end
query_params =
if !is_nil(cluster_type) do
[{"clusterType", cluster_type} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Returns descriptive information about a subscription.
"""
@spec describe_eks_anywhere_subscription(map(), String.t() | atom(), list()) ::
{:ok, describe_eks_anywhere_subscription_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_eks_anywhere_subscription_errors()}
def describe_eks_anywhere_subscription(%Client{} = client, id, options \\ []) do
url_path = "/eks-anywhere-subscriptions/#{AWS.Util.encode_uri(id)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes an Fargate profile.
"""
@spec describe_fargate_profile(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_fargate_profile_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_fargate_profile_errors()}
def describe_fargate_profile(
%Client{} = client,
cluster_name,
fargate_profile_name,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/fargate-profiles/#{AWS.Util.encode_uri(fargate_profile_name)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes an identity provider configuration.
"""
@spec describe_identity_provider_config(
map(),
String.t() | atom(),
describe_identity_provider_config_request(),
list()
) ::
{:ok, describe_identity_provider_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_identity_provider_config_errors()}
def describe_identity_provider_config(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/identity-provider-configs/describe"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Returns details about an insight that you specify using its ID.
"""
@spec describe_insight(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_insight_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_insight_errors()}
def describe_insight(%Client{} = client, cluster_name, id, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/insights/#{AWS.Util.encode_uri(id)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Returns the status of the latest on-demand cluster insights refresh operation.
"""
@spec describe_insights_refresh(map(), String.t() | atom(), list()) ::
{:ok, describe_insights_refresh_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_insights_refresh_errors()}
def describe_insights_refresh(%Client{} = client, cluster_name, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/insights-refresh"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes a managed node group.
"""
@spec describe_nodegroup(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_nodegroup_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_nodegroup_errors()}
def describe_nodegroup(%Client{} = client, cluster_name, nodegroup_name, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups/#{AWS.Util.encode_uri(nodegroup_name)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Returns descriptive information about an EKS Pod Identity association.
This action requires the ID of the association. You can get the ID from the
response to
the `CreatePodIdentityAssocation` for newly created associations. Or, you can
list the IDs for associations with `ListPodIdentityAssociations` and filter the
list by namespace or service account.
"""
@spec describe_pod_identity_association(map(), String.t() | atom(), String.t() | atom(), list()) ::
{:ok, describe_pod_identity_association_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_pod_identity_association_errors()}
def describe_pod_identity_association(
%Client{} = client,
association_id,
cluster_name,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/pod-identity-associations/#{AWS.Util.encode_uri(association_id)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Describes an update to an Amazon EKS resource.
When the status of the update is `Successful`, the update is complete. If
an update fails, the status is `Failed`, and an error detail explains the
reason for the failure.
"""
@spec describe_update(
map(),
String.t() | atom(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, describe_update_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_update_errors()}
def describe_update(
%Client{} = client,
name,
update_id,
addon_name \\ nil,
nodegroup_name \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}/updates/#{AWS.Util.encode_uri(update_id)}"
headers = []
query_params = []
query_params =
if !is_nil(nodegroup_name) do
[{"nodegroupName", nodegroup_name} | query_params]
else
query_params
end
query_params =
if !is_nil(addon_name) do
[{"addonName", addon_name} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Disassociates an access policy from an access entry.
"""
@spec disassociate_access_policy(
map(),
String.t() | atom(),
String.t() | atom(),
String.t() | atom(),
disassociate_access_policy_request(),
list()
) ::
{:ok, disassociate_access_policy_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, disassociate_access_policy_errors()}
def disassociate_access_policy(
%Client{} = client,
cluster_name,
policy_arn,
principal_arn,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}/access-policies/#{AWS.Util.encode_uri(policy_arn)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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 IAM principals.
"""
@spec disassociate_identity_provider_config(
map(),
String.t() | atom(),
disassociate_identity_provider_config_request(),
list()
) ::
{:ok, disassociate_identity_provider_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, disassociate_identity_provider_config_errors()}
def disassociate_identity_provider_config(
%Client{} = client,
cluster_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/identity-provider-configs/disassociate"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Lists the access entries for your cluster.
"""
@spec list_access_entries(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_access_entries_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_access_entries_errors()}
def list_access_entries(
%Client{} = client,
cluster_name,
associated_policy_arn \\ nil,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(associated_policy_arn) do
[{"associatedPolicyArn", associated_policy_arn} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the available access policies.
"""
@spec list_access_policies(map(), String.t() | atom() | nil, String.t() | atom() | nil, list()) ::
{:ok, list_access_policies_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_access_policies_errors()}
def list_access_policies(
%Client{} = client,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/access-policies"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the installed add-ons.
"""
@spec list_addons(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_addons_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_addons_errors()}
def list_addons(
%Client{} = client,
cluster_name,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/addons"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the access policies associated with an access entry.
"""
@spec list_associated_access_policies(
map(),
String.t() | atom(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_associated_access_policies_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_associated_access_policies_errors()}
def list_associated_access_policies(
%Client{} = client,
cluster_name,
principal_arn,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}/access-policies"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the Amazon EKS clusters in your Amazon Web Services account in the
specified Amazon Web Services Region.
"""
@spec list_clusters(
map(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_clusters_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_clusters_errors()}
def list_clusters(
%Client{} = client,
include \\ nil,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(include) do
[{"include", include} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Displays the full description of the subscription.
"""
@spec list_eks_anywhere_subscriptions(
map(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_eks_anywhere_subscriptions_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_eks_anywhere_subscriptions_errors()}
def list_eks_anywhere_subscriptions(
%Client{} = client,
include_status \\ nil,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/eks-anywhere-subscriptions"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(include_status) do
[{"includeStatus", include_status} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the Fargate profiles associated with the specified cluster in your Amazon
Web Services
account in the specified Amazon Web Services Region.
"""
@spec list_fargate_profiles(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_fargate_profiles_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_fargate_profiles_errors()}
def list_fargate_profiles(
%Client{} = client,
cluster_name,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/fargate-profiles"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the identity provider configurations for your cluster.
"""
@spec list_identity_provider_configs(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_identity_provider_configs_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_identity_provider_configs_errors()}
def list_identity_provider_configs(
%Client{} = client,
cluster_name,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/identity-provider-configs"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Returns a list of all insights checked for against the specified cluster.
You can
filter which insights are returned by category, associated Kubernetes version,
and
status. The default filter lists all categories and every status.
The following lists the available categories:
*
`UPGRADE_READINESS`: Amazon EKS identifies issues that could impact your
ability to upgrade to new versions of Kubernetes. These are called upgrade
insights.
*
`MISCONFIGURATION`: Amazon EKS identifies misconfiguration in your EKS
Hybrid Nodes setup that could impair functionality of your cluster or
workloads. These are called configuration insights.
"""
@spec list_insights(map(), String.t() | atom(), list_insights_request(), list()) ::
{:ok, list_insights_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_insights_errors()}
def list_insights(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/insights"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Lists the managed node groups associated with the specified cluster in your
Amazon Web Services
account in the specified Amazon Web Services Region.
Self-managed node groups aren't listed.
"""
@spec list_nodegroups(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_nodegroups_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_nodegroups_errors()}
def list_nodegroups(
%Client{} = client,
cluster_name,
max_results \\ nil,
next_token \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups"
headers = []
query_params = []
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
List the EKS Pod Identity associations in a cluster.
You can filter the list by the namespace that the
association is in or the service account that the association uses.
"""
@spec list_pod_identity_associations(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_pod_identity_associations_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_pod_identity_associations_errors()}
def list_pod_identity_associations(
%Client{} = client,
cluster_name,
max_results \\ nil,
namespace \\ nil,
next_token \\ nil,
service_account \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/pod-identity-associations"
headers = []
query_params = []
query_params =
if !is_nil(service_account) do
[{"serviceAccount", service_account} | query_params]
else
query_params
end
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(namespace) do
[{"namespace", namespace} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
List the tags for an Amazon EKS resource.
"""
@spec list_tags_for_resource(map(), String.t() | atom(), list()) ::
{:ok, list_tags_for_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_tags_for_resource_errors()}
def list_tags_for_resource(%Client{} = client, resource_arn, options \\ []) do
url_path = "/tags/#{AWS.Util.encode_uri(resource_arn)}"
headers = []
query_params = []
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Lists the updates associated with an Amazon EKS resource in your Amazon Web
Services account, in the
specified Amazon Web Services Region.
"""
@spec list_updates(
map(),
String.t() | atom(),
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
String.t() | atom() | nil,
list()
) ::
{:ok, list_updates_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_updates_errors()}
def list_updates(
%Client{} = client,
name,
addon_name \\ nil,
max_results \\ nil,
next_token \\ nil,
nodegroup_name \\ nil,
options \\ []
) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}/updates"
headers = []
query_params = []
query_params =
if !is_nil(nodegroup_name) do
[{"nodegroupName", nodegroup_name} | query_params]
else
query_params
end
query_params =
if !is_nil(next_token) do
[{"nextToken", next_token} | query_params]
else
query_params
end
query_params =
if !is_nil(max_results) do
[{"maxResults", max_results} | query_params]
else
query_params
end
query_params =
if !is_nil(addon_name) do
[{"addonName", addon_name} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
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`
](https://docs.aws.amazon.com/eks/latest/APIReference/API_RegisterClusterRequest.html)
to add it to the Amazon EKS control
plane.
Second, a
[Manifest](https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml)
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, the connected cluster is visible to
the
Amazon EKS control plane. If the manifest isn't applied within three days, the
connected
cluster will no longer be visible and must be deregistered using
`DeregisterCluster`.
"""
@spec register_cluster(map(), register_cluster_request(), list()) ::
{:ok, register_cluster_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, register_cluster_errors()}
def register_cluster(%Client{} = client, input, options \\ []) do
url_path = "/cluster-registrations"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Initiates an on-demand refresh operation for cluster insights, getting the
latest analysis outside of the standard refresh schedule.
"""
@spec start_insights_refresh(
map(),
String.t() | atom(),
start_insights_refresh_request(),
list()
) ::
{:ok, start_insights_refresh_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, start_insights_refresh_errors()}
def start_insights_refresh(%Client{} = client, cluster_name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(cluster_name)}/insights-refresh"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Associates the specified tags to an Amazon EKS resource with the specified
`resourceArn`.
If existing tags on a resource are not specified in the
request parameters, they aren't changed. When a resource is deleted, the tags
associated
with that resource are also deleted. Tags that you create for Amazon EKS
resources don't
propagate to any other resources associated with the cluster. For example, if
you tag a
cluster with this operation, that tag doesn't automatically propagate to the
subnets and
nodes associated with the cluster.
"""
@spec tag_resource(map(), String.t() | atom(), tag_resource_request(), list()) ::
{:ok, tag_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, tag_resource_errors()}
def tag_resource(%Client{} = client, resource_arn, input, options \\ []) do
url_path = "/tags/#{AWS.Util.encode_uri(resource_arn)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes specified tags from an Amazon EKS resource.
"""
@spec untag_resource(map(), String.t() | atom(), untag_resource_request(), list()) ::
{:ok, untag_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, untag_resource_errors()}
def untag_resource(%Client{} = client, resource_arn, input, options \\ []) do
url_path = "/tags/#{AWS.Util.encode_uri(resource_arn)}"
headers = []
custom_headers = []
{query_params, input} =
[
{"tagKeys", "tagKeys"}
]
|> Request.build_params(input)
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Updates an access entry.
"""
@spec update_access_entry(
map(),
String.t() | atom(),
String.t() | atom(),
update_access_entry_request(),
list()
) ::
{:ok, update_access_entry_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_access_entry_errors()}
def update_access_entry(%Client{} = client, cluster_name, principal_arn, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/access-entries/#{AWS.Util.encode_uri(principal_arn)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Updates an Amazon EKS add-on.
"""
@spec update_addon(
map(),
String.t() | atom(),
String.t() | atom(),
update_addon_request(),
list()
) ::
{:ok, update_addon_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_addon_errors()}
def update_addon(%Client{} = client, addon_name, cluster_name, input, options \\ []) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/addons/#{AWS.Util.encode_uri(addon_name)}/update"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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 `DescribeUpdate`.
You can use this operation to do the following actions:
*
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](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html)
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](http://aws.amazon.com/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 [
Cluster API server
endpoint](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)
in the
*
*Amazon EKS User Guide*
*.
*
You can also use this API operation to choose different subnets and security
groups for the cluster. You must specify at least two subnets that are in
different Availability Zones. You can't change which VPC the subnets are from,
the subnets
must be in the same VPC as the subnets that the cluster was created with. For
more information about the VPC requirements, see
[https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the
*
*Amazon EKS User Guide*
*.
*
You can also use this API operation to enable or disable ARC zonal shift. If
zonal shift is enabled, Amazon Web Services configures zonal autoshift for the
cluster.
*
You can also use this API operation to add, change, or remove the
configuration in the cluster for EKS Hybrid Nodes. To remove the configuration,
use the `remoteNetworkConfig` key with an object containing both
subkeys with empty arrays for each. Here is an inline example:
```
"remoteNetworkConfig": { "remoteNodeNetworks": [],
"remotePodNetworks": [] }
```
.
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`.
"""
@spec update_cluster_config(map(), String.t() | atom(), update_cluster_config_request(), list()) ::
{:ok, update_cluster_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_cluster_config_errors()}
def update_cluster_config(%Client{} = client, name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}/update-config"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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`
](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeUpdate.html)
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.
"""
@spec update_cluster_version(
map(),
String.t() | atom(),
update_cluster_version_request(),
list()
) ::
{:ok, update_cluster_version_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_cluster_version_errors()}
def update_cluster_version(%Client{} = client, name, input, options \\ []) do
url_path = "/clusters/#{AWS.Util.encode_uri(name)}/updates"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Update an EKS Anywhere Subscription.
Only auto renewal and tags can be updated after
subscription creation.
"""
@spec update_eks_anywhere_subscription(
map(),
String.t() | atom(),
update_eks_anywhere_subscription_request(),
list()
) ::
{:ok, update_eks_anywhere_subscription_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_eks_anywhere_subscription_errors()}
def update_eks_anywhere_subscription(%Client{} = client, id, input, options \\ []) do
url_path = "/eks-anywhere-subscriptions/#{AWS.Util.encode_uri(id)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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`
](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeUpdate.html)
API operation. You can update the Kubernetes labels
and taints for a node group and the scaling and version update configuration.
"""
@spec update_nodegroup_config(
map(),
String.t() | atom(),
String.t() | atom(),
update_nodegroup_config_request(),
list()
) ::
{:ok, update_nodegroup_config_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_nodegroup_config_errors()}
def update_nodegroup_config(
%Client{} = client,
cluster_name,
nodegroup_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups/#{AWS.Util.encode_uri(nodegroup_name)}/update-config"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
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. Additionally, the launch template ID
or name
must match what was used when the node group was created. You can update the
launch
template version with necessary changes.
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](https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html)
in the
*Amazon EKS User Guide*. For information about Windows versions, see [Amazon EKS optimized Windows AMI
versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html)
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,
every `Pod` on that node is 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.
"""
@spec update_nodegroup_version(
map(),
String.t() | atom(),
String.t() | atom(),
update_nodegroup_version_request(),
list()
) ::
{:ok, update_nodegroup_version_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_nodegroup_version_errors()}
def update_nodegroup_version(
%Client{} = client,
cluster_name,
nodegroup_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/node-groups/#{AWS.Util.encode_uri(nodegroup_name)}/update-version"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Updates a EKS Pod Identity association.
In an update, you can change the IAM role, the target IAM role, or
`disableSessionTags`.
You must change at least one of these in an update. An association can't be
moved
between clusters, namespaces, or service accounts. If you need to edit the
namespace
or service account, you need to delete the association and then create a new
association with your desired settings.
Similar to Amazon Web Services IAM behavior, EKS Pod Identity associations are
eventually consistent,
and may take several seconds to be effective after the initial API call returns
successfully. You must design your applications to account for these potential
delays.
We recommend that you don’t include association create/updates in the
critical, high-availability code paths of your application. Instead, make
changes in a
separate initialization or setup routine that you run less frequently.
You can set a *target IAM role* in the same or a different
account for advanced scenarios. With a target role, EKS Pod Identity
automatically performs two
role assumptions in sequence: first assuming the role in the association that is
in this
account, then using those credentials to assume the target IAM role. This
process
provides your Pod with temporary credentials that have the permissions defined
in the
target role, allowing secure access to resources in another Amazon Web Services
account.
"""
@spec update_pod_identity_association(
map(),
String.t() | atom(),
String.t() | atom(),
update_pod_identity_association_request(),
list()
) ::
{:ok, update_pod_identity_association_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_pod_identity_association_errors()}
def update_pod_identity_association(
%Client{} = client,
association_id,
cluster_name,
input,
options \\ []
) do
url_path =
"/clusters/#{AWS.Util.encode_uri(cluster_name)}/pod-identity-associations/#{AWS.Util.encode_uri(association_id)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
end