Node.js 在开发环境中使用带有MFA和临时STS凭据的SQS

Node.js 在开发环境中使用带有MFA和临时STS凭据的SQS,node.js,aws-sdk,aws-sts,Node.js,Aws Sdk,Aws Sts,我试图使用node.js应用程序中受MFA保护的SQS队列 代码如下所示: var sts = new AWS.STS(), awsSerialNumber = process.env.AWS_MFA_SERIAL_NUMBER, awsTokenCode = process.env.AWS_MFA_TOKEN; sts.getSessionToken({ DurationSeconds: 13600, SerialNumber: awsSerialNumber

我试图使用node.js应用程序中受MFA保护的SQS队列

代码如下所示:

var sts = new AWS.STS(),
    awsSerialNumber = process.env.AWS_MFA_SERIAL_NUMBER,
    awsTokenCode = process.env.AWS_MFA_TOKEN;

sts.getSessionToken({
    DurationSeconds: 13600,
    SerialNumber: awsSerialNumber,
    TokenCode: awsTokenCode
}, function (err, data) {
    if (err) {
        console.log('STS error:', err, err.stack);
        return;
    }

    AWS.config.credentials = sts.credentialsFrom(data);

    sqs = new AWS.SQS();
});
所以我把这个过程称为

$ AWS_MFA_TOKEN=123456 npm start
但是,我得到了以下错误:

{ message: 'The security token included in the request is expired',
  code: 'ExpiredToken',
  time: ...,
  requestId: '...',
  statusCode: 403,
  retryable: true }
虽然代币是新鲜的


我还尝试了
AWS.config.update
传递
accessKeyId
secretAccessKey
sessionToken
。但是,代码甚至还没有达到这一点。

听起来令牌可能已经失去同步。您可以使用该令牌登录AWS控制台或其他AWS服务吗?@JohnRotenstein我可以在CLI中使用该令牌而不会出现问题。您可以尝试通过调用该令牌吗?使用aws sts获取会话令牌--序列号xx--令牌代码xx请参阅:@JohnRotenstein CLI工作正常。如果它通过CLI工作,并且您使用的是相同的序列和令牌代码,则问题出在代码的某个地方。尝试调用
getSessionToken
而不调用
SerialNumber
TokenCode
以查看函数调用是否有效。它应该返回会话的凭据,但不返回MFA。