aws-cloudformation / aws-cloudformation/cloudformation-coverage-roadmap
New Resource: AWS::Glue::Catalog
- Dominant language
- No language data
- Stars
- 1.1k
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
### Name of the resource
AWS::Glue::Catalog
### Resource name
AWS::Glue::Catalog
### Description
AWS Glue supports creating catalogs via the [CreateCatalog API](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateCatalog.html), but there is no corresponding CloudFormation resource type.
A Glue Catalog is a top-level container in the AWS Glue Data Catalog, distinct from `AWS::Glue::Connection` (which stores connectivity details) and `AWS::Glue::Database` (which lives inside a catalog). The catalog has its own lifecycle, permissions configuration, and federated source bindings that cannot be managed through any existing CloudFormation resource.
**Use cases blocked by this gap:**
1. **S3 Tables integration** — Integrating S3 table buckets with AWS analytics services (Athena, EMR, Redshift) requires creating an `s3tablescatalog` catalog that references the system-managed `aws:s3tables` connection. This is documented in the [S3 Tables integration guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html). There is no user-created `AWS::Glue::Connection` involved in this flow.
2. **Redshift federated catalogs** — Connecting the Glue Data Catalog to Redshift databases for cross-engine queries via Athena/EMR requires creating a catalog with `TargetRedshiftCatalog` or a federated catalog binding.
3. **External data source federation** — Federating external sources (Snowflake, Databricks Unity Catalog, on-prem databases) into the Data Catalog requires creating a catalog with a `FederatedCatalog` binding. See [Federating into external data sources](https://docs.aws.amazon.com/lake-formation/latest/dg/federated-catalog-data-connection.html).
4. **Catalog-level permissions and configuration** — Properties like `CreateDatabaseDefaultPermissions`, `CreateTableDefaultPermissions`, `AllowFullTableExternalDataAccess`, and `CatalogProperties` are only configurable on the catalog resource and have no equivalent in any existing CloudFormation resource type.
**Why existing resources don't cover this:**
- `AWS::Glue::Connection` manages connectivity details (JDBC URLs, credentials, VPC settings). A catalog *references* a connection but is a separate resource with its own properties and lifecycle.
- `AWS::Glue::Database` lives *inside* a catalog and cannot configure catalog-level settings.
This was identified as a gap in [aws/aws-cdk#35019](https://github.com/aws/aws-cdk/issues/35019) (20+ upvotes, p1). CDK cannot generate an L1 construct for this resource until CloudFormation adds support.
### Other Details
Related APIs that should map to resource properties:
- [CreateCatalog](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateCatalog.html)
- [UpdateCatalog](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateCatalog.html)
- [DeleteCatalog](https://docs.aws.amazon.com/glue/latest/webapi/API_DeleteCatalog.html)
- [GetCatalog](https://docs.aws.amazon.com/glue/latest/webapi/API_GetCatalog.html)
- [Catalog object reference](https://docs.aws.amazon.com/glue/latest/webapi/API_Catalog.html)
Contributor guide
Research direction
Start by reading the linked CreateCatalog, UpdateCatalog, DeleteCatalog, GetCatalog, and Catalog API documentation, then compare the requested catalog properties with AWS::Glue::Connection and AWS::Glue::Database. Done means CloudFormation supports the AWS::Glue::Catalog resource with lifecycle operations and the catalog-level, federated, and permission properties described here.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws
- Domain
- cloud, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 20/100