如何在 Javascript aws-sdk 中使用 MFA?

How to use MFA in Javascript aws-sdk?

我有一个基础设施,在该基础设施中,基于角色的 AWS 登录需要来自 MS 身份验证器的 MFA,该身份验证器会在移动设备上弹出以接受或拒绝。通常在 CLI 上,我们使用 saml2aws,它会生成临时访问密钥和承担角色的秘密密钥。

我正在尝试在我的 nodejs 中使用 aws-sdk 并尝试验证凭据但没有收到任何弹出窗口并出现以下错误。

请建议实现此目的的方法。

const AWS = require('aws-sdk');

var eks = new AWS.EKS({ accessKeyId: "ABCDEFGHIJKLMNOPQRSTUVWXYZ", secretAccessKey : "gsdhjfkjbkbfvfkqbvfhvqhfvqhfv", region: "us-west-2"});
var params = { name: "testing" };
  
eks.describeCluster(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(data);           // successful response
});

执行以上代码后:我收到以下错误:

UnrecognizedClientException: The security token included in the request is invalid.
    at Object.extractError (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\protocol\json.js:52:27)
    at Request.extractError (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\protocol\rest_json.js:55:8)
    at Request.callListeners (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\request.js:688:14)
    at Request.transition (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (D:\Prashant\kubernetes-app\node_modules\aws-sdk\lib\request.js:690:12) {
  code: 'UnrecognizedClientException',
  time: 2020-11-03T22:36:19.516Z,
  requestId: '2e3486d0-3219-410c-8963-970958c5c14d',
  statusCode: 403,
  retryable: false,
  retryDelay: 91.55836550904752
}

此请求已完成。有点棘手但完成了。如果遇到此问题的其他人会告诉您解决方案,请发表评论。