尝试生成 EmbedUrlForRegisteredUser 时出现 CORS 错误

CORS error when try to generateEmbedUrlForRegisteredUser

我有一个 angular 应用程序使用 keycloak 进行身份验证。我正在尝试生成 URL 以嵌入快速查看仪表板,但是当我尝试执行方法 generateEmbedUrlForRegisteredUser.

时出现此 CORS 错误

我能够取回我的令牌,AssumeRoleWithWebIdentityRequest 并生成一个 AWS.credential。但是下一步,即生成 URL,在这个端点 https://quicksight.us-east-1.amazonaws.com/accounts/xxxxx/embed-url/registered-user.

中给我这个 CORS 错误

这是一个示例:

 const quicksightClient = this.aws.quickSight();
 const generateEmbedUrlForAnonymousUserParams = {
    AwsAccountId: 'xxxxx',
    onLifetimeInMinutes: 5,
    UserArn:
        'arn:aws:iam::xxx:user/xxxx',
    ExperienceConfiguration: {
        Dashboard: {
            InitialDashboardId: 'xxxxx',
        },
    },
};

quicksightClient.generateEmbedUrlForRegisteredUser(
    generateEmbedUrlForAnonymousUserParams,
    function (err, data) {
        ...
    }
);

我正在尝试按照以下步骤操作: https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-dashboards-for-everyone.html

我 运行 遇到了同样的问题,然后意识到文档告诉你原因:

Currently, you can use GetDashboardEmbedURL only from the server, not from the user's browser.

参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-quicksight/classes/getdashboardembedurlcommand.html

我在使用 RegisterUserCommand 时也遇到了 CORS 错误,所以看起来许多 QuickSight JS SDK 端点都启用了服务器端访问 (NodeJS),并且在浏览器中无法工作。

我认为假设 generateEmbedUrlForRegisteredUser 符合相同的标准是公平的,即使文档中没有指定也是如此。

我的方法是创建一个服务器端端点来生成仪表板 URL。如果您没有后端应用程序,也可以为此使用 lambda。