updateDataCatalog method

Future<void> updateDataCatalog({
  1. required String name,
  2. required DataCatalogType type,
  3. String? description,
  4. Map<String, String>? parameters,
})

Updates the data catalog that has the specified name.

May throw InternalServerException. May throw InvalidRequestException.

Parameter name : The name of the data catalog to update. The catalog name must be unique for the Amazon Web Services account and can use a maximum of 127 alphanumeric, underscore, at sign, or hyphen characters. The remainder of the length constraint of 256 is reserved for use by Athena.

Parameter type : Specifies the type of data catalog to update. Specify LAMBDA for a federated catalog, HIVE for an external hive metastore, or GLUE for an Glue Data Catalog.

Parameter description : New or modified text that describes the data catalog.

Parameter parameters : Specifies the Lambda function or functions to use for updating the data catalog. This is a mapping whose values depend on the catalog type.

  • For the HIVE data catalog type, use the following syntax. The metadata-function parameter is required. The sdk-version parameter is optional and defaults to the currently supported version.

    metadata-function=lambda_arn, sdk-version=version_number

  • For the LAMBDA data catalog type, use one of the following sets of required parameters, but not both.
    • If you have one Lambda function that processes metadata and another for reading the actual data, use the following syntax. Both parameters are required.

      metadata-function=lambda_arn, record-function=lambda_arn

    • If you have a composite Lambda function that processes both metadata and data, use the following syntax to specify your Lambda function.

      function=lambda_arn

Implementation

Future<void> updateDataCatalog({
  required String name,
  required DataCatalogType type,
  String? description,
  Map<String, String>? parameters,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonAthena.UpdateDataCatalog'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Name': name,
      'Type': type.value,
      if (description != null) 'Description': description,
      if (parameters != null) 'Parameters': parameters,
    },
  );
}