protected long GetConsumedCapacityUnits(string table_name, string index_name, string metric_name, int look_back_minutes) { List <Dimension> dimensions = new List <Dimension> { new Dimension { Name = "TableName", Value = table_name } }; if (!string.IsNullOrWhiteSpace(index_name)) { dimensions.Add(new Dimension { Name = "GlobalSecondaryIndexName", Value = index_name }); } DateTime end_time = DateTime.UtcNow.AddMinutes(-5); DateTime start_time = end_time.AddMinutes(-look_back_minutes); AmazonCloudWatchClient amazon_cloud_watch_client = AWS.GetAmazonCloudWatchClient(); GetMetricStatisticsRequest get_metric_statistics_request = new GetMetricStatisticsRequest { Namespace = "AWS/DynamoDB", Dimensions = dimensions, MetricName = metric_name, StartTime = start_time, EndTime = end_time, Period = 300, Statistics = new List <string> { "Sum" } }; GetMetricStatisticsResponse get_metric_statistics_response = amazon_cloud_watch_client.GetMetricStatistics(get_metric_statistics_request); long consumed_capacity_units = 0; if (get_metric_statistics_response != null && get_metric_statistics_response.Datapoints.Any()) { double total_seconds = (end_time - start_time).TotalSeconds; double total_sum = get_metric_statistics_response.Datapoints.Sum(datapoint => datapoint.Sum); consumed_capacity_units = (long)Math.Ceiling(total_sum / total_seconds); } return(consumed_capacity_units); }