diff --git a/public/app/plugins/datasource/cloudwatch/datasource.js b/public/app/plugins/datasource/cloudwatch/datasource.js index c77e9f95bd6..a2e6469014d 100644 --- a/public/app/plugins/datasource/cloudwatch/datasource.js +++ b/public/app/plugins/datasource/cloudwatch/datasource.js @@ -58,7 +58,7 @@ function (angular, _, moment, dateMath) { var result = []; _.each(allResponse, function(response, index) { - var metrics = transformMetricData(response, options.targets[index]); + var metrics = transformMetricData(response, options.targets[index], options.scopedVars); result = result.concat(metrics); }); @@ -302,15 +302,21 @@ function (angular, _, moment, dateMath) { return this.defaultRegion; }; - function transformMetricData(md, options) { + function transformMetricData(md, options, scopedVars) { var aliasRegex = /\{\{(.+?)\}\}/g; var aliasPattern = options.alias || '{{metric}}_{{stat}}'; var aliasData = { - region: templateSrv.replace(options.region), - namespace: templateSrv.replace(options.namespace), - metric: templateSrv.replace(options.metricName), + region: templateSrv.replace(options.region, scopedVars), + namespace: templateSrv.replace(options.namespace, scopedVars), + metric: templateSrv.replace(options.metricName, scopedVars), }; - _.extend(aliasData, options.dimensions); + var aliasDimensions = {}; + _.each(_.keys(options.dimensions), function(origKey) { + var key = templateSrv.replace(origKey, scopedVars); + var value = templateSrv.replace(options.dimensions[origKey], scopedVars); + aliasDimensions[key] = value; + }); + _.extend(aliasData, aliasDimensions); var periodMs = options.period * 1000; return _.map(options.statistics, function(stat) {