How to use Boto3 to paginate through table versions of a table present in AWS Glue

Problem Statement: Use boto3 library in Python to paginate through table versions of a table 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, while database_name and table_name are required.

    • max_items denotes 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 table versions of a table using get_table_versions.

  • Step 6: Call the paginate function and pass the database_name as DatabaseName, TableName as table_name, max_items, page_size and starting_token as PaginationConfig parameter.

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

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

Example Code

Use the following code to paginate through table versions of a table created in user account −

import boto3
from botocore.exceptions import ClientError

def paginate_through_table_versions(database_name, table_name, 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_table_versions')
        response = paginator.paginate(
            DatabaseName=database_name, 
            TableName=table_name, 
            PaginationConfig={
                'MaxItems': max_items,
                'PageSize': page_size,
                'StartingToken': starting_token
            }
        )
        return response
    except ClientError as e:
        raise Exception("boto3 client error in paginate_through_table_versions: " + str(e))
    except Exception as e:
        raise Exception("Unexpected error in paginate_through_table_versions: " + str(e))

# Example usage
paginator_response = paginate_through_table_versions("test_db", "qa_table", 2, 5)

# Iterate through pages
for page in paginator_response:
    print("Table Versions in this page:")
    for version in page['TableVersions']:
        print(f"Version ID: {version.get('VersionId', 'N/A')}")
        print(f"Table Name: {version['Table']['Name']}")
        print("---")

Parameters

Parameter Type Required Description
database_name string Yes Name of the database containing the table
table_name string Yes Name of the table to get versions for
max_items integer No Maximum number of items to return
page_size integer No Size of each page
starting_token string No Token to resume pagination from previous response

Output

Table Versions in this page:
Version ID: 0
Table Name: qa_table
---

Key Points

  • The function returns a paginator object that can be iterated through pages

  • Each page contains a list of table versions with detailed metadata

  • Use MaxItems to limit total results across all pages

  • Use PageSize to control how many items are returned per page

  • The StartingToken allows resuming pagination from a specific point

Conclusion

AWS Glue table version pagination with boto3 allows efficient retrieval of table metadata history. Use the paginator to handle large datasets and implement proper error handling for robust applications.

Updated on: 2026-03-25T18:56:19+05:30

349 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements