すべてのamazon APIには、次のリクエストに設定する必要のある独自のトークンがあります。ドキュメントからどのようにループ経由でアマゾンのすべてのログイベントを取得できますか?
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);
}
}
:
nextBackwardToken
逆方向のアイテムの次のセットのためのトークンAWSは、APIをログにしかし、私は無限ループを得ました。トークンは24時間後に失効します。このトークンは決してnullにはなりません。あなたは、ストリームの終わりに達した場合、それはあなたが渡された同じトークンを返します
だから、LastEvaluatedKeyときscan DynamoDBのようなnullにすることはできません:。だから、
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);
とどのようなIログapiについて話したらrequest.withNextToken
に渡すべきですか?そしてもしnextBackwardToken
(そしてnextForwardToken
も)nullであることはできません - どのように私はアマゾンからの最後の応答を受け取ることを検出するか?
トークンが同じかどうかを確認する必要があります。彼らがそうであれば、あなたはストリームの終わりにいます。 –
同じ - あなたは前と次の回答のトークンを意味しますか? – Cherry
はい。彼らが同じであれば、ストリームの終わりにいます。 –