DynamoDB扫描似乎没有任何作用



基本上,尝试扫描DynamoDB表以纠正数据问题(这就是为什么它是扫描(:

var tableName = dynamoDbMapperProvider.getTableName(DynamoSnapshot.class, address);
log("Starting re-encryption for table " + tableName);
int migratedSnapshotsCount = 0;
for (var snapshot : dynamoDBMapper.scan(DynamoSnapshot.class, snapshotScanExpression)) {
if (snapshot.getEncryptedKey() != null) {
try {
encryptionService.decrypt(
EnvelopeMessage.of(snapshot.getBinaryData(), snapshot.getEncryptedKey(), snapshot.getCmkId())
);
// decryption okay so just set Cmk to configured value as a side-effect...
log("Updating CmkId for " + snapshot.getRootId());
dynamoDBMapper.save(snapshot.withCmkId(cmkId));
} catch (EncryptDecryptException ex) {
if (ex.isKmsError()) {
// ... reencrypt and log...
migratedSnapshotsCount++;
}
}
}
}
log(
"Re-encrypt encrypted key process completed for table " + tableName + ", " + migratedSnapshotsCount +
" Snapshots migrated and re-encrypted."
);

这是在云中运行的,所以我无法在本地调试它。我希望至少有2条日志消息,但我们只得到每个循环之前的第一条,然后什么都没有,没有例外,什么都没有。这怎么可能呢?

默认情况下,扫描是延迟加载的。尝试将扫描设置为EAGER_LOADING,以便在执行时返回数据。

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapperConfig.PaginationLoadingStrategy.html

最新更新