aws-sdk 403 Ошибка для предварительного запроса CORS OPTIONS к Quicksight API - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь зарегистрировать временного пользователя quicksight и создать URL-адрес для встраивания в мое приложение React. Тем не менее, при вызове API регистрации пользователя я получаю сообщение об ошибке 403 для запроса опций CORS preflight:

Доступ к XMLHttpRequest по адресу https://quicksight.ap -southeast-2.amazonaws.com / account / / пространства имен / default / users 'from origin' http://localhost:3000' заблокирован политикой CORS : Ответ на запрос предварительной проверки не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». "

Я также пытался использовать us-east-1 в качестве моего региона, но это также не помогло.

Пользователи входят в мое веб-приложение с учетными данными Cognito. У пула удостоверений есть связанная роль IAM, и к этой роли я прикрепил политику, дающую доступ для регистрации нового пользователя Quicksight и получения URL-адреса для встраивания. В настоящее время мое веб-приложение использует библиотеку aws-sdk, чтобы взять на себя роль через sts, а затем выполнить последующие вызовы quicksight.

Приложение 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 голосов
/ 26 мая 2019

Как уже упоминалось @sideshowbarker, вы не можете вызвать API Quicksight из своего веб-приложения.

Решение, которое я нашел, состояло в том, чтобы настроить Lambda для генерации URL-адреса для встраивания, учитывая имя пользователя и пароль Cognito.

Полную информацию о решении и пошаговое руководство можно найти здесь: https://github.com/aws-samples/amazon-quicksight-embedding-sample

...