aws-cloudformation / aws-cloudformation/cloudformation-coverage-roadmap

[AWS::Glue::Database] - Auto generated database name is not compliant with Iceberg database name

Open
#2,382 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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::Database

### Resource name

_No response_

### Description

Hi, when I try to create a Kinesis Firehose stream with destination to glue Iceberg table in a database with its name auto-generated by CFn, it throws the below validation error.

>4:23:39 PM | CREATE_FAILED | AWS::KinesisFirehose::DeliveryStream | IcebergDeliveryStreamWithCatalogA845649F
2 validation errors detected: Value at 'icebergDestinationConfiguration.destinationTableConfigurationList.1.member.destinationTableName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9\.\_]+; Value at 'icebergDestinationConfiguration.destinationTableConfigurationList.1.member.destinationDatabaseName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9\.\_]+ (Service: Firehose, Status Code: 400, Request ID: ...) (SDK Attempt Count: 1)

The generated name contains `-` (e.g. `icebergdatabase-shokfev3ftjq`), which is not an expected pattern in a iceberg destination database (`/[a-zA-Z0-9\.\_]+/`).

It'd be great if the generated name does not contain hyphens.

Example CFn template (extracted)

```json

"IcebergDatabase": {
"Type": "AWS::Glue::Database",
"Properties": {
"CatalogId": {
"Ref": "AWS::AccountId"
},
"DatabaseInput": {
"Description": "Database for Iceberg tables",
}
}
},
"IcebergDeliveryStreamWithCatalogA845649F": {
"Type": "AWS::KinesisFirehose::DeliveryStream",
"Properties": {
"DeliveryStreamType": "DirectPut",
"IcebergDestinationConfiguration": {
"CatalogConfiguration": {
"CatalogArn": {
"Fn::Join": [
"",
[
"arn:aws:glue:",
{
"Ref": "AWS::Region"
},
":",
{
"Ref": "AWS::AccountId"
},
":catalog"
]
]
}
},
"DestinationTableConfigurationList": [
{
"DestinationDatabaseName": {
"Ref": "IcebergDatabase"
},
"DestinationTableName": {
"Ref": "IcebergTable"
},
"UniqueKeys": [
"id"
]
}
],
"RoleARN": {
"Fn::GetAtt": [
"IcebergDeliveryStreamWithCatalogIcebergDestinationRoleA786FC31",
"Arn"
]
},
"S3Configuration": {
"BucketARN": {
"Fn::GetAtt": [
"IcebergBucket89DD3FA6",
"Arn"
]
},
"RoleARN": {
"Fn::GetAtt": [
"IcebergDeliveryStreamWithCatalogIcebergDestinationRoleA786FC31",
"Arn"
]
}
}
}
}
},
```

### Other Details

_No response_

Contributor guide

Open the contributing guide

Research direction

Start with the extracted CloudFormation template, especially the AWS::Glue::Database resource and its Ref used by the Kinesis Firehose Iceberg destination. Reproduce the deployment and inspect how the auto-generated database name is formed; done means the generated name satisfies the Iceberg destination pattern without hyphens.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws
Domain
cloud
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.