aws-cloudformation / aws-cloudformation/cloudformation-coverage-roadmap
[AWS::Glue::Database] - Auto generated database name is not compliant with Iceberg database name
- 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
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