[ aws . iot ]



Use this API to define a Custom Metric published by your devices to Device Defender.

Requires permission to access the CreateCustomMetric action.

See also: AWS API Documentation

See ‘aws help’ for descriptions of global parameters.


--metric-name <value>
[--display-name <value>]
--metric-type <value>
[--tags <value>]
[--client-request-token <value>]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]


--metric-name (string)

The name of the custom metric. This will be used in the metric report submitted from the device/thing. Shouldn’t begin with aws: . Cannot be updated once defined.

--display-name (string)

Field represents a friendly name in the console for the custom metric; it doesn’t have to be unique. Don’t use this name as the metric identifier in the device metric report. Can be updated once defined.

--metric-type (string)

The type of the custom metric. Types include string-list , ip-address-list , number-list , and number .

Possible values:

  • string-list

  • ip-address-list

  • number-list

  • number

--tags (list)

Metadata that can be used to manage the custom metric.


A set of key/value pairs that are used to manage the resource.

Key -> (string)

The tag’s key.

Value -> (string)

The tag’s value.

Shorthand Syntax:

Key=string,Value=string ...

JSON Syntax:

    "Key": "string",
    "Value": "string"

--client-request-token (string)

Each custom metric must have a unique client request token. If you try to create a new custom metric that already exists with a different token, an exception occurs. If you omit this value, Amazon Web Services SDKs will automatically generate a unique client request.

--cli-input-json | --cli-input-yaml (string) Reads arguments from the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, those values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally. This may not be specified along with --cli-input-yaml.

--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. Similarly, if provided yaml-input it will print a sample input YAML that can be used with --cli-input-yaml. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.

See ‘aws help’ for descriptions of global parameters.


To create a custom metric published by your devices to Device Defender

The following create-custom-metric example creates a custom metric that measures battery percentage.

aws iot create-custom-metric \
    --metric-name "batteryPercentage" \
    --metric-type "number" \
    --display-name "Remaining battery percentage." \
    --region us-east-1 \
    --client-request-token "02ccb92b-33e8-4dfa-a0c1-35b181ed26b0"


    "metricName": "batteryPercentage",
    "metricArn": "arn:aws:iot:us-east-1:1234564789012:custommetric/batteryPercentage"

For more information, see Custom metrics in the AWS IoT Core Developer Guide.


metricName -> (string)

The name of the custom metric to be used in the metric report.

metricArn -> (string)

The Amazon Resource Number (ARN) of the custom metric, e.g. ``arn:aws-partition :iot:region :accountId :custommetric/metricName ``