刷新AWS.config.credentials

时间:2016-05-12 07:20:03

标签: amazon-web-services timeout credentials amazon-cognito

我正在尝试找到一种正确的方法来刷新我从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
    }
  });
}

1 个答案:

答案 0 :(得分:1)

我终于发现我检查了auth错误,我太具体了。我检查了登录,而不是凭据已经超时。现在我在事情失败时尝试登录,并且在需要时现在解决了凭证超时。