Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自Java SDK的WAFStaleDataException,但相同的令牌适用于CLI_Java_Amazon Web Services_Aws Lambda_Amazon Waf - Fatal编程技术网

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

来自Java SDK的WAFStaleDataException,但相同的令牌适用于CLI,java,amazon-web-services,aws-lambda,amazon-waf,Java,Amazon Web Services,Aws Lambda,Amazon Waf,我的代码首先获取要使用的更改令牌 final AWSWAFRegional waf=AWSWAFRegionalClientBuilder.defaultClient(); 最后一个字符串changeToken=waf.getChangeToken(新的GetChangeTokenRequest()).toString() 然后,它使用令牌更新IPSet UpdateIPSetRequest UpdateIPSetRequest=newupdateipsetrequest(); updateIP

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

final AWSWAFRegional waf=AWSWAFRegionalClientBuilder.defaultClient();
最后一个字符串changeToken=waf.getChangeToken(新的GetChangeTokenRequest()).toString()

然后,它使用令牌更新IPSet

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

问题是,当我运行函数时,它返回

com.amazonaws.services.waf.model.WAFStaleDataException:输入令牌不再是当前令牌。(服务:AWSWAFRegional;状态代码:400;错误代码:wafstatedataexception;


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

问题在这条语句中

final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).toString();
使用toString()结果changeToken的形式为{changeToken:“xxxxxx”},其中“xxxxxx”是所需的更改标记,应该使用

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

问题就在这句话里

final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).toString();
使用toString()结果changeToken的形式为{changeToken:“xxxxxx”},其中“xxxxxx”是所需的更改标记,应该使用

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