Почему мои временные учетные данные AWS из пула удостоверений неавторизованы?

#amazon-web-services #sdk #amazon-cognito #aws-userpools

#amazon-web-services #sdk #amazon-cognito #aws-пользовательские бассейны

Вопрос:

У меня есть пул удостоверений, который имеет роль аутентификации. Одна из политик для этой роли заключается в предоставлении полного доступа по вызову к конечным точкам шлюза API. Когда я создаю временные учетные данные с помощью AWS.config.credentials.get() , я создаю экземпляр клиента API Gateway следующим образом.

 AWS.config.region = 'us-east-1';
var newClientCredentials = {
                accessKey: accessKey,
                secretKey: secretKey
            };

apiClient = apigClientFactory.newClient(newClientCredentials);
apiClient.myendpointPost({}, postRequest, requestParams).then(function(result) {console.log(result)});
  

Я дважды проверил, что они установлены accessKey и secretKey . Когда я совершаю вызов с помощью apiClient своей конечной точки, я получаю unauthorized ответ от шлюза.

Мои вопросы:

  • Есть ли способ проверить, что временные учетные данные ( accessKey и secretKey ) относятся к соответствующей роли, прошедшей проверку подлинности?
  • Возможно ли выяснить, почему API Gateway отклоняет эти учетные данные (возможно, что-то, что я могу зарегистрировать в CloudWatch)?

Комментарии:

1. вы должны передать токен сеанса вместе с ключом доступа и секретным ключом

Ответ №1:

Как указал Ninad в комментариях, я забыл передать в сеансе также ключи. Однако один ключевой шаг, который я пропустил, заключался в том, что для авторизации на конечной точке, к которой я обращался, должно было быть установлено значение AWS_IAM . Ранее я установил для него значение Cognito и указал на пул пользователей, что было неверно.