BatchCreateRumMetricDefinitions - CloudWatch RUM


Specifies the extended metrics and custom metrics that you want a CloudWatch RUM app monitor to send to a destination. Valid destinations include CloudWatch and Evidently.

By default, RUM app monitors send some metrics to CloudWatch. These default metrics are listed in CloudWatch metrics that you can collect with CloudWatch RUM.

In addition to these default metrics, you can choose to send extended metrics, custom metrics, or both.

  • Extended metrics let you send metrics with additional dimensions that aren't included in the default metrics. You can also send extended metrics to both Evidently and CloudWatch. The valid dimension names for the additional dimensions for extended metrics are BrowserName, CountryCode, DeviceType, FileType, OSName, and PageId. For more information, see Extended metrics that you can send to CloudWatch and CloudWatch Evidently.

  • Custom metrics are metrics that you define. You can send custom metrics to CloudWatch. CloudWatch Evidently, or both. With custom metrics, you can use any metric name and namespace. To derive the metrics, you can use any custom events, built-in events, custom attributes, or default attributes.

    You can't send custom metrics to the AWS/RUM namespace. You must send custom metrics to a custom namespace that you define. The namespace that you use can't start with AWS/. CloudWatch RUM prepends RUM/CustomMetrics/ to the custom namespace that you define, so the final namespace for your metrics in CloudWatch is RUM/CustomMetrics/your-custom-namespace .

The maximum number of metric definitions that you can specify in one BatchCreateRumMetricDefinitions operation is 200.

The maximum number of metric definitions that one destination can contain is 2000.

Extended metrics sent to CloudWatch and RUM custom metrics are charged as CloudWatch custom metrics. Each combination of additional dimension name and dimension value counts as a custom metric. For more information, see Amazon CloudWatch Pricing.

You must have already created a destination for the metrics before you send them. For more information, see PutRumMetricsDestination.

If some metric definitions specified in a BatchCreateRumMetricDefinitions operations are not valid, those metric definitions fail and return errors, but all valid metric definitions in the same operation still succeed.

Request Syntax

POST /rummetrics/AppMonitorName/metrics HTTP/1.1 Content-type: application/json { "Destination": "string", "DestinationArn": "string", "MetricDefinitions": [ { "DimensionKeys": { "string" : "string" }, "EventPattern": "string", "Name": "string", "Namespace": "string", "UnitLabel": "string", "ValueKey": "string" } ] }

URI Request Parameters

The request uses the following URI parameters.


The name of the CloudWatch RUM app monitor that is to send the metrics.

Length Constraints: Minimum length of 1. Maximum length of 255.

Pattern: ^(?!\.)[\.\-_#A-Za-z0-9]+$

Required: Yes

Request Body

The request accepts the following data in JSON format.


The destination to send the metrics to. Valid values are CloudWatch and Evidently. If you specify Evidently, you must also specify the Amazon Resource Name (ARN) of the CloudWatchEvidently experiment that will receive the metrics and an IAM role that has permission to write to the experiment.

Type: String

Valid Values: CloudWatch | Evidently

Required: Yes


This parameter is required if Destination is Evidently. If Destination is CloudWatch, do not use this parameter.

This parameter specifies the ARN of the Evidently experiment that is to receive the metrics. You must have already defined this experiment as a valid destination. For more information, see PutRumMetricsDestination.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 2048.

Pattern: arn:[^:]*:[^:]*:[^:]*:[^:]*:.*

Required: No


An array of structures which define the metrics that you want to send.

Type: Array of MetricDefinitionRequest objects

Required: Yes

Response Syntax

HTTP/1.1 200 Content-type: application/json { "Errors": [ { "ErrorCode": "string", "ErrorMessage": "string", "MetricDefinition": { "DimensionKeys": { "string" : "string" }, "EventPattern": "string", "Name": "string", "Namespace": "string", "UnitLabel": "string", "ValueKey": "string" } } ], "MetricDefinitions": [ { "DimensionKeys": { "string" : "string" }, "EventPattern": "string", "MetricDefinitionId": "string", "Name": "string", "Namespace": "string", "UnitLabel": "string", "ValueKey": "string" } ] }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.


An array of error objects, if the operation caused any errors.

Type: Array of BatchCreateRumMetricDefinitionsError objects


An array of structures that define the extended metrics.

Type: Array of MetricDefinition objects


For information about the errors that are common to all actions, see Common Errors.


You don't have sufficient permissions to perform this action.

HTTP Status Code: 403


This operation attempted to create a resource that already exists.

HTTP Status Code: 409


Internal service exception.

HTTP Status Code: 500


Resource not found.

HTTP Status Code: 404


This request exceeds a service quota.

HTTP Status Code: 402


The request was throttled because of quota limits.

HTTP Status Code: 429


One of the arguments for the request is not valid.

HTTP Status Code: 400



The following example creates extended metrics with dimensions Browser:Chrome, Browser:Safari, and CountryCode=US.

{ AppMonitorName: "app-monitor-name", Destination: "CloudWatch", MetricDefinitionId: "guid2", MetricDefinition: { Name: "NavigationToleratedTransaction", DimensionKeys: [{ Key: "metadata.browserName", Value: "BrowserName" },{ Key: "metadata.countryCode", Value: "CountryCode" }], EventPattern: '{ "event_type": [""], "metadata": { "browserName": [ "Chrome", "Safari" ], "countryCode": [ "US" ] }, "event_details": { "duration": [{ "numeric": [ ">=", 2000, "<", 8000 ] }] } }', UnitLabel: 'Count' } }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: