elastic / elastic/integrations
[AWS]: Dashboard navigation links (markdown & Vega hexmap) don't respect Kibana Spaces / break on "Copy to Space"
- Dominant language
- Handlebars
- Stars
- 333
- Forks
- 647
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 209
Description
### Integration Name
AWS [packages/aws]
> Note: this is a cross-package bug. The same pattern also affects `packages/amazon_security_lake`, `packages/kubernetes`, and the AWS OTel asset packages `aws_ec2_otel`, `aws_ecs_otel`, `aws_elb_metrics_otel`, `aws_lambda_otel`, `aws_rds_otel`, `aws_sqs_otel`. Filing one tracking issue against AWS since the dropdown accepts a single package.
### Dataset Name
N/A (Kibana dashboard assets)
### Integration Version
All current versions (reproduced on `main`)
### Agent Version
N/A (asset-only issue, independent of agent version)
### Agent Output Type
elasticsearch
### Elasticsearch Version
8.x and Serverless (Kibana Spaces behavior)
### OS Version and Architecture
N/A
### Software/API Version
N/A
### Error Message
HTTP 404 (link resolves to a non-existent / default-space object)
### What did you do?
Several AWS and Kubernetes dashboards navigate between sibling dashboards using **hardcoded dashboard IDs embedded in URL strings** rather than Kibana saved-object references. Two mechanisms are used:
1. **Markdown navigation panels** — e.g. `[Overview](/app/dashboards#/view/aws-…)` or `[Overview](#/view/aws-…)`.
2. **Vega `href`** in the newer AWS OTel "hexmap" visualizations — e.g. `"/app/dashboards#/view/aws_ec2_otel-45f45575-…"` and `"/app/discover#/?…dataViewId:'metrics-*'…"`.
Reproduction (markdown case):
1. Install the **AWS** integration in the Default space.
2. Open **[Logs AWS] GuardDuty Findings Overview** and confirm the "Navigation" links to the sibling GuardDuty dashboards work.
3. Stack Management → Saved Objects → search the dashboard → **Copy to Space** → select a new Space.
4. Switch to the new Space, open the copied dashboard, and click a navigation link.
Reproduction (hexmap case):
1. In a **non-default** Space, open the **AWS EC2 (OTel)** dashboard.
2. Click a hexagon → choose **Filter** or **Metrics**.
### What did you see?
- Markdown links open the **Default-space** object (or 404), because the hardcoded ID is not remapped during Copy to Space.
- Absolute `/app/...` links (GuardDuty, Network Firewall, Amazon Security Lake, all Vega hexmaps) additionally drop the `/s//` prefix, so they always target the Default space even for a normally-installed integration.
### What did you expect to see?
Navigation should respect the current Space and survive Copy to Space, the same way **Links panels** and **dashboard-to-dashboard drilldowns** do (they store saved-object references that Kibana remaps). `packages/kubernetes_otel` already does this correctly and is a good in-repo reference.
### Anything else?
Scan of AWS + Kubernetes packages (all hardcode a dashboard ID → all break on **Copy to Space**; "absolute" ones additionally break in a **non-default Space**):
| Package | Affected dashboards | Mechanism | Severity |
|---|---|---|---|
| `aws` | 7 (GuardDuty x3, Network Firewall x4) | markdown, **absolute** `/app/dashboards#/view/` | space + copy |
| `aws` | 16 (SecurityHub, Inspector, ELB/ALB/NLB, API Gateway) | markdown, **relative** `#/view/` | copy only |
| `aws` | 2 (`aws-67f8c833`, `aws-7ac8e1d0`) | already use **links panels** | OK |
| `aws_*_otel` | 6 (ec2, ecs, elb_metrics, lambda, rds, sqs) | **Vega `href`**, absolute + hardcoded id | space + copy (hard) |
| `amazon_security_lake` | 10 | markdown, **absolute** `/app/dashboards#/view/` (x10 each) | space + copy |
| `kubernetes` | 12 | markdown nav panel, **relative** `#/view/` (x12-13 each) | copy only |
| `kubernetes_otel` | 0 | already uses **links panels** | OK |
**Fix direction:**
- Markdown cases → convert to **Links panels** (reference-based), per #14002.
- **Vega hexmaps** → no reference-based fix exists for Vega `href`; needs a separate design decision (relative paths for Space-awareness at minimum, or rethinking the deep-link) and likely dashboard/Vega owner input.
**Related:** #12858, #14002, elastic/sdh-beats#7424
Contributor guide
Research direction
Review the affected dashboard assets in packages/aws and the listed AWS, Amazon Security Lake, and Kubernetes packages, comparing their navigation with packages/kubernetes_otel and #14002. Inventory the hardcoded markdown IDs and Vega hrefs, then clarify the Vega approach with the dashboard/Vega owners. Done means navigation respects the current Space and survives Copy to Space.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- elasticsearch
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100