예제 #1
0
        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);
        }