来自 Java SDK 的 WAFStaleDataException,但相同的令牌适用于 CLI

WAFStaleDataException from Java SDK but the same token works with CLI

我的代码首先获取要使用的更改令牌

final AWSWAFRegional waf = AWSWAFRegionalClientBuilder.defaultClient(); final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).toString();

然后使用令牌更新 IPSet

UpdateIPSetRequest updateIPSetRequest = new UpdateIPSetRequest(); updateIPSetRequest.setChangeToken(changeToken); waf.updateIPSet(updateIPSetRequest);

问题是,当我 运行 函数时 returns

com.amazonaws.services.waf.model.WAFStaleDataException: The input token is no longer current. (Service: AWSWAFRegional; Status Code: 400; Error Code: WAFStaleDataException;

之后,当我从 AWS CLI 使用相同的令牌时,它可以工作,但代码无法使用它,因为它抛出了 WAFStaleDataException。对此的解决方案是什么?

这个语句有问题

final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).toString();

使用 toString() 结果 changeToken 的形式为 {ChangeToken: "xxxxxx"} 其中 "xxxxxx" 是必需的更改令牌,应该有使用

final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).getChangeToken();