嵌入式 QuickSight 仪表板,对另一个仪表板执行 URL 操作

Embedded QuickSight dashboard with URL Action to another dashboard

场景:

我在 Web 应用程序中嵌入了 QuickSight 仪表板,该仪表板显示正确。

此仪表板(仪表板 A)包含一个 URL 操作,该操作 link 发送到单独的仪表板(仪表板 B)。

我使用 Chrome 工具为仪表板 B 抓取嵌入 URL 并将其配置为分析中的 URL 操作:

https://eu-west-1.quicksight.aws.amazon.com/embed/yyyyyyyyyyyYYYYYYYYYYYyyyy/dashboards/xxxxxxx-xxxx-xxxx-xxxxxxxxxx

现在,当在嵌入式仪表板 A 上单击 URL 操作时,它会正确地 link 发送到仪表板 B。

但是,如果另一个用户访问同一个嵌入式仪表板 A 并单击 link,则会导致

We can't display this page (Not authorized).

第一个参数 yyyyyyyyyyyYYYYYYYYYYYyyyy 似乎是用户特定的,因此仪表板 B 的 URL 操作不能像这样硬编码。

在嵌入式 QuickSight 仪表板之间 linking 的正确方法是什么。 URL 行动是可行的方法,还是需要其他方法?

解决方案

URL 操作的“嵌入令牌”(yyyyyyyyyyyYYYYYYYYYYYyyyy) 必须作为参数从客户端嵌入脚本传递。可以通过从仪表板 A.

解析会话 URL 来检索要传递的值
    const embed = () => {
        const options = {
            url: props.sessionUrl,
            ...
            parameters: {
                embedToken: props.sessionUrl.split('/')[4]
            },
            ...
        };
        QuickSightEmbedding.embedDashboard(options);
    };

然后在 QuickSight 中,参数可用于为 URL 操作形成 URL,如下所示。 (确保在 Quicksight 分析中添加 embedToken 作为 string 作为参数)。

https://eu-west-1.quicksight.aws.amazon.com/embed/<<$embedToken>>/dashboards/xxxxxxx-xxxx-xxxx-xxxxxxxxxx

嵌入式仪表板 A 然后在任何用户查看时正确 link 到嵌入式仪表板 B。

一种替代方法是在您的 Web 应用程序中分别为仪表板 A 和 B 生成嵌入 URL,并将仪表板 B 的嵌入 URL 作为仪表板 A 的外部参数传递。既然您可以在动作中使用参数 URL,应该可以。