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();
Другие вопросы по тегам