Node.js 在开发环境中使用带有MFA和临时STS凭据的SQS
我试图使用node.js应用程序中受MFA保护的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
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。