Jede Amazon API hat ein eigenes Token, das Sie auf die nächste Anfrage einstellen müssen. Aber mit aws api log habe ich unendlich Schleife:Wie erhalten alle Log-Ereignisse in Amazon via Loop?
public class Some {
public static void main (String[] args) {
final GetLogEventsRequest request = new GetLogEventsRequest()
.withLogGroupName("myGroup")
.withLogStreamName("myStrean");
final AWSLogs awsLogs = AWSLogsClientBuilder.defaultClient();
Collection<OutputLogEvent> result = new ArrayList<>();
GetLogEventsResult response = null;
do {
response = awsLogs.getLogEvents(request);
result.addAll(response.getEvents());
request.withNextToken(response.getNextBackwardToken());
} while (response.getNextBackwardToken() != null);
}
}
Aus Dokumentation:
nextBackwardToken
Das Token für den nächsten Satz von Elementen in der Rückwärtsrichtung. Das Token läuft nach 24 Stunden ab. Dieses Token wird niemals null sein. Wenn Sie das Ende des Streams erreicht haben, wird es das gleiche Token kehren Sie in geben
So kann es wie LastEvaluatedKey nicht null sein, wenn Sie scan DynamoDB.
Map<String, AttributeValue> lastKeyEvaluated = null;
do {
ScanRequest scanRequest = new ScanRequest()
.withTableName("ProductCatalog")
.withLimit(10)
.withExclusiveStartKey(lastKeyEvaluated);
ScanResult result = client.scan(scanRequest);
for (Map<String, AttributeValue> item : result.getItems()){
printItem(item);
}
lastKeyEvaluated = result.getLastEvaluatedKey();
} while (lastKeyEvaluated != null);
So und was ich sollte an request.withNextToken
übergeben, wenn wir über log api ??? sprechen Und wenn nextBackwardToken
(und nextForwardToken
auch) kann nicht null sein - wie zu erkennen, dass ich die letzte Antwort von Amazon bekomme ???
Sie müssen sehen, ob die Token die gleichen sind; Wenn sie es sind, dann bist du am Ende des Streams. –
Das gleiche - Sie meinen Token von vorherigen und nächsten Antworten oder? – Cherry
Ja. Wenn sie gleich sind, dann sind Sie am Ende des Streams. –