Class AwsCmdbMetadataHandler

  • All Implemented Interfaces:
    com.amazonaws.services.lambda.runtime.RequestStreamHandler

    public class AwsCmdbMetadataHandler
    extends MetadataHandler
    Handles metadata requests for the Athena AWS CMDB Connector.

    For more detail, please see the module's README.md, some notable characteristics of this class include:

    1. Maps AWS Resources to SQL tables using a set of TableProviders constructed from a TableProviderFactory. 2. This class is largely a mux that delegates requests to the appropriate TableProvider based on the requested TableName. 3. Provides a schema and table list by scanning all loaded TableProviders.

    • Constructor Detail

      • AwsCmdbMetadataHandler

        public AwsCmdbMetadataHandler​(Map<String,​String> configOptions)
      • AwsCmdbMetadataHandler

        protected AwsCmdbMetadataHandler​(TableProviderFactory tableProviderFactory,
                                         EncryptionKeyFactory keyFactory,
                                         software.amazon.awssdk.services.secretsmanager.SecretsManagerClient secretsManager,
                                         software.amazon.awssdk.services.athena.AthenaClient athena,
                                         String spillBucket,
                                         String spillPrefix,
                                         Map<String,​String> configOptions)
    • Method Detail

      • doListSchemaNames

        public ListSchemasResponse doListSchemaNames​(BlockAllocator blockAllocator,
                                                     ListSchemasRequest listSchemasRequest)
        Returns the list of supported schemas discovered from the loaded TableProvider scan.
        Specified by:
        doListSchemaNames in class MetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        listSchemasRequest - Provides details on who made the request and which Athena catalog they are querying.
        Returns:
        A ListSchemasResponse which primarily contains a Set of schema names and a catalog name corresponding the Athena catalog that was queried.
        See Also:
        MetadataHandler
      • doListTables

        public ListTablesResponse doListTables​(BlockAllocator blockAllocator,
                                               ListTablesRequest listTablesRequest)
        Returns the list of supported tables on the requested schema discovered from the loaded TableProvider scan.
        Specified by:
        doListTables in class MetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        listTablesRequest - Provides details on who made the request and which Athena catalog and database they are querying.
        Returns:
        A ListTablesResponse which primarily contains a List enumerating the tables in this catalog, database tuple. It also contains the catalog name corresponding the Athena catalog that was queried.
        See Also:
        MetadataHandler
      • doGetTable

        public GetTableResponse doGetTable​(BlockAllocator blockAllocator,
                                           GetTableRequest getTableRequest)
        Delegates to the TableProvider that is registered for the requested table.
        Specified by:
        doGetTable in class MetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getTableRequest - Provides details on who made the request and which Athena catalog, database, and table they are querying.
        Returns:
        A GetTableResponse which primarily contains: 1. An Apache Arrow Schema object describing the table's columns, types, and descriptions. 2. A Set of partition column names (or empty if the table isn't partitioned).
        See Also:
        MetadataHandler
      • enhancePartitionSchema

        public void enhancePartitionSchema​(SchemaBuilder partitionSchemaBuilder,
                                           GetTableLayoutRequest request)
        Delegates to the TableProvider that is registered for the requested table.
        Overrides:
        enhancePartitionSchema in class MetadataHandler
        Parameters:
        partitionSchemaBuilder - The SchemaBuilder you can use to add additional columns and metadata to the partitions response.
        request - The GetTableLayoutResquest that triggered this call.
        See Also:
        MetadataHandler
      • getPartitions

        public void getPartitions​(BlockWriter blockWriter,
                                  GetTableLayoutRequest request,
                                  QueryStatusChecker queryStatusChecker)
                           throws Exception
        Delegates to the TableProvider that is registered for the requested table.
        Specified by:
        getPartitions in class MetadataHandler
        Parameters:
        blockWriter - Used to write rows (partitions) into the Apache Arrow response.
        request - Provides details of the catalog, database, and table being queried as well as any filter predicate.
        queryStatusChecker - A QueryStatusChecker that you can use to stop doing work for a query that has already terminated
        Throws:
        Exception
        See Also:
        MetadataHandler
      • doGetSplits

        public GetSplitsResponse doGetSplits​(BlockAllocator blockAllocator,
                                             GetSplitsRequest getSplitsRequest)
        Delegates to the TableProvider that is registered for the requested table.
        Specified by:
        doGetSplits in class MetadataHandler
        Parameters:
        blockAllocator - Tool for creating and managing Apache Arrow Blocks.
        getSplitsRequest - Provides details of the catalog, database, table, andpartition(s) being queried as well as any filter predicate.
        Returns:
        A GetSplitsResponse which primarily contains: 1. A Set which represent read operations Amazon Athena must perform by calling your read function. 2. (Optional) A continuation token which allows you to paginate the generation of splits for large queries.
        See Also:
        MetadataHandler