Skip to content

delete_job_execution

delete_job_execution(
    job_id: JobId,
    thing_name: ThingName,
    execution_number: ExecutionNumber,
    *,
    config_overrides: Optional[IoTClientConfig] = None,
    force: Optional[ForceFlag] = None,
    namespace_id: Optional[NamespaceId] = None,
) -> None

Deletes a job execution.

Requires permission to access the DeleteJobExecution action.

Parameters:

  • job_id (JobId) –

    The ID of the job whose execution on a particular device will be deleted.

  • thing_name (ThingName) –

    The name of the thing whose job execution will be deleted.

  • execution_number (ExecutionNumber) –

    The ID of the job execution to be deleted. The executionNumber refers to the execution of a particular job on a particular device.

    Note that once a job execution is deleted, the executionNumber may be reused by IoT, so be sure you get and use the correct value here.

  • force (Optional[ForceFlag], default: None ) –

    (Optional) When true, you can delete a job execution which is "IN_PROGRESS". Otherwise, you can only delete a job execution which is in a terminal state ("SUCCEEDED", "FAILED", "REJECTED", "REMOVED" or "CANCELED") or an exception will occur. The default is false.

    Deleting a job execution which is "IN_PROGRESS", will cause the device to be unable to access job information or update the job execution status. Use caution and ensure that the device is able to recover to a valid state.

  • namespace_id (Optional[NamespaceId], default: None ) –

    The namespace used to indicate that a job is a customer-managed job.

    When you specify a value for this parameter, Amazon Web Services IoT Core sends jobs notifications to MQTT topics that contain the value in the following format.

    $aws/things/THING_NAME/jobs/JOB_ID/notify-namespace-NAMESPACE_ID/

    The namespaceId feature is only supported by IoT Greengrass at this time. For more information, see Setting up IoT Greengrass core devices.

Raises:

Source code in docs_src/capo_iot/_services/io_t.py
def delete_job_execution(
    self,
    job_id: "capo_iot.types.job_id.JobId",
    thing_name: "capo_iot.types.thing_name.ThingName",
    execution_number: "capo_iot.types.execution_number.ExecutionNumber",
    *,
    config_overrides: Optional[IoTClientConfig] = None,
    force: Optional["capo_iot.types.force_flag.ForceFlag"] = None,
    namespace_id: Optional["capo_iot.types.namespace_id.NamespaceId"] = None,
) -> None:
    """<p>Deletes a job execution.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">DeleteJobExecution</a> action.</p>

    Args:
        job_id: <p>The ID of the job whose execution on a particular device will be deleted.</p>
        thing_name: <p>The name of the thing whose job execution will be deleted.</p>
        execution_number: <p>The ID of the job execution to be deleted. The <code>executionNumber</code> refers to the execution of a particular job on a particular device.</p> <p>Note that once a job execution is deleted, the <code>executionNumber</code> may be reused by IoT, so be sure you get and use the correct value here.</p>
        force: <p>(Optional) When true, you can delete a job execution which is "IN_PROGRESS". Otherwise, you can only delete a job execution which is in a terminal state ("SUCCEEDED", "FAILED", "REJECTED", "REMOVED" or "CANCELED") or an exception will occur. The default is false.</p> <note> <p>Deleting a job execution which is "IN_PROGRESS", will cause the device to be unable to access job information or update the job execution status. Use caution and ensure that the device is able to recover to a valid state.</p> </note>
        namespace_id: <p>The namespace used to indicate that a job is a customer-managed job.</p> <p>When you specify a value for this parameter, Amazon Web Services IoT Core sends jobs notifications to MQTT topics that contain the value in the following format.</p> <p> <code>$aws/things/<i>THING_NAME</i>/jobs/<i>JOB_ID</i>/notify-namespace-<i>NAMESPACE_ID</i>/</code> </p> <note> <p>The <code>namespaceId</code> feature is only supported by IoT Greengrass at this time. For more information, see <a href="https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html">Setting up IoT Greengrass core devices.</a> </p> </note>

    Raises:
        capo_iot.errors.invalid_request_exception.InvalidRequestException: <p>The request is not valid.</p>
        capo_iot.errors.invalid_state_transition_exception.InvalidStateTransitionException: <p>An attempt was made to change to an invalid state, for example by deleting a job or a job execution which is "IN_PROGRESS" without setting the <code>force</code> parameter.</p>
        capo_iot.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource does not exist.</p>
        capo_iot.errors.service_unavailable_exception.ServiceUnavailableException: <p>The service is temporarily unavailable.</p>
        capo_iot.errors.throttling_exception.ThrottlingException: <p>The rate exceeds the limit.</p>
        capo_iot.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    def _handler(
        req: "OperationRequest[capo_iot.types.delete_job_execution_request.DeleteJobExecutionRequest]",
    ) -> OperationResponse[None]:
        import capo_iot._operations.aws_iot_service.delete_job_execution

        output, http_response = (
            capo_iot._operations.aws_iot_service.delete_job_execution.delete_job_execution(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("DeleteJobExecution")
    )
    input_: capo_iot.types.delete_job_execution_request.DeleteJobExecutionRequest = {
        "job_id": job_id,
        "thing_name": thing_name,
        "execution_number": execution_number,
    }
    if force is not None:
        input_["force"] = force
    if namespace_id is not None:
        input_["namespace_id"] = namespace_id

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output