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

[AWS::QuickSight::Dashboard] - [Coverage] - Support ControlTitleFormatText in filter controls

Open
#2,545 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
1.1k
Forks
62
PR merge metrics
No merged PRs in 30d

Description

### Name of the resource

AWS::QuickSight::Dashboard

### Description

Please add CloudFormation support for the QuickSight
`ControlTitleFormatText` property on filter controls, including
`FilterDropDownControl`, and align the legacy `Title` validation with the
QuickSight API where appropriate.

The QuickSight API currently supports `ControlTitleFormatText` as a tagged
union containing either `PlainText` or `RichText`. QuickSight authors can
create controls whose visible title is stored in this property.

However, an Asset Bundle export generated by QuickSight itself with
`ExportFormat=CLOUDFORMATION_JSON` can contain a dropdown definition like this:

```json
{
"Dropdown": {
"FilterControlId": "example-control-id",
"SourceFilterId": "example-filter-id",
"Title": "",
"Type": "MULTI_SELECT",
"ControlTitleFormatText": {
"RichText": "Status"
}
}
}
```

Deploying that exported template as `AWS::QuickSight::Dashboard` fails
CloudFormation resource validation with both of these errors:

```text
#/Definition/Sheets/.../FilterControls/.../Dropdown:
extraneous key [ControlTitleFormatText] is not permitted

#/Definition/Sheets/.../FilterControls/.../Dropdown/Title:
expected minLength: 1, actual: 0
```

This creates a compatibility gap where QuickSight can export a CloudFormation
template that the CloudFormation QuickSight resource provider cannot deploy
without a custom normalization step.

#### Expected behavior

- `AWS::QuickSight::Dashboard` accepts `ControlTitleFormatText` on dropdown and
other filter control types where the QuickSight API supports it.
- Both `PlainText` and `RichText` variants are supported consistently with the
QuickSight API.
- A CloudFormation Asset Bundle export produced by QuickSight can be deployed
without removing the property or converting the title manually.
- Existing non-empty legacy `Title` values continue to work.

#### Steps to reproduce

1. In a QuickSight analysis, add a dropdown filter control.
2. Configure its title using the current title formatting UI.
3. Publish the analysis as a dashboard.
4. Start an Asset Bundle export for the dashboard using
`CLOUDFORMATION_JSON`.
5. Deploy the exported `AWS::QuickSight::Dashboard` template with
CloudFormation.
6. Observe the property validation failure above.

The issue was reproduced in `eu-west-1`.

### Other Details

QuickSight API documentation showing `ControlTitleFormatText` on
`FilterDropDownControl`:
https://docs.aws.amazon.com/quicksight/latest/APIReference/API_FilterDropDownControl.html

QuickSight API definition of `ControlTitleFormatText`:
https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ControlTitleFormatText.html

Current CloudFormation `FilterDropDownControl` documentation, where the
property is absent and `Title` is required with minimum length 1:
https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-quicksight-dashboard-filterdropdowncontrol.html

The corresponding CloudFormation property schemas for
`AWS::QuickSight::Analysis` and `AWS::QuickSight::Template` may need the same
update because these resources share QuickSight definition structures.

Contributor guide

Open the contributing guide

Research direction

Start by locating the CloudFormation schemas for AWS::QuickSight::Dashboard filter controls, then compare FilterDropDownControl with the QuickSight API documentation for ControlTitleFormatText. Check the corresponding AWS::QuickSight::Analysis and AWS::QuickSight::Template schemas as well. Done means exported CLOUDFORMATION_JSON definitions accept PlainText and RichText variants while existing non-empty Title values remain valid.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws
Domain
cloud, infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.