Skip to content

update_addon async

update_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,
    configuration_values: Optional[String] = None,
    pod_identity_associations: Optional[AddonPodIdentityAssociationsList] = None,
) -> UpdateAddonResponse

Updates an Amazon EKS add-on.

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 ListAddons .

  • 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 if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:

    • None – Amazon EKS doesn't change the value. The update might fail.

    • Overwrite – Amazon EKS overwrites the changed value back to the Amazon EKS default value.

    • Preserve – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.

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

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

  • 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 updated. Each association maps a Kubernetes service account to an IAM role. If this value is left blank, no change. If an empty array is provided, existing associations owned by the add-on are deleted.

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

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 update_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,
    configuration_values: Optional["capo_eks.types.string.String"] = None,
    pod_identity_associations: Optional[
        "capo_eks.types.addon_pod_identity_associations_list.AddonPodIdentityAssociationsList"
    ] = None,
) -> "capo_eks.types.update_addon_response.UpdateAddonResponse":
    """<p>Updates an Amazon EKS add-on.</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 <a href="https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html"> <code>ListAddons</code> </a>.</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 if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose:</p> <ul> <li> <p> <b>None</b> – Amazon EKS doesn't change the value. The update might fail.</p> </li> <li> <p> <b>Overwrite</b> – Amazon EKS overwrites the changed value back to the Amazon EKS default value.</p> </li> <li> <p> <b>Preserve</b> – Amazon EKS preserves the value. If you choose this option, we recommend that you test any field and value changes on a non-production cluster before updating the add-on on your production cluster.</p> </li> </ul>
        client_request_token: <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</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 updated. Each association maps a Kubernetes service account to an IAM role. If this value is left blank, no change. If an empty array is provided, existing associations owned by the add-on are deleted.</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>

    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.update_addon_request.UpdateAddonRequest]",
    ) -> AsyncOperationResponse[
        "capo_eks.types.update_addon_response.UpdateAddonResponse"
    ]:
        import capo_eks._operations.aws_wesley_frontend.update_addon

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

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("UpdateAddon")
    )
    input_: capo_eks.types.update_addon_request.UpdateAddonRequest = {
        "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 configuration_values is not None:
        input_["configuration_values"] = configuration_values
    if pod_identity_associations is not None:
        input_["pod_identity_associations"] = pod_identity_associations

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