【发布时间】:2021-03-13 07:30:08
【问题描述】:
场景:
我在 Web 应用程序中嵌入了一个 QuickSight 仪表板,该仪表板显示正确。
此仪表板(仪表板 A)包含链接到单独仪表板(仪表板 B)的 URL 操作。
我使用 Chrome 工具获取仪表板 B 的嵌入 URL,并将其配置为分析中的 URL 操作:
https://eu-west-1.quicksight.aws.amazon.com/embed/yyyyyyyyyyyYYYYYYYYYYYyyyy/dashboards/xxxxxxx-xxxx-xxxx-xxxxxxxxxx
现在,当在嵌入式仪表板 A 上单击 URL 操作时,它会正确链接到仪表板 B。
但是,如果另一个用户访问同一个嵌入式仪表板 A 并单击该链接,则会导致
We can't display this page (Not authorized).
第一个参数yyyyyyyyyyyYYYYYYYYYYYyyyy 似乎是用户特定的,因此仪表板 B 的 URL 操作不能像这样硬编码。
在嵌入式 QuickSight 仪表板之间进行链接的正确方法是什么。 URL Actions 是可行的方法,还是需要替代方法?
解决方案
URL 操作的“嵌入令牌”(yyyyyyyyyyyYYYYYYYYYYYyyyy) 必须从客户端嵌入脚本作为参数传递。可以通过从 Dashboard A 解析会话 URL 来检索要传递的值。
const embed = () => {
const options = {
url: props.sessionUrl,
...
parameters: {
embedToken: props.sessionUrl.split('/')[4]
},
...
};
QuickSightEmbedding.embedDashboard(options);
};
然后在 QuickSight 中,该参数可用于形成 URL 操作的 URL,如下所示。 (确保将 embedToken 添加为 string 作为 Quicksight 分析中的参数)。
https://eu-west-1.quicksight.aws.amazon.com/embed/<<$embedToken>>/dashboards/xxxxxxx-xxxx-xxxx-xxxxxxxxxx
嵌入式仪表板 A 然后在任何用户查看时正确链接到嵌入式仪表板 B。
【问题讨论】: