我正在尝试找到一种正确的方法来刷新我从Cognito获得的AWS.config.credentials。我正在使用开发人员授权的身份,它工作正常。我获得了凭据,如果我执行refresh(),AWS.config.credentials.expireTime也会按预期更新。
凭据在一小时后过期,所以我想我可以使用setTimeout刷新凭据并根据凭证配置它.expireTime(我计算毫秒数)。
然而,似乎我必须更频繁地执行刷新。凭证在他们的时间之前保持超时。如果我将延迟减少到一个小得多的数量,setTimeout方法就可以正常工作,但我宁愿不要过度刷新。
这是真的,如果是这样,我多久需要这样做?每5分钟刷新一次似乎过度:/
重复刷新
function refreshAwsCredentials() {
clearTimeout(awsRenewalTimeout);
// perform credentials renewal
AwsService.refreshAwsCredentials()
.then( function () {
awsRenewalTimeout = setInterval(
function () {
refreshAwsCredentials();
}, AWS.config.credentials.expireTime.getTime() - new Date().getTime() - 300000
);
})
.catch( function (error) {
// checks error, normally it basically logs in, then refreshes
});
}
AwsService.refreshAwsCredentials()
if ( AWS.config.credentials.needsRefresh() ) {
AWS.config.credentials.refresh( function (error) {
if (error) {
// rejects promise with error message
}
else {
// resolves promise
}
});
}
答案 0 :(得分:1)
我终于发现我检查了auth错误,我太具体了。我检查了登录,而不是凭据已经超时。现在我在事情失败时尝试登录,并且在需要时现在解决了凭证超时。