WAFStaleDataException из Java SDK, но тот же токен работает с 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);
Проблема в том, что когда я запускаю функцию, она возвращает
com.amazonaws.services.waf.model.WAFStaleDataException: The input token is no longer current. (Service: AWSWAFRegional; Status Code: 400; Error Code: WAFStaleDataException;
После этого, когда я использую тот же токен из интерфейса командной строки AWS, он работает, но код не смог его использовать, поскольку он вызвал исключение WAFStaleDataException. Какое разрешение для этого?
1 ответ
Проблема в этом утверждении
final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).toString();
использование toString() приводит к тому, что changeToken имеет вид {ChangeToken: "xxxxxx"}, где "xxxxxx" - требуемый токен изменения, должен был использоваться
final String changeToken = waf.getChangeToken(new GetChangeTokenRequest()).getChangeToken();