Skip to content

modify_cluster_iam_roles async

modify_cluster_iam_roles(
    *,
    config_overrides: Optional[AsyncRedshiftClientConfig] = None,
    cluster_identifier: Optional[String] = None,
    add_iam_roles: Optional[IamRoleArnList] = None,
    remove_iam_roles: Optional[IamRoleArnList] = None,
    default_iam_role_arn: Optional[String] = None,
) -> ModifyClusterIamRolesResult

Modifies the list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services.

The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to Quotas and limits in the Amazon Redshift Cluster Management Guide.

Parameters:

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

    The unique identifier of the cluster for which you want to associate or disassociate IAM roles.

  • add_iam_roles (Optional[IamRoleArnList], default: None ) –

    Zero or more IAM roles to associate with the cluster. The roles must be in their Amazon Resource Name (ARN) format.

  • remove_iam_roles (Optional[IamRoleArnList], default: None ) –

    Zero or more IAM roles in ARN format to disassociate from the cluster.

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

    The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was last modified.

Raises:

Source code in docs_src/capo_redshift/_services/async_redshift.py
async def modify_cluster_iam_roles(
    self,
    *,
    config_overrides: Optional[AsyncRedshiftClientConfig] = None,
    cluster_identifier: Optional["capo_redshift.types.string.String"] = None,
    add_iam_roles: Optional[
        "capo_redshift.types.iam_role_arn_list.IamRoleArnList"
    ] = None,
    remove_iam_roles: Optional[
        "capo_redshift.types.iam_role_arn_list.IamRoleArnList"
    ] = None,
    default_iam_role_arn: Optional["capo_redshift.types.string.String"] = None,
) -> "capo_redshift.types.modify_cluster_iam_roles_result.ModifyClusterIamRolesResult":
    """<p>Modifies the list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services.</p> <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>

    Args:
        cluster_identifier: <p>The unique identifier of the cluster for which you want to associate or disassociate IAM roles.</p>
        add_iam_roles: <p>Zero or more IAM roles to associate with the cluster. The roles must be in their Amazon Resource Name (ARN) format. </p>
        remove_iam_roles: <p>Zero or more IAM roles in ARN format to disassociate from the cluster. </p>
        default_iam_role_arn: <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was last modified.</p>

    Raises:
        capo_redshift.errors.cluster_not_found_fault.ClusterNotFoundFault: <p>The <code>ClusterIdentifier</code> parameter does not refer to an existing cluster. </p>
        capo_redshift.errors.invalid_cluster_state_fault.InvalidClusterStateFault: <p>The specified cluster is not in the <code>available</code> state. </p>
        capo_redshift.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_redshift.types.modify_cluster_iam_roles_message.ModifyClusterIamRolesMessage]",
    ) -> AsyncOperationResponse[
        "capo_redshift.types.modify_cluster_iam_roles_result.ModifyClusterIamRolesResult"
    ]:
        import capo_redshift._operations.redshift_service_version20121201.modify_cluster_iam_roles

        (
            output,
            http_response,
        ) = await capo_redshift._operations.redshift_service_version20121201.modify_cluster_iam_roles.async_modify_cluster_iam_roles(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    def _redact_output(
        output: "capo_redshift.types.modify_cluster_iam_roles_result.ModifyClusterIamRolesResult",
    ) -> dict[str, Any]:
        import capo_redshift.types.modify_cluster_iam_roles_result

        return capo_redshift.types.modify_cluster_iam_roles_result.redact_sensitive(
            output
        )

    interceptors_, options_ = self.operation_options(
        config_overrides,
        OperationLogging("ModifyClusterIamRoles", redact_output=_redact_output),
    )
    input_: capo_redshift.types.modify_cluster_iam_roles_message.ModifyClusterIamRolesMessage = {}
    if cluster_identifier is not None:
        input_["cluster_identifier"] = cluster_identifier
    if add_iam_roles is not None:
        input_["add_iam_roles"] = add_iam_roles
    if remove_iam_roles is not None:
        input_["remove_iam_roles"] = remove_iam_roles
    if default_iam_role_arn is not None:
        input_["default_iam_role_arn"] = default_iam_role_arn

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