AWS Batch

2026/09/11 - AWS Batch - 3 new2 updated api methods

Changes  Added new bulk job APIs (CancelJobs, TerminateJobs, TerminateServiceJobs) and new fields on ListJobs and ListServiceJobs responses. This allows customers to cancel or terminate multiple jobs in a single request. ListJobs and ListServiceJobs responses now include isCancelled and isTerminated fields.

TerminateJobs (new) Link ¶

Terminates up to 50 jobs in a job queue. This is a bulk version of TerminateJob. Jobs that are in the STARTING or RUNNING state are terminated, which causes them to transition to FAILED. Jobs that have not progressed to the STARTING state are cancelled.

Batch reports the result for each job individually in the response. Jobs that were processed successfully are reported in the successful list. Jobs that encountered errors are reported in the errors list. The response returns an HTTP status code of 200 even when some jobs encountered errors, so check the errors list. Jobs that can't be found are treated as successfully processed.

See also: AWS API Documentation

Request Syntax

client.terminate_jobs(
    jobs=[
        'string',
    ],
    reason='string'
)
type jobs:

list

param jobs:

[REQUIRED]

An array of up to 50 Batch job IDs of the jobs to terminate.

  • (string) --

type reason:

string

param reason:

[REQUIRED]

A message to attach to the job that explains the reason for terminating it. This message is returned by future DescribeJobs operations on the job. It is also recorded in the Batch activity logs.

This parameter has a limit of 1024 characters.

rtype:

dict

returns:

Response Syntax

{
    'successful': [
        'string',
    ],
    'errors': [
        {
            'job': 'string',
            'code': 'string',
            'message': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    The result of a TerminateJobs request, including the jobs whose termination request was accepted and the errors for jobs that couldn't be terminated.

    • successful (list) --

      A list of the job IDs whose termination request was accepted.

      • (string) --

    • errors (list) --

      A list of TerminateJobsErrorDetail items, one for each job that couldn't be terminated. Each item includes the job ID along with a code and message that describe why the job wasn't terminated.

      • (dict) --

        An object that contains the details of a job that couldn't be terminated by a TerminateJobs operation.

        • job (string) --

          The Batch job ID of the job that couldn't be terminated.

        • code (string) --

          An error code that identifies the reason the job couldn't be terminated. Valid values are:

          • ValidationException – A job identifier in the request is malformed or isn't valid.

          • ClientException – The request failed because of a client error.

          • ThrottlingException – The request was throttled. Retry the request.

          • ServerException – An internal error occurred. Retry the request.

          • AccessDenied – The caller isn't authorized to perform the action on the specified job.

        • message (string) --

          A message that describes the reason the job couldn't be terminated.

TerminateServiceJobs (new) Link ¶

Terminates up to 50 service jobs in a job queue. This is a bulk version of TerminateServiceJob.

Batch reports the result for each service job individually in the response. Service jobs that were processed successfully are reported in the successful list. Service jobs that encountered errors are reported in the errors list. The response returns an HTTP status code of 200 even when some service jobs encountered errors, so check the errors list. Service jobs that can't be found are treated as successfully processed.

See also: AWS API Documentation

Request Syntax

client.terminate_service_jobs(
    jobs=[
        'string',
    ],
    reason='string'
)
type jobs:

list

param jobs:

[REQUIRED]

An array of up to 50 service job IDs of the service jobs to terminate.

  • (string) --

type reason:

string

param reason:

[REQUIRED]

A message to attach to the service job that explains the reason for terminating it. This message is returned by DescribeServiceJob operations on the service job.

rtype:

dict

returns:

Response Syntax

{
    'successful': [
        'string',
    ],
    'errors': [
        {
            'job': 'string',
            'code': 'string',
            'message': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    The result of a TerminateServiceJobs request, including the service jobs whose termination request was accepted and the errors for service jobs that couldn't be terminated.

    • successful (list) --

      A list of the service job IDs whose termination request was accepted.

      • (string) --

    • errors (list) --

      A list of TerminateServiceJobsErrorDetail items, one for each service job that couldn't be terminated. Each item includes the service job ID along with a code and message that describe why the service job wasn't terminated.

      • (dict) --

        An object that contains the details of a service job that couldn't be terminated by a TerminateServiceJobs operation.

        • job (string) --

          The service job ID of the service job that couldn't be terminated.

        • code (string) --

          An error code that identifies the reason the service job couldn't be terminated. Valid values are:

          • ValidationException – A service job identifier in the request is malformed or isn't valid.

          • ClientException – The request failed because of a client error.

          • ThrottlingException – The request was throttled. Retry the request.

          • ServerException – An internal error occurred. Retry the request.

          • AccessDenied – The caller isn't authorized to perform the action on the specified service job.

        • message (string) --

          A message that describes the reason the service job couldn't be terminated.

CancelJobs (new) Link ¶

Cancels up to 50 jobs in an Batch job queue. This is a bulk version of CancelJob. Jobs that are in a SUBMITTED, PENDING, or RUNNABLE state are cancelled and the job status is updated to FAILED.

Jobs that progressed to the STARTING or RUNNING state aren't cancelled. These jobs must be terminated with the TerminateJob or TerminateJobs operation.

Batch reports the result for each job individually in the response. Jobs that were processed successfully are reported in the successful list. Jobs that encountered errors are reported in the errors list. The response returns an HTTP status code of 200 even when some jobs encountered errors, so check the errors list. Jobs that can't be found are treated as successfully processed.

See also: AWS API Documentation

Request Syntax

client.cancel_jobs(
    jobs=[
        'string',
    ],
    reason='string'
)
type jobs:

list

param jobs:

[REQUIRED]

An array of up to 50 Batch job IDs of the jobs to cancel.

  • (string) --

type reason:

string

param reason:

[REQUIRED]

A message to attach to the job that explains the reason for cancelling it. This message is returned by future DescribeJobs operations on the job. It is also recorded in the Batch activity logs.

This parameter has a limit of 1024 characters.

rtype:

dict

returns:

Response Syntax

{
    'successful': [
        'string',
    ],
    'errors': [
        {
            'job': 'string',
            'code': 'string',
            'message': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    The result of a CancelJobs request, including the jobs whose cancellation request was accepted and the errors for jobs that couldn't be cancelled.

    • successful (list) --

      A list of the job IDs whose cancellation request was accepted.

      • (string) --

    • errors (list) --

      A list of CancelJobsErrorDetail items, one for each job that couldn't be cancelled. Each item includes the job ID along with a code and message that describe why the job wasn't cancelled.

      • (dict) --

        An object that contains the details of a job that couldn't be cancelled by a CancelJobs operation.

        • job (string) --

          The Batch job ID of the job that couldn't be cancelled.

        • code (string) --

          An error code that identifies the reason the job couldn't be cancelled. Valid values are:

          • ValidationException – A job identifier in the request is malformed or isn't valid.

          • ClientException – The request failed because of a client error.

          • ThrottlingException – The request was throttled. Retry the request.

          • ServerException – An internal error occurred. Retry the request.

          • AccessDenied – The caller isn't authorized to perform the action on the specified job.

        • message (string) --

          A message that describes the reason the job couldn't be cancelled.

ListJobs (updated) Link ¶
Changes (response)
{'jobSummaryList': {'isCancelled': 'boolean', 'isTerminated': 'boolean'}}

Returns a list of Batch jobs.

You must specify only one of the following items:

  • A job queue ID to return a list of jobs in that job queue

  • A multi-node parallel job ID to return a list of nodes for that job

  • An array job ID to return a list of the children for that job

See also: AWS API Documentation

Request Syntax

client.list_jobs(
    jobQueue='string',
    arrayJobId='string',
    multiNodeJobId='string',
    jobStatus='SUBMITTED'|'PENDING'|'RUNNABLE'|'STARTING'|'RUNNING'|'SUCCEEDED'|'FAILED',
    maxResults=123,
    nextToken='string',
    filters=[
        {
            'name': 'string',
            'values': [
                'string',
            ]
        },
    ]
)
type jobQueue:

string

param jobQueue:

The name or full Amazon Resource Name (ARN) of the job queue used to list jobs.

type arrayJobId:

string

param arrayJobId:

The job ID for an array job. Specifying an array job ID with this parameter lists all child jobs from within the specified array.

type multiNodeJobId:

string

param multiNodeJobId:

The job ID for a multi-node parallel job. Specifying a multi-node parallel job ID with this parameter lists all nodes that are associated with the specified job.

type jobStatus:

string

param jobStatus:

The job status used to filter jobs in the specified queue. If the filters parameter is specified, the jobStatus parameter is ignored and jobs with any status are returned. The exception is the SHARE_IDENTIFIER filter and jobStatus can be used together. If you don't specify a status, only RUNNING jobs are returned.

type maxResults:

integer

param maxResults:

The maximum number of results returned by ListJobs in a paginated output. When this parameter is used, ListJobs returns up to maxResults results in a single page and a nextToken response element, if applicable. The remaining results of the initial request can be seen by sending another ListJobs request with the returned nextToken value.

The following outlines key parameters and limitations:

  • The minimum value is 1.

  • When --job-status is used, Batch returns up to 1000 values.

  • When --filters is used, Batch returns up to 100 values.

  • If neither parameter is used, then ListJobs returns up to 1000 results (jobs that are in the RUNNING status) and a nextToken value, if applicable.

type nextToken:

string

param nextToken:

The nextToken value returned from a previous paginated ListJobs request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

type filters:

list

param filters:

The filter to apply to the query. Only one filter can be used at a time. When the filter is used, jobStatus is ignored with the exception that SHARE_IDENTIFIER and jobStatus can be used together. The filter doesn't apply to child jobs in an array or multi-node parallel (MNP) jobs. The results are sorted by the createdAt field, with the most recent jobs being first.

The value of the filter is a case-insensitive match for the job name. If the value ends with an asterisk (*), the filter matches any job name that begins with the string before the '*'. This corresponds to the jobName value. For example, test1 matches both Test1 and test1, and test1* matches both test1 and Test10. When the JOB_NAME filter is used, the results are grouped by the job name and version.

JOB_DEFINITION

The value for the filter is the name or Amazon Resource Name (ARN) of the job definition. This corresponds to the jobDefinition value. The value is case sensitive. When the value for the filter is the job definition name, the results include all the jobs that used any revision of that job definition name. If the value ends with an asterisk (*), the filter matches any job definition name that begins with the string before the '*'. For example, jd1 matches only jd1, and jd1* matches both jd1 and jd1A. The version of the job definition that's used doesn't affect the sort order. When the JOB_DEFINITION filter is used and the ARN is used (which is in the form arn:${Partition}:batch:${Region}:${Account}:job-definition/${JobDefinitionName}:${Revision}), the results include jobs that used the specified revision of the job definition. Asterisk (*) isn't supported when the ARN is used.

BEFORE_CREATED_AT

The value for the filter is the time that's before the job was created. This corresponds to the createdAt value. The value is a string representation of the number of milliseconds since 00:00:00 UTC (midnight) on January 1, 1970.

AFTER_CREATED_AT

The value for the filter is the time that's after the job was created. This corresponds to the createdAt value. The value is a string representation of the number of milliseconds since 00:00:00 UTC (midnight) on January 1, 1970.

SHARE_IDENTIFIER

The value for the filter is the fairshare scheduling share identifier.

  • (dict) --

    A filter name and value pair that's used to return a more specific list of results from a ListJobs or ListJobsByConsumableResource API operation.

    • name (string) --

      The name of the filter. Filter names are case sensitive.

    • values (list) --

      The filter values.

      • (string) --

rtype:

dict

returns:

Response Syntax

{
    'jobSummaryList': [
        {
            'jobArn': 'string',
            'jobId': 'string',
            'jobName': 'string',
            'capacityUsage': [
                {
                    'capacityUnit': 'string',
                    'quantity': 123.0
                },
            ],
            'createdAt': 123,
            'scheduledAt': 123,
            'shareIdentifier': 'string',
            'status': 'SUBMITTED'|'PENDING'|'RUNNABLE'|'STARTING'|'RUNNING'|'SUCCEEDED'|'FAILED',
            'statusReason': 'string',
            'startedAt': 123,
            'stoppedAt': 123,
            'container': {
                'exitCode': 123,
                'reason': 'string'
            },
            'arrayProperties': {
                'size': 123,
                'index': 123,
                'statusSummary': {
                    'string': 123
                },
                'statusSummaryLastUpdatedAt': 123
            },
            'nodeProperties': {
                'isMainNode': True|False,
                'numNodes': 123,
                'nodeIndex': 123
            },
            'jobDefinition': 'string',
            'isCancelled': True|False,
            'isTerminated': True|False
        },
    ],
    'nextToken': 'string'
}

Response Structure

  • (dict) --

    • jobSummaryList (list) --

      A list of job summaries that match the request.

      • (dict) --

        An object that represents summary details of a job.

        • jobArn (string) --

          The Amazon Resource Name (ARN) of the job.

        • jobId (string) --

          The job ID.

        • jobName (string) --

          The job name.

        • capacityUsage (list) --

          The configured capacity usage information for this job, including the unit of measure and quantity of resources.

          • (dict) --

            The capacity usage for a job, including the unit of measure and quantity of resources being used.

            • capacityUnit (string) --

              The unit of measure for the capacity usage. This is VCPU for Amazon EC2 and cpu for Amazon EKS.

            • quantity (float) --

              The quantity of capacity being used by the job, measured in the units specified by capacityUnit.

        • createdAt (integer) --

          The Unix timestamp (in milliseconds) for when the job was created. For non-array jobs and parent array jobs, this is when the job entered the SUBMITTED state (at the time SubmitJob was called). For array child jobs, this is when the child job was spawned by its parent and entered the PENDING state.

        • scheduledAt (integer) --

          The Unix timestamp (in milliseconds) for when the job was scheduled for execution. For more information on job statues, see Service job status in the Batch User Guide.

        • shareIdentifier (string) --

          The share identifier for the fairshare scheduling queue that this job is associated with.

        • status (string) --

          The current status for the job.

        • statusReason (string) --

          A short, human-readable string to provide more details for the current status of the job.

        • startedAt (integer) --

          The Unix timestamp for when the job was started. More specifically, it's when the job transitioned from the STARTING state to the RUNNING state.

        • stoppedAt (integer) --

          The Unix timestamp for when the job was stopped. More specifically, it's when the job transitioned from the RUNNING state to a terminal state, such as SUCCEEDED or FAILED.

        • container (dict) --

          An object that represents the details of the container that's associated with the job.

          • exitCode (integer) --

            The exit code to return upon completion.

          • reason (string) --

            A short (255 max characters) human-readable string to provide additional details for a running or stopped container.

        • arrayProperties (dict) --

          The array properties of the job, if it's an array job.

          • size (integer) --

            The size of the array job. This parameter is returned for parent array jobs.

          • index (integer) --

            The job index within the array that's associated with this job. This parameter is returned for children of array jobs.

          • statusSummary (dict) --

            A summary of the number of array job children in each available job status. This parameter is returned for parent array jobs.

            • (string) --

              • (integer) --

          • statusSummaryLastUpdatedAt (integer) --

            The Unix timestamp (in milliseconds) for when the statusSummary was last updated.

        • nodeProperties (dict) --

          The node properties for a single node in a job summary list.

          • isMainNode (boolean) --

            Specifies whether the current node is the main node for a multi-node parallel job.

          • numNodes (integer) --

            The number of nodes that are associated with a multi-node parallel job.

          • nodeIndex (integer) --

            The node index for the node. Node index numbering begins at zero. This index is also available on the node with the AWS_BATCH_JOB_NODE_INDEX environment variable.

        • jobDefinition (string) --

          The Amazon Resource Name (ARN) of the job definition.

        • isCancelled (boolean) --

          Indicates whether a cancellation request has been accepted for the job. This field is only present when the value is true.

        • isTerminated (boolean) --

          Indicates whether a termination request has been accepted for the job. This field is only present when the value is true.

    • nextToken (string) --

      The nextToken value to include in a future ListJobs request. When the results of a ListJobs request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.

ListServiceJobs (updated) Link ¶
Changes (response)
{'jobSummaryList': {'isTerminated': 'boolean'}}

Returns a list of service jobs for a specified job queue.

See also: AWS API Documentation

Request Syntax

client.list_service_jobs(
    jobQueue='string',
    jobStatus='SUBMITTED'|'PENDING'|'RUNNABLE'|'SCHEDULED'|'STARTING'|'RUNNING'|'SUCCEEDED'|'FAILED',
    maxResults=123,
    nextToken='string',
    filters=[
        {
            'name': 'string',
            'values': [
                'string',
            ]
        },
    ]
)
type jobQueue:

string

param jobQueue:

The name or ARN of the job queue with which to list service jobs.

type jobStatus:

string

param jobStatus:

The job status used to filter service jobs in the specified queue. If the filters parameter is specified, the jobStatus parameter is ignored and jobs with any status are returned. The exceptions are the SHARE_IDENTIFIER filter and QUOTA_SHARE_NAME filter, which can be used with jobStatus. If you don't specify a status, only RUNNING jobs are returned.

type maxResults:

integer

param maxResults:

The maximum number of results returned by ListServiceJobs in paginated output. When this parameter is used, ListServiceJobs only returns maxResults results in a single page and a nextToken response element. The remaining results of the initial request can be seen by sending another ListServiceJobs request with the returned nextToken value. This value can be between 1 and 100. If this parameter isn't used, then ListServiceJobs returns up to 100 results and a nextToken value if applicable.

type nextToken:

string

param nextToken:

The nextToken value returned from a previous paginated ListServiceJobs request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return.

type filters:

list

param filters:

The filter to apply to the query. Only one filter can be used at a time. When the filter is used, jobStatus is ignored with the exception that SHARE_IDENTIFIER or QUOTA_SHARE_NAME and jobStatus can be used together. The results are sorted by the createdAt field, with the most recent jobs being first.

The value of the filter is a case-insensitive match for the job name. If the value ends with an asterisk (*), the filter matches any job name that begins with the string before the '*'. This corresponds to the jobName value. For example, test1 matches both Test1 and test1, and test1* matches both test1 and Test10. When the JOB_NAME filter is used, the results are grouped by the job name and version.

BEFORE_CREATED_AT

The value for the filter is the time that's before the job was created. This corresponds to the createdAt value. The value is a string representation of the number of milliseconds since 00:00:00 UTC (midnight) on January 1, 1970.

AFTER_CREATED_AT

The value for the filter is the time that's after the job was created. This corresponds to the createdAt value. The value is a string representation of the number of milliseconds since 00:00:00 UTC (midnight) on January 1, 1970.

SHARE_IDENTIFIER

The value for the filter is the fairshare scheduling share identifier.

QUOTA_SHARE_NAME

The value for the filter is the quota management share name.

  • (dict) --

    A filter name and value pair that's used to return a more specific list of results from a ListJobs or ListJobsByConsumableResource API operation.

    • name (string) --

      The name of the filter. Filter names are case sensitive.

    • values (list) --

      The filter values.

      • (string) --

rtype:

dict

returns:

Response Syntax

{
    'jobSummaryList': [
        {
            'latestAttempt': {
                'serviceResourceId': {
                    'name': 'TrainingJobArn',
                    'value': 'string'
                }
            },
            'capacityUsage': [
                {
                    'capacityUnit': 'string',
                    'quantity': 123.0
                },
            ],
            'createdAt': 123,
            'jobArn': 'string',
            'jobId': 'string',
            'jobName': 'string',
            'scheduledAt': 123,
            'serviceJobType': 'SAGEMAKER_TRAINING',
            'shareIdentifier': 'string',
            'quotaShareName': 'string',
            'status': 'SUBMITTED'|'PENDING'|'RUNNABLE'|'SCHEDULED'|'STARTING'|'RUNNING'|'SUCCEEDED'|'FAILED',
            'statusReason': 'string',
            'startedAt': 123,
            'stoppedAt': 123,
            'isTerminated': True|False
        },
    ],
    'nextToken': 'string'
}

Response Structure

  • (dict) --

    • jobSummaryList (list) --

      A list of service job summaries.

      • (dict) --

        Summary information about a service job.

        • latestAttempt (dict) --

          Information about the latest attempt for the service job.

          • serviceResourceId (dict) --

            The service resource identifier associated with the service job attempt.

            • name (string) --

              The name of the resource identifier.

            • value (string) --

              The value of the resource identifier.

        • capacityUsage (list) --

          The capacity usage information for this service job, including the unit of measure and quantity of resources being used.

          • (dict) --

            The capacity usage for a service job, including the unit of measure and quantity of resources being used.

            • capacityUnit (string) --

              The unit of measure for the service job capacity usage. For service jobs, this is the instance type.

            • quantity (float) --

              The quantity of capacity being used by the service job, measured in the units specified by capacityUnit.

        • createdAt (integer) --

          The Unix timestamp (in milliseconds) for when the service job was created.

        • jobArn (string) --

          The Amazon Resource Name (ARN) of the service job.

        • jobId (string) --

          The job ID for the service job.

        • jobName (string) --

          The name of the service job.

        • scheduledAt (integer) --

          The Unix timestamp (in milliseconds) for when the service job was scheduled for execution.

        • serviceJobType (string) --

          The type of service job. For SageMaker Training jobs, this value is SAGEMAKER_TRAINING.

        • shareIdentifier (string) --

          The share identifier for the job.

        • quotaShareName (string) --

          The quota share for the service job.

        • status (string) --

          The current status of the service job.

        • statusReason (string) --

          A short string to provide more details on the current status of the service job.

        • startedAt (integer) --

          The Unix timestamp (in milliseconds) for when the service job was started.

        • stoppedAt (integer) --

          The Unix timestamp (in milliseconds) for when the service job stopped running.

        • isTerminated (boolean) --

          Indicates whether a termination request has been accepted for the service job. This field is only present when the value is true.

    • nextToken (string) --

      The nextToken value to include in a future ListServiceJobs request. When the results of a ListServiceJobs request exceed maxResults, this value can be used to retrieve the next page of results. This value is null when there are no more results to return.