in src/main/java/com/amazonaws/partners/saasfactory/metering/aggregation/StripeBillingPublish.java [206:252]
private void markAggregationRecordAsSubmitted(AggregationEntry aggregationEntry) {
// Update the attribute that marks an item as submitted
Map<String, AttributeValue> aggregationEntryKey = new HashMap<>();
AttributeValue tenantIDValue = AttributeValue.builder()
.s(aggregationEntry.getTenantID())
.build();
aggregationEntryKey.put(PRIMARY_KEY_NAME, tenantIDValue);
AttributeValue aggregationStringValue = AttributeValue.builder()
.s(formatAggregationEntry(aggregationEntry.getPeriodStart().toEpochMilli()))
.build();
aggregationEntryKey.put(SORT_KEY_NAME, aggregationStringValue);
Map<String, String> expressionAttributeNames = new HashMap<>();
expressionAttributeNames.put(SUBMITTED_KEY_EXPRESSION_NAME, SUBMITTED_KEY_ATTRIBUTE_NAME);
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
AttributeValue keySubmittedValue = AttributeValue.builder()
.bool(true)
.build();
expressionAttributeValues.put(KEY_SUBMITTED_EXPRESSION_VALUE, keySubmittedValue);
String updateExpression = String.format("SET %s = %s",
SUBMITTED_KEY_EXPRESSION_NAME,
KEY_SUBMITTED_EXPRESSION_VALUE);
UpdateItemRequest updateRequest = UpdateItemRequest.builder()
.tableName(this.tableConfig.getTableName())
.key(aggregationEntryKey)
.updateExpression(updateExpression)
.expressionAttributeNames(expressionAttributeNames)
.expressionAttributeValues(expressionAttributeValues)
.build();
try {
ddb.updateItem(updateRequest);
} catch (ResourceNotFoundException|InternalServerErrorException|TransactionCanceledException e) {
this.logger.error(e.getMessage());
}
String aggregationEntryString = formatAggregationEntry(aggregationEntry.getPeriodStart().toEpochMilli());
this.logger.info("Marked aggregation record {} for tenant {} as published",
aggregationEntry.getTenantID(),
aggregationEntryString
);
}