Skip to content

create_dimension

create_dimension(
    name: DimensionName,
    type: DimensionType,
    string_values: DimensionStringValues,
    client_request_token: ClientRequestToken,
    *,
    config_overrides: Optional[IoTClientConfig] = None,
    tags: Optional[TagList] = None,
) -> CreateDimensionResponse

The IoT Device Defender detect feature will no longer be available to new customers starting August 31, 2026. If you would like to use the detect feature, sign up prior to August 31, 2026. To learn about alternatives to IoT Device Defender detect, see IoT Device Defender detect feature availability change in the IoT Device Defender Developer Guide. There is no change to IoT Device Defender audit availability.

Create a dimension that you can use to limit the scope of a metric used in a security profile for IoT Device Defender. For example, using a TOPIC_FILTER dimension, you can narrow down the scope of the metric only to MQTT topics whose name match the pattern specified in the dimension.

Requires permission to access the CreateDimension action.

Parameters:

  • name (DimensionName) –

    A unique identifier for the dimension. Choose something that describes the type and value to make it easy to remember what it does.

  • type (DimensionType) –

    Specifies the type of dimension. Supported types: TOPIC_FILTER.

  • string_values (DimensionStringValues) –

    Specifies the value or list of values for the dimension. For TOPIC_FILTER dimensions, this is a pattern used to match the MQTT topic (for example, "admin/#").

  • tags (Optional[TagList], default: None ) –

    Metadata that can be used to manage the dimension.

  • client_request_token (ClientRequestToken) –

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

Raises:

Source code in docs_src/capo_iot/_services/io_t.py
def create_dimension(
    self,
    name: "capo_iot.types.dimension_name.DimensionName",
    type: "capo_iot.types.dimension_type.DimensionType",
    string_values: "capo_iot.types.dimension_string_values.DimensionStringValues",
    client_request_token: "capo_iot.types.client_request_token.ClientRequestToken",
    *,
    config_overrides: Optional[IoTClientConfig] = None,
    tags: Optional["capo_iot.types.tag_list.TagList"] = None,
) -> "capo_iot.types.create_dimension_response.CreateDimensionResponse":
    """<note> <p>The IoT Device Defender detect feature will no longer be available to new customers starting August 31, 2026. If you would like to use the detect feature, sign up prior to August 31, 2026. To learn about alternatives to IoT Device Defender detect, see IoT Device Defender detect feature availability change in the IoT Device Defender Developer Guide. There is no change to IoT Device Defender audit availability.</p> </note> <p>Create a dimension that you can use to limit the scope of a metric used in a security profile for IoT Device Defender. For example, using a <code>TOPIC_FILTER</code> dimension, you can narrow down the scope of the metric only to MQTT topics whose name match the pattern specified in the dimension.</p> <p>Requires permission to access the <a href="https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions">CreateDimension</a> action.</p>

    Args:
        name: <p>A unique identifier for the dimension. Choose something that describes the type and value to make it easy to remember what it does.</p>
        type: <p>Specifies the type of dimension. Supported types: <code>TOPIC_FILTER.</code> </p>
        string_values: <p>Specifies the value or list of values for the dimension. For <code>TOPIC_FILTER</code> dimensions, this is a pattern used to match the MQTT topic (for example, "admin/#").</p>
        tags: <p>Metadata that can be used to manage the dimension.</p>
        client_request_token: <p>Each dimension must have a unique client request token. If you try to create a new dimension with the same token as a dimension that already exists, an exception occurs. If you omit this value, Amazon Web Services SDKs will automatically generate a unique client request.</p>

    Raises:
        capo_iot.errors.internal_failure_exception.InternalFailureException: <p>An unexpected error has occurred.</p>
        capo_iot.errors.invalid_request_exception.InvalidRequestException: <p>The request is not valid.</p>
        capo_iot.errors.limit_exceeded_exception.LimitExceededException: <p>A limit has been exceeded.</p>
        capo_iot.errors.resource_already_exists_exception.ResourceAlreadyExistsException: <p>The resource already exists.</p>
        capo_iot.errors.throttling_exception.ThrottlingException: <p>The rate exceeds the limit.</p>
        capo_iot.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    def _handler(
        req: "OperationRequest[capo_iot.types.create_dimension_request.CreateDimensionRequest]",
    ) -> OperationResponse[
        "capo_iot.types.create_dimension_response.CreateDimensionResponse"
    ]:
        import capo_iot._operations.aws_iot_service.create_dimension

        output, http_response = (
            capo_iot._operations.aws_iot_service.create_dimension.create_dimension(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("CreateDimension")
    )
    input_: capo_iot.types.create_dimension_request.CreateDimensionRequest = {
        "name": name,
        "type": type,
        "string_values": string_values,
        "client_request_token": client_request_token,
    }
    if tags is not None:
        input_["tags"] = tags

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output