getUnfilteredTableMetadata method
- required String catalogId,
- required String databaseName,
- required String name,
- required List<
PermissionType> supportedPermissionTypes, - AuditContext? auditContext,
- String? parentResourceArn,
- List<
Permission> ? permissions, - QuerySessionContext? querySessionContext,
- String? region,
- String? rootResourceArn,
- SupportedDialect? supportedDialect,
Allows a third-party analytical engine to retrieve unfiltered table metadata from the Data Catalog.
For IAM authorization, the public IAM action associated with this API is
glue:GetTable.
May throw EntityNotFoundException.
May throw FederationSourceException.
May throw FederationSourceRetryableException.
May throw GlueEncryptionException.
May throw InternalServiceException.
May throw InvalidInputException.
May throw OperationTimeoutException.
May throw PermissionTypeMismatchException.
Parameter catalogId :
The catalog ID where the table resides.
Parameter databaseName :
(Required) Specifies the name of a database that contains the table.
Parameter name :
(Required) Specifies the name of a table for which you are requesting
metadata.
Parameter supportedPermissionTypes :
Indicates the level of filtering a third-party analytical engine is
capable of enforcing when calling the
GetUnfilteredTableMetadata API operation. Accepted values
are:
-
COLUMN_PERMISSION- Column permissions ensure that users can access only specific columns in the table. If there are particular columns contain sensitive data, data lake administrators can define column filters that exclude access to specific columns. -
CELL_FILTER_PERMISSION- Cell-level filtering combines column filtering (include or exclude columns) and row filter expressions to restrict access to individual elements in the table. -
NESTED_PERMISSION- Nested permissions combines cell-level filtering and nested column filtering to restrict access to columns and/or nested columns in specific rows based on row filter expressions. -
NESTED_CELL_PERMISSION- Nested cell permissions combines nested permission with nested cell-level filtering. This allows different subsets of nested columns to be restricted based on an array of row filter expressions.
Important: If you provide a supported permission type that doesn't match
the user's level of permissions on the table, then Lake Formation raises
an exception. For example, if the third-party engine calling the
GetUnfilteredTableMetadata operation can enforce only
column-level filtering, and the user has nested cell filtering applied on
the table, Lake Formation throws an exception, and will not return
unfiltered table metadata and data access credentials.
Parameter auditContext :
A structure containing Lake Formation audit context information.
Parameter parentResourceArn :
The resource ARN of the view.
Parameter permissions :
The Lake Formation data permissions of the caller on the table. Used to
authorize the call when no view context is found.
Parameter querySessionContext :
A structure used as a protocol between query engines and Lake Formation or
Glue. Contains both a Lake Formation generated authorization identifier
and information from the request's authorization context.
Parameter region :
Specified only if the base tables belong to a different Amazon Web
Services Region.
Parameter rootResourceArn :
The resource ARN of the root view in a chain of nested views.
Parameter supportedDialect :
A structure specifying the dialect and dialect version used by the query
engine.
Implementation
Future<GetUnfilteredTableMetadataResponse> getUnfilteredTableMetadata({
required String catalogId,
required String databaseName,
required String name,
required List<PermissionType> supportedPermissionTypes,
AuditContext? auditContext,
String? parentResourceArn,
List<Permission>? permissions,
QuerySessionContext? querySessionContext,
String? region,
String? rootResourceArn,
SupportedDialect? supportedDialect,
}) async {
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSGlue.GetUnfilteredTableMetadata'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'CatalogId': catalogId,
'DatabaseName': databaseName,
'Name': name,
'SupportedPermissionTypes':
supportedPermissionTypes.map((e) => e.value).toList(),
if (auditContext != null) 'AuditContext': auditContext,
if (parentResourceArn != null) 'ParentResourceArn': parentResourceArn,
if (permissions != null)
'Permissions': permissions.map((e) => e.value).toList(),
if (querySessionContext != null)
'QuerySessionContext': querySessionContext,
if (region != null) 'Region': region,
if (rootResourceArn != null) 'RootResourceArn': rootResourceArn,
if (supportedDialect != null) 'SupportedDialect': supportedDialect,
},
);
return GetUnfilteredTableMetadataResponse.fromJson(jsonResponse.body);
}