createDataCatalog method

Future<void> createDataCatalog({
  1. required String name,
  2. required DataCatalogType type,
  3. String? description,
  4. Map<String, String>? parameters,
  5. List<Tag>? tags,
})

Creates (registers) a data catalog with the specified name and properties. Catalogs created are visible to all users of the same AWS account.

May throw InternalServerException. May throw InvalidRequestException.

Parameter name : The name of the data catalog to create. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters.

Parameter type : The type of data catalog to create: LAMBDA for a federated catalog, GLUE for AWS Glue Catalog, or HIVE for an external hive metastore.

Parameter description : A description of the data catalog to be created.

Parameter parameters : Specifies the Lambda function or functions to use for creating 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

  • The GLUE type has no parameters.

Parameter tags : A list of comma separated tags to add to the data catalog that is created.

Implementation

Future<void> createDataCatalog({
  required String name,
  required DataCatalogType type,
  String? description,
  Map<String, String>? parameters,
  List<Tag>? tags,
}) async {
  ArgumentError.checkNotNull(name, 'name');
  _s.validateStringLength(
    'name',
    name,
    1,
    256,
    isRequired: true,
  );
  ArgumentError.checkNotNull(type, 'type');
  _s.validateStringLength(
    'description',
    description,
    1,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonAthena.CreateDataCatalog'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Name': name,
      'Type': type.toValue(),
      if (description != null) 'Description': description,
      if (parameters != null) 'Parameters': parameters,
      if (tags != null) 'Tags': tags,
    },
  );
}