Skip to content

create_addon async

create_addon(
    cluster_name: ClusterName,
    addon_name: String,
    *,
    config_overrides: Optional[AsyncEKSClientConfig] = None,
    addon_version: Optional[String] = None,
    service_account_role_arn: Optional[RoleArn] = None,
    resolve_conflicts: Optional[ResolveConflicts] = None,
    client_request_token: Optional[String] = None,
    tags: Optional[TagMap] = None,
    configuration_values: Optional[String] = None,
    pod_identity_associations: Optional[AddonPodIdentityAssociationsList] = None,
    namespace_config: Optional[AddonNamespaceConfigRequest] = None,
) -> CreateAddonResponse

Creates an Amazon EKS add-on.

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

Parameters:

  • cluster_name (ClusterName) –

    The name of your cluster.

  • addon_name (String) –

    The name of the add-on. The name must match one of the names returned by DescribeAddonVersions.

  • addon_version (Optional[String], default: None ) –

    The version of the add-on. The version must match one of the versions returned by DescribeAddonVersions .

  • service_account_role_arn (Optional[RoleArn], default: None ) –

    The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see Amazon EKS node IAM role in the Amazon EKS User Guide.

    To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see Enabling IAM roles for service accounts on your cluster in the Amazon EKS User Guide.

  • resolve_conflicts (Optional[ResolveConflicts], default: None ) –

    How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose:

    • None – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail.

    • Overwrite – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value.

    • Preserve – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see UpdateAddon .

    If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.

  • client_request_token (Optional[String], default: None ) –

    A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

  • tags (Optional[TagMap], default: None ) –

    Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.

  • configuration_values (Optional[String], default: None ) –

    The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by DescribeAddonConfiguration.

  • pod_identity_associations (Optional[AddonPodIdentityAssociationsList], default: None ) –

    An array of EKS Pod Identity associations to be created. Each association maps a Kubernetes service account to an IAM role.

    For more information, see Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity in the Amazon EKS User Guide.

  • namespace_config (Optional[AddonNamespaceConfigRequest], default: None ) –

    The namespace configuration for the addon. If specified, this will override the default namespace for the addon.

Raises:

  • ClientException –

    These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an IAM principal that doesn't have permissions to use the action or resource or specifying an identifier that is not valid.

  • InvalidParameterException –

    The specified parameter is invalid. Review the available parameters for the API request.

  • InvalidRequestException –

    The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations.

  • ResourceInUseException –

    The specified resource is in use.

  • ResourceNotFoundException –

    The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific.

  • ServerException –

    These errors are usually caused by a server-side issue.

  • UnknownServiceError –

    The service returned an error code this client does not model.

Source code in docs_src/capo_eks/_services/async_eks.py
async def create_addon(
    self,
    cluster_name: "capo_eks.types.cluster_name.ClusterName",
    addon_name: "capo_eks.types.string.String",
    *,
    config_overrides: Optional[AsyncEKSClientConfig] = None,
    addon_version: Optional["capo_eks.types.string.String"] = None,
    service_account_role_arn: Optional["capo_eks.types.role_arn.RoleArn"] = None,
    resolve_conflicts: Optional[
        "capo_eks.types.resolve_conflicts.ResolveConflicts"
    ] = None,
    client_request_token: Optional["capo_eks.types.string.String"] = None,
    tags: Optional["capo_eks.types.tag_map.TagMap"] = None,
    configuration_values: Optional["capo_eks.types.string.String"] = None,
    pod_identity_associations: Optional[
        "capo_eks.types.addon_pod_identity_associations_list.AddonPodIdentityAssociationsList"
    ] = None,
    namespace_config: Optional[
        "capo_eks.types.addon_namespace_config_request.AddonNamespaceConfigRequest"
    ] = None,
) -> "capo_eks.types.create_addon_response.CreateAddonResponse":
    """<p>Creates an Amazon EKS add-on.</p> <p>Amazon EKS add-ons help to automate the provisioning and lifecycle management of common operational software for Amazon EKS clusters. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html">Amazon EKS add-ons</a> in the <i>Amazon EKS User Guide</i>.</p>

    Args:
        cluster_name: <p>The name of your cluster.</p>
        addon_name: <p>The name of the add-on. The name must match one of the names returned by <code>DescribeAddonVersions</code>.</p>
        addon_version: <p>The version of the add-on. The version must match one of the versions returned by <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html"> <code>DescribeAddonVersions</code> </a>.</p>
        service_account_role_arn: <p>The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html">Amazon EKS node IAM role</a> in the <i>Amazon EKS User Guide</i>.</p> <note> <p>To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html">Enabling IAM roles for service accounts on your cluster</a> in the <i>Amazon EKS User Guide</i>.</p> </note>
        resolve_conflicts: <p>How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose:</p> <ul> <li> <p> <b>None</b> – If the self-managed version of the add-on is installed on your cluster, Amazon EKS doesn't change the value. Creation of the add-on might fail.</p> </li> <li> <p> <b>Overwrite</b> – If the self-managed version of the add-on is installed on your cluster and the Amazon EKS default value is different than the existing value, Amazon EKS changes the value to the Amazon EKS default value.</p> </li> <li> <p> <b>Preserve</b> – This is similar to the NONE option. If the self-managed version of the add-on is installed on your cluster Amazon EKS doesn't change the add-on resource properties. Creation of the add-on might fail if conflicts are detected. This option works differently during the update operation. For more information, see <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html"> <code>UpdateAddon</code> </a>.</p> </li> </ul> <p>If you don't currently have the self-managed version of the add-on installed on your cluster, the Amazon EKS add-on is installed. Amazon EKS sets all values to default values, regardless of the option that you specify.</p>
        client_request_token: <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>
        tags: <p>Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources.</p>
        configuration_values: <p>The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by <code>DescribeAddonConfiguration</code>.</p>
        pod_identity_associations: <p>An array of EKS Pod Identity associations to be created. Each association maps a Kubernetes service account to an IAM role.</p> <p>For more information, see <a href="https://docs.aws.amazon.com/eks/latest/userguide/add-ons-iam.html">Attach an IAM Role to an Amazon EKS add-on using EKS Pod Identity</a> in the <i>Amazon EKS User Guide</i>.</p>
        namespace_config: <p>The namespace configuration for the addon. If specified, this will override the default namespace for the addon.</p>

    Raises:
        capo_eks.errors.client_exception.ClientException: <p>These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html">IAM principal</a> that doesn't have permissions to use the action or resource or specifying an identifier that is not valid.</p>
        capo_eks.errors.invalid_parameter_exception.InvalidParameterException: <p>The specified parameter is invalid. Review the available parameters for the API request.</p>
        capo_eks.errors.invalid_request_exception.InvalidRequestException: <p>The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations.</p>
        capo_eks.errors.resource_in_use_exception.ResourceInUseException: <p>The specified resource is in use.</p>
        capo_eks.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource could not be found. You can view your available clusters with <code>ListClusters</code>. You can view your available managed node groups with <code>ListNodegroups</code>. Amazon EKS clusters and node groups are Amazon Web Services Region specific.</p>
        capo_eks.errors.server_exception.ServerException: <p>These errors are usually caused by a server-side issue.</p>
        capo_eks.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_eks.types.create_addon_request.CreateAddonRequest]",
    ) -> AsyncOperationResponse[
        "capo_eks.types.create_addon_response.CreateAddonResponse"
    ]:
        import capo_eks._operations.aws_wesley_frontend.create_addon

        (
            output,
            http_response,
        ) = await capo_eks._operations.aws_wesley_frontend.create_addon.async_create_addon(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("CreateAddon")
    )
    input_: capo_eks.types.create_addon_request.CreateAddonRequest = {
        "cluster_name": cluster_name,
        "addon_name": addon_name,
    }
    if addon_version is not None:
        input_["addon_version"] = addon_version
    if service_account_role_arn is not None:
        input_["service_account_role_arn"] = service_account_role_arn
    if resolve_conflicts is not None:
        input_["resolve_conflicts"] = resolve_conflicts
    if client_request_token is None:
        client_request_token = str(uuid.uuid4())
    input_["client_request_token"] = client_request_token
    if tags is not None:
        input_["tags"] = tags
    if configuration_values is not None:
        input_["configuration_values"] = configuration_values
    if pod_identity_associations is not None:
        input_["pod_identity_associations"] = pod_identity_associations
    if namespace_config is not None:
        input_["namespace_config"] = namespace_config

    response = await aexecute_pipeline(
        AsyncOperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    await response.response.aclose()
    return response.output