How to use Boto3 to get the list of schemas present in AWS account

In this article, we will see how a user can get the list of all schemas present in an AWS account.


Get the list of all the schemas available in an AWS Glue Data Catalog.

Problem Statement: Use boto3 library in Python to get the list of all schemas.

Approach/Algorithm to solve this problem

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

  • Step 2: There are no parameters in this function.

  • Step 3: Create an AWS session using boto3 lib. Make sure region_name is mentioned in 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: Now use list_schemas function

  • Step 6: It returns the list of all schemas present in the AWS Glue data catalog with limited details of schema. It doesn't include the schemas whose status is Deleting. It only has the list of available schemas. If there are no schemas, then it returns an empty dict.

  • Step 7: Handle the generic exception if something went wrong while checking the schemas.

Example Code

The following code fetches the list of all schemas −

import boto3
from botocore.exceptions import ClientError

def list_of_schemas()
   session = boto3.session.Session()
   glue_client = session.client('glue')
      schemas_name = glue_client.list_schemas()
      return schemas_name
   except ClientError as e:
      raise Exception("boto3 client error in list_of_schemas: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in list_of_schemas: " + e.__str__())


      'RegistryName': 'employee_details',
      'SchemaName': 'employee_table',
      'SchemaArn': 'string',
      'Description': 'Schema for employees record',
      'Status': 'AVAILABLE',
      'CreatedTime': 'string',
      'UpdatedTime': 'string'
      'RegistryName': 'security_details',
      'SchemaName': 'security_table',
      'SchemaArn': 'string',
      'Description': 'Schema for security record',
      'Status': 'AVAILABLE',
      'CreatedTime': 'string',
      'UpdatedTime': 'string'
'Request': ……