向Quicksight API发出的CORS预检OPTIONS请求的aws-sdk 403错误

时间:2019-05-24 09:50:31

标签: amazon-web-services cors aws-sdk-js amazon-quicksight

我正在尝试注册一个临时的Quicksight用户,并生成一个嵌入网址以放入我的React App中。但是,当调用注册用户api时,我收到CORS预检OPTIONS请求的403错误:

  

从原点“ https://quicksight.ap-southeast-2.amazonaws.com/accounts/”对“ http://localhost:3000 / namespaces / default / users”处的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在所请求的资源上。“

我还尝试使用us-east-1作为我的区域,但这也失败了。

用户使用Cognito凭据登录到我的Web应用程序。身份池具有关联的IAM角色,并且我已对该角色附加了策略,以提供注册新的Quicksight用户并获取嵌入URL的权限。我的web应用程序当前使用aws-sdk库通过sts承担角色,然后进行后续的快速见解调用。

React应用托管在Amplify

  quicksightRegisterUser(data) {
    var params = {
                   AwsAccountId: 'QQQ',
                   Email: 'XXX',
                   IdentityType: 'IAM' ,
                   Namespace: 'default',
                   UserRole: "READER",
                   IamArn: 'arn:aws:iam::YYY:role/ZZZ',
                   SessionName: 'XXX',
                   UserName:'XXX'
               };

    var quicksight = new QuickSight();
    quicksight.registerUser(params, function (err, data1) {
      if (err) {
        console.log("err register user");
        console.log(err);
    } // an error occurred
      else {
          console.log("Register User1");
          console.log(data1)
      }
    })
  }

1 个答案:

答案 0 :(得分:0)

正如@sideshowbarker所述,您无法从Web应用程序调用Quicksight API。

我找到的解决方案是设置Lambda来生成嵌入URL,给定用户的Cognito用户名和密码。

该解决方案的完整详细信息和分步教程可以在以下位置找到: https://github.com/aws-samples/amazon-quicksight-embedding-sample