How to use Boto3 to paginate through all triggers present in AWS Glue

Problem Statement: Use boto3 library in Python to paginate through all triggers from AWS Glue Data Catalog that is created in your account

Approach/Algorithm to solve this problem

  • Step 1: Import boto3 and botocore exceptions to handle exceptions.

  • Step 2: max_items, page_size and starting_token are the optional parameters for this function

    • max_items denote the total number of records to return. If the number of available records > max_items, then a NextToken will be provided in the response to resume pagination.

    • page_size denotes the size of each page.

    • starting_token helps to paginate, and it uses NextToken from a previous response.

  • Step 3: Create an AWS session using boto3 lib. Make sure region_name is mentioned in the default profile. If it is not mentioned, then explicitly pass the region_name while creating the session.

  • Step 4: Create an AWS client for glue.

  • Step 5: Create a paginator object that contains details of all triggers using get_triggers

  • Step 6: Call the paginate function and pass the max_items, page_size and starting_token as PaginationConfig parameter

  • Step 7: It returns the number of records based on max_size and page_size.

  • Step 8: Handle the generic exception if something went wrong while paginating.

Example Code

Use the following code to paginate through all triggers created in user account ?

import boto3
from botocore.exceptions import ClientError

def paginate_through_triggers(max_items=None, page_size=None, starting_token=None):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        paginator = glue_client.get_paginator('get_triggers')
        response = paginator.paginate(PaginationConfig={
            'MaxItems': max_items,
            'PageSize': page_size,
            'StartingToken': starting_token
        })
        return response
    except ClientError as e:
        raise Exception("boto3 client error in paginate_through_triggers: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in paginate_through_triggers: " + e.__str__())

# Example usage with pagination parameters
page_iterator = paginate_through_triggers(max_items=10, page_size=2)
for page in page_iterator:
    print(page['Triggers'])

Basic Usage Without Pagination Parameters

You can also call the function without any parameters to get all triggers ?

import boto3
from botocore.exceptions import ClientError

# Simple function to get all triggers without pagination limits
def get_all_triggers():
    session = boto3.session.Session()
    glue_client = session.client('glue')
    
    try:
        paginator = glue_client.get_paginator('get_triggers')
        response = paginator.paginate()
        
        all_triggers = []
        for page in response:
            all_triggers.extend(page['Triggers'])
        
        return all_triggers
    except ClientError as e:
        raise Exception("boto3 client error: " + str(e))

# Get all triggers
triggers = get_all_triggers()
print(f"Total triggers found: {len(triggers)}")
for trigger in triggers:
    print(f"Trigger Name: {trigger['Name']}, State: {trigger['State']}")

Parameters

Parameter Type Description
max_items int Maximum number of items to return across all pages
page_size int Number of items per page (default: AWS service limit)
starting_token str Token to specify starting point for pagination

Output

[{'Name': 'file-passed', 'WorkflowName': 'data-tx', 'Type': 'CONDITIONAL', 'State': 'ACTIVATED', 'Actions': [{'JobName': 'data-event'}], 'Predicate': {'Logical': 'ANY', 'Conditions': [{'LogicalOperator': 'EQUALS', 'JobName': 'data-worker', 'State': 'SUCCEEDED'}]}},
{'Name': 'file-passed-to-acc', 'WorkflowName': 'tick-data', 'Type': 'CONDITIONAL', 'State': 'ACTIVATED', 'Actions': [{'JobName': 'tick-data'}], 'Predicate': {'Logical': 'ANY', 'Conditions': [{'LogicalOperator': 'EQUALS', 'JobName': 'tick-data', 'State': 'SUCCEEDED'}]}}]

Conclusion

Use boto3's paginator for efficient handling of large trigger datasets in AWS Glue. The PaginationConfig parameters help control memory usage and API call limits when working with numerous triggers.

Updated on: 2026-03-25T18:57:47+05:30

277 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements