{"id":26811697,"url":"https://github.com/launchbynttdata/tf-azurerm-module_primitive-iothub","last_synced_at":"2026-02-06T23:35:06.576Z","repository":{"id":284429493,"uuid":"938368793","full_name":"launchbynttdata/tf-azurerm-module_primitive-iothub","owner":"launchbynttdata","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-27T16:21:06.000Z","size":109,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-24T12:24:28.770Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/launchbynttdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-24T21:04:12.000Z","updated_at":"2025-03-27T16:20:04.000Z","dependencies_parsed_at":"2025-03-25T21:42:09.047Z","dependency_job_id":null,"html_url":"https://github.com/launchbynttdata/tf-azurerm-module_primitive-iothub","commit_stats":null,"previous_names":["launchbynttdata/tf-azurerm-module_primitive-iothub"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/launchbynttdata/tf-azurerm-module_primitive-iothub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-azurerm-module_primitive-iothub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-azurerm-module_primitive-iothub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-azurerm-module_primitive-iothub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-azurerm-module_primitive-iothub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/launchbynttdata","download_url":"https://codeload.github.com/launchbynttdata/tf-azurerm-module_primitive-iothub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/launchbynttdata%2Ftf-azurerm-module_primitive-iothub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29180520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T23:15:33.022Z","status":"ssl_error","status_checked_at":"2026-02-06T23:15:09.128Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-30T01:39:42.640Z","updated_at":"2026-02-06T23:35:06.558Z","avatar_url":"https://github.com/launchbynttdata.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tf-azurerm-module_primitive-iothub\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![License: CC BY-NC-ND 4.0](https://img.shields.io/badge/License-CC_BY--NC--ND_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-nd/4.0/)\n\n## Overview\n\nManages an Azure IoT Hub.\n\n## Pre-Commit hooks\n\n[.pre-commit-config.yaml](.pre-commit-config.yaml) file defines certain `pre-commit` hooks that are relevant to terraform, golang and common linting tasks. There are no custom hooks added.\n\n`commitlint` hook enforces commit message in certain format. The commit contains the following structural elements, to communicate intent to the consumers of your commit messages:\n\n- **fix**: a commit of the type `fix` patches a bug in your codebase (this correlates with PATCH in Semantic Versioning).\n- **feat**: a commit of the type `feat` introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning).\n- **BREAKING CHANGE**: a commit that has a footer `BREAKING CHANGE:`, or appends a `!` after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type.\nfooters other than BREAKING CHANGE: \u003cdescription\u003e may be provided and follow a convention similar to git trailer format.\n- **build**: a commit of the type `build` adds changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)\n- **chore**: a commit of the type `chore` adds changes that don't modify src or test files\n- **ci**: a commit of the type `ci` adds changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)\n- **docs**: a commit of the type `docs` adds documentation only changes\n- **perf**: a commit of the type `perf` adds code change that improves performance\n- **refactor**: a commit of the type `refactor` adds code change that neither fixes a bug nor adds a feature\n- **revert**: a commit of the type `revert` reverts a previous commit\n- **style**: a commit of the type `style` adds code changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)\n- **test**: a commit of the type `test` adds missing tests or correcting existing tests\n\nBase configuration used for this project is [commitlint-config-conventional (based on the Angular convention)](https://github.com/conventional-changelog/commitlint/tree/master/@commitlint/config-conventional#type-enum)\n\nIf you are a developer using vscode, [this](https://marketplace.visualstudio.com/items?itemName=joshbolduc.commitlint) plugin may be helpful.\n\n`detect-secrets-hook` prevents new secrets from being introduced into the baseline. TODO: INSERT DOC LINK ABOUT HOOKS\n\nIn order for `pre-commit` hooks to work properly\n\n- You need to have the pre-commit package manager installed. [Here](https://pre-commit.com/#install) are the installation instructions.\n- `pre-commit` would install all the hooks when commit message is added by default except for `commitlint` hook. `commitlint` hook would need to be installed manually using the command below\n\n```\npre-commit install --hook-type commit-msg\n```\n\n## To test the resource group module locally\n\n1. For development/enhancements to this module locally, you'll need to install all of its components. This is controlled by the `configure` target in the project's [`Makefile`](./Makefile). Before you can run `configure`, familiarize yourself with the variables in the `Makefile` and ensure they're pointing to the right places.\n\n```\nmake configure\n```\n\nThis adds in several files and directories that are ignored by `git`. They expose many new Make targets.\n\n2. _THIS STEP APPLIES ONLY TO MICROSOFT AZURE. IF YOU ARE USING A DIFFERENT PLATFORM PLEASE SKIP THIS STEP._ The first target you care about is `env`. This is the common interface for setting up environment variables. The values of the environment variables will be used to authenticate with cloud provider from local development workstation.\n\n`make configure` command will bring down `azure_env.sh` file on local workstation. Devloper would need to modify this file, replace the environment variable values with relevant values.\n\nThese environment variables are used by `terratest` integration suit.\n\nService principle used for authentication(value of ARM_CLIENT_ID) should have below privileges on resource group within the subscription.\n\n```\n\"Microsoft.Resources/subscriptions/resourceGroups/write\"\n\"Microsoft.Resources/subscriptions/resourceGroups/read\"\n\"Microsoft.Resources/subscriptions/resourceGroups/delete\"\n```\n\nThen run this make target to set the environment variables on developer workstation.\n\n```\nmake env\n```\n\n3. The first target you care about is `check`.\n\n**Pre-requisites**\nBefore running this target it is important to ensure that, developer has created files mentioned below on local workstation under root directory of git repository that contains code for primitives/segments. Note that these files are `azure` specific. If primitive/segment under development uses any other cloud provider than azure, this section may not be relevant.\n\n- A file named `provider.tf` with contents below\n\n```\nprovider \"azurerm\" {\n  features {}\n}\n```\n\n- A file named `terraform.tfvars` which contains key value pair of variables used.\n\nNote that since these files are added in `gitignore` they would not be checked in into primitive/segment's git repo.\n\nAfter creating these files, for running tests associated with the primitive/segment, run\n\n```\nmake check\n```\n\nIf `make check` target is successful, developer is good to commit the code to primitive/segment's git repo.\n\n`make check` target\n\n- runs `terraform commands` to `lint`,`validate` and `plan` terraform code.\n- runs `conftests`. `conftests` make sure `policy` checks are successful.\n- runs `terratest`. This is integration test suit.\n- runs `opa` tests\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | ~\u003e 1.0 |\n| \u003ca name=\"requirement_azurerm\"\u003e\u003c/a\u003e [azurerm](#requirement\\_azurerm) | ~\u003e 3.117 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_azurerm\"\u003e\u003c/a\u003e [azurerm](#provider\\_azurerm) | 3.117.1 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [azurerm_iothub.instance](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/iothub) | resource |\n| [azurerm_iothub_consumer_group.consumer_groups](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/iothub_consumer_group) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | (Required) Specifies the name of the IoT Hub. | `string` | n/a | yes |\n| \u003ca name=\"input_resource_group_name\"\u003e\u003c/a\u003e [resource\\_group\\_name](#input\\_resource\\_group\\_name) | (Required) The name of the resource group in which the the IoT Hub is created. | `string` | n/a | yes |\n| \u003ca name=\"input_location\"\u003e\u003c/a\u003e [location](#input\\_location) | (Required) Specifies the supported Azure location where the resource exists. | `string` | n/a | yes |\n| \u003ca name=\"input_local_authentication_enabled\"\u003e\u003c/a\u003e [local\\_authentication\\_enabled](#input\\_local\\_authentication\\_enabled) | (Optional) Boolean flag to specify whether or not local authentication is enabled or not. Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_event_hub_partition_count\"\u003e\u003c/a\u003e [event\\_hub\\_partition\\_count](#input\\_event\\_hub\\_partition\\_count) | (Optional) The number of device-to-cloud partitions used by backing event hubs. Must be between 2 and 128. Defaults to 4. | `number` | `4` | no |\n| \u003ca name=\"input_event_hub_retention_in_days\"\u003e\u003c/a\u003e [event\\_hub\\_retention\\_in\\_days](#input\\_event\\_hub\\_retention\\_in\\_days) | (Optional) The event hub retention to use in days. Must be between 1 and 7. Defaults to 1. | `number` | `1` | no |\n| \u003ca name=\"input_public_network_access_enabled\"\u003e\u003c/a\u003e [public\\_network\\_access\\_enabled](#input\\_public\\_network\\_access\\_enabled) | (Optional) Is the IotHub resource accessible from a public network? Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_min_tls_version\"\u003e\u003c/a\u003e [min\\_tls\\_version](#input\\_min\\_tls\\_version) | (Optional) Specifies the minimum TLS version to support for this hub. The only valid value is 1.2. Changing this forces a new resource to be created. | `string` | `null` | no |\n| \u003ca name=\"input_sku\"\u003e\u003c/a\u003e [sku](#input\\_sku) | (Required) The sku specified for the IoT Hub.\u003cbr/\u003e  object({\u003cbr/\u003e    name = (Required) The name of the sku. Possible values are B1, B2, B3, F1, S1, S2, and S3. Defaults to S1.\u003cbr/\u003e    capacity = (Required) The number of provisioned IoT Hub units. Defaults to 1.\u003cbr/\u003e  }) | \u003cpre\u003eobject({\u003cbr/\u003e    name     = string\u003cbr/\u003e    capacity = number\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"capacity\": 1,\u003cbr/\u003e  \"name\": \"S1\"\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_endpoints\"\u003e\u003c/a\u003e [endpoints](#input\\_endpoints) | (Optional) A map of endpoints and their respective properties.\"\u003cbr/\u003e    map(object({\u003cbr/\u003e      name (as map key)              = (Required) The name of the endpoint. The name must be unique across endpoint types. The following names are reserved: events, operationsMonitoringEvents, fileNotifications and $default.\u003cbr/\u003e      type                       = (Required) The type of the endpoint. Possible values are AzureIotHub.StorageContainer, AzureIotHub.ServiceBusQueue, AzureIotHub.ServiceBusTopic or AzureIotHub.EventHub.\u003cbr/\u003e      connection\\_string          = (Optional) The connection string for the endpoint. This attribute is mandatory and can only be specified when authentication\\_type is keyBased.\u003cbr/\u003e      authentication\\_type        = (Optional) The type used to authenticate against the endpoint. Possible values are keyBased and identityBased. Defaults to keyBased.\u003cbr/\u003e      identity\\_id                = (Optional) The ID of the User Managed Identity used to authenticate against the endpoint.\u003cbr/\u003e      endpoint\\_uri               = (Optional) URI of the Service Bus or Event Hubs Namespace endpoint. This attribute can only be specified and is mandatory when authentication\\_type is identityBased for endpoint type AzureIotHub.ServiceBusQueue, AzureIotHub.ServiceBusTopic or AzureIotHub.EventHub.\u003cbr/\u003e      entity\\_path                = (Optional) Name of the Service Bus Queue/Topic or Event Hub. This attribute can only be specified and is mandatory when authentication\\_type is identityBased for endpoint type AzureIotHub.ServiceBusQueue, AzureIotHub.ServiceBusTopic or AzureIotHub.EventHub.\u003cbr/\u003e      batch\\_frequency\\_in\\_seconds = (Optional) Time interval at which blobs are written to storage. Value should be between 60 and 720 seconds. Default value is 300 seconds. This attribute is applicable for endpoint type AzureIotHub.StorageContainer.\u003cbr/\u003e      max\\_chunk\\_size\\_in\\_bytes    = (Optional) Maximum number of bytes for each blob written to storage. Value should be between 10485760(10MB) and 524288000(500MB). Default value is 314572800(300MB). This attribute is applicable for endpoint type AzureIotHub.StorageContainer.\u003cbr/\u003e      container\\_name             = (Optional) The name of storage container in the storage account. This attribute is mandatory for endpoint type AzureIotHub.StorageContainer.\u003cbr/\u003e      encoding                   = (Optional) Encoding that is used to serialize messages to blobs. Supported values are Avro, AvroDeflate and JSON. Default value is Avro. This attribute is applicable for endpoint type AzureIotHub.StorageContainer. Changing this forces a new resource to be created.\u003cbr/\u003e      file\\_name\\_format           = (Optional) File name format for the blob. All parameters are mandatory but can be reordered. This attribute is applicable for endpoint type AzureIotHub.StorageContainer. Defaults to {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}.\u003cbr/\u003e      resource\\_group\\_name        = (Optional) The resource group in which the endpoint will be created.\u003cbr/\u003e    })) | \u003cpre\u003emap(object({\u003cbr/\u003e    type                       = string\u003cbr/\u003e    connection_string          = optional(string)\u003cbr/\u003e    authentication_type        = optional(string)\u003cbr/\u003e    identity_id                = optional(string)\u003cbr/\u003e    endpoint_uri               = optional(string)\u003cbr/\u003e    entity_path                = optional(string)\u003cbr/\u003e    batch_frequency_in_seconds = optional(number)\u003cbr/\u003e    max_chunk_size_in_bytes    = optional(number)\u003cbr/\u003e    container_name             = optional(string)\u003cbr/\u003e    encoding                   = optional(string)\u003cbr/\u003e    file_name_format           = optional(string)\u003cbr/\u003e    resource_group_name        = optional(string)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_fallback_route\"\u003e\u003c/a\u003e [fallback\\_route](#input\\_fallback\\_route) | (Optional) A map of fallback route properties. The routing rule that is evaluated as a catch-all route when no other routes match.\u003cbr/\u003e    object({\u003cbr/\u003e      source         = (Optional) The source that the routing rule is to be applied to. Possible values include: Invalid, DeviceMessages, TwinChangeEvents, DeviceLifecycleEvents, DeviceConnectionStateEvents, DeviceJobLifecycleEvents and DigitalTwinChangeEvents. Defaults to DeviceMessages.\u003cbr/\u003e      condition      = (Optional) The condition that is evaluated to apply the routing rule. Defaults to true. For grammar, see: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language.\u003cbr/\u003e      endpoint\\_names = (Optional) The endpoints to which messages that satisfy the condition are routed. Currently only 1 endpoint is allowed.\u003cbr/\u003e      enabled        = (Optional) Used to specify whether the fallback route is enabled.\u003cbr/\u003e    }) | \u003cpre\u003eobject({\u003cbr/\u003e    source         = optional(string)\u003cbr/\u003e    condition      = optional(string)\u003cbr/\u003e    endpoint_names = optional(list(string))\u003cbr/\u003e    enabled        = optional(bool)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_file_uploads\"\u003e\u003c/a\u003e [file\\_uploads](#input\\_file\\_uploads) | (Optional) A mapping of file upload properties.\u003cbr/\u003e    map(object({\u003cbr/\u003e      connection\\_string   = (Required) The connection string for the Azure Storage account to which files are uploaded.\u003cbr/\u003e      container\\_name      = (Required) The name of the root container where the files should be uploaded to. The container need not exist but should be creatable using the connection\\_string specified.\u003cbr/\u003e      authentication\\_type = (Optional) The type used to authenticate against the storage account. Possible values are keyBased and identityBased. Defaults to keyBased.\u003cbr/\u003e      identity\\_id         = (Optional) The ID of the User Managed Identity used to authenticate against the storage account.\u003cbr/\u003e      sas\\_ttl             = (Optional) The period of time for which the SAS URI generated by IoT Hub for file upload is valid, specified as an ISO 8601 timespan duration. This value must be between 1 minute and 24 hours. Defaults to PT1H.\u003cbr/\u003e      notifications       = (Optional) Used to specify whether file notifications are sent to IoT Hub on upload. Defaults to false.\u003cbr/\u003e      lock\\_duration       = (Optional) The lock duration for the file upload notifications queue, specified as an ISO 8601 timespan duration. This value must be between 5 and 300 seconds. Defaults to PT1M.\u003cbr/\u003e      default\\_ttl         = (Optional) The period of time for which a file upload notification message is available to consume before it expires, specified as an ISO 8601 timespan duration. This value must be between 1 minute and 48 hours. Defaults to PT1H.\u003cbr/\u003e      max\\_delivery\\_count  = (Optional) The number of times the IoT Hub attempts to deliver a file upload notification message. Defaults to 10.\u003cbr/\u003e    })) | \u003cpre\u003emap(object({\u003cbr/\u003e    connection_string   = string\u003cbr/\u003e    container_name      = string\u003cbr/\u003e    authentication_type = optional(string)\u003cbr/\u003e    identity_id         = optional(string)\u003cbr/\u003e    sas_ttl             = optional(string)\u003cbr/\u003e    notifications       = optional(bool)\u003cbr/\u003e    lock_duration       = optional(string)\u003cbr/\u003e    default_ttl         = optional(string)\u003cbr/\u003e    max_delivery_count  = optional(number)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_identity\"\u003e\u003c/a\u003e [identity](#input\\_identity) | (Optional) The identity configured for the IoT Hub.\u003cbr/\u003e    object({\u003cbr/\u003e      identity\\_type = (Optional) Specifies the type of Managed Service Identity configured on this IoT Hub.\u003cbr/\u003e        Possible values are `SystemAssigned`, `UserAssigned`, and `SystemAssigned, UserAssigned` (to enable both). Defaults to `SystemAssigned`.\"\u003cbr/\u003e      identity\\_ids  = (Optional) A list of User Assigned Managed Service Identity IDs to associate with the IoT Hub. Required if `identity_type` is set to `UserAssigned`.\u003cbr/\u003e    }) | \u003cpre\u003eobject({\u003cbr/\u003e    identity_type = string\u003cbr/\u003e    identity_ids  = optional(list(string))\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"identity_type\": \"SystemAssigned\"\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_network_rule_set\"\u003e\u003c/a\u003e [network\\_rule\\_set](#input\\_network\\_rule\\_set) | (Optional) An object for cloud-to-device messaging properties.\u003cbr/\u003e    object({\u003cbr/\u003e      default\\_action                     = (Optional) Default Action for Network Rule Set. Possible values are Deny, Allow. Defaults to Deny.\u003cbr/\u003e      apply\\_to\\_builtin\\_eventhub\\_endpoint = (Optional) Determines if Network Rule Set is also applied to the BuiltIn EventHub EndPoint of the IotHub. Defaults to false.\u003cbr/\u003e      ip\\_rules = optional(map(object({\u003cbr/\u003e        ip\\_rule\\_name   = (Required) The name of the IP rule.\u003cbr/\u003e        ip\\_rule\\_mask   = (Required) The IP address range in CIDR notation for the IP rule.\u003cbr/\u003e        ip\\_rule\\_action = (Optional) The desired action for requests captured by this rule. Possible values are Allow. Defaults to Allow.\u003cbr/\u003e      })))\u003cbr/\u003e    }) | \u003cpre\u003eobject({\u003cbr/\u003e    default_action                     = optional(string)\u003cbr/\u003e    apply_to_builtin_eventhub_endpoint = optional(bool)\u003cbr/\u003e    ip_rules = optional(map(object({\u003cbr/\u003e      ip_rule_name   = string\u003cbr/\u003e      ip_rule_mask   = string\u003cbr/\u003e      ip_rule_action = optional(string)\u003cbr/\u003e    })))\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_routes\"\u003e\u003c/a\u003e [routes](#input\\_routes) | (Optional) A map of routes and their respective properties\u003cbr/\u003e    object({\u003cbr/\u003e      name (as map key) = (Required) The name of the route.\u003cbr/\u003e      source            = (Required) The source that the routing rule is to be applied to, such as DeviceMessages. Possible values include: Invalid, DeviceMessages, TwinChangeEvents, DeviceLifecycleEvents, DeviceConnectionStateEvents, DeviceJobLifecycleEvents and DigitalTwinChangeEvents.\u003cbr/\u003e      endpoint\\_names    = (Required) The list of endpoints to which messages that satisfy the condition are routed.\u003cbr/\u003e      enabled           = (Required) Used to specify whether a route is enabled.\u003cbr/\u003e      condition         = (Optional) The condition that is evaluated to apply the routing rule. Defaults to true. For grammar, see: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language.\u003cbr/\u003e    }) | \u003cpre\u003emap(object({\u003cbr/\u003e    source         = string\u003cbr/\u003e    endpoint_names = list(string)\u003cbr/\u003e    enabled        = bool\u003cbr/\u003e    condition      = optional(string)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_enrichments\"\u003e\u003c/a\u003e [enrichments](#input\\_enrichments) | (Optional) A map of enrichments and their respective properties\u003cbr/\u003e    object({\u003cbr/\u003e      key (as map key) = (Required) The key of the enrichment.\u003cbr/\u003e      value            = (Required) The value of the enrichment. Value can be any static string, the name of the IoT Hub sending the message (use $iothubname) or information from the device twin (ex: $twin.tags.latitude)\u003cbr/\u003e      endpoint\\_names   = (Required) The list of endpoints which will be enriched.\u003cbr/\u003e    }) | \u003cpre\u003emap(object({\u003cbr/\u003e    value          = string\u003cbr/\u003e    endpoint_names = list(string)\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_cloud_to_device\"\u003e\u003c/a\u003e [cloud\\_to\\_device](#input\\_cloud\\_to\\_device) | (Optional) An object for cloud-to-device messaging properties.\u003cbr/\u003e    object({\u003cbr/\u003e      max\\_delivery\\_count = (Optional) The maximum delivery count for cloud-to-device per-device queues. This value must be between 1 and 100. Defaults to 10.\u003cbr/\u003e      default\\_ttl        = (Optional) The default time to live for cloud-to-device messages, specified as an ISO 8601 timespan duration. This value must be between 1 minute and 48 hours. Defaults to PT1H.\u003cbr/\u003e      feedback = object({\u003cbr/\u003e        time\\_to\\_live       = (Optional) The retention time for service-bound feedback messages, specified as an ISO 8601 timespan duration. This value must be between 1 minute and 48 hours. Defaults to PT1H.\u003cbr/\u003e        max\\_delivery\\_count = (Optional) The maximum delivery count for the feedback queue. This value must be between 1 and 100. Defaults to 10.\u003cbr/\u003e        lock\\_duration      = (Optional) The lock duration for the feedback queue, specified as an ISO 8601 timespan duration. This value must be between 5 and 300 seconds. Defaults to PT60S.\u003cbr/\u003e    }) | \u003cpre\u003eobject({\u003cbr/\u003e    max_delivery_count = number\u003cbr/\u003e    default_ttl        = string\u003cbr/\u003e    feedback = object({\u003cbr/\u003e      time_to_live       = string\u003cbr/\u003e      max_delivery_count = number\u003cbr/\u003e      lock_duration      = string\u003cbr/\u003e    })\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_consumer_groups\"\u003e\u003c/a\u003e [consumer\\_groups](#input\\_consumer\\_groups) | (Optional) A map of consumer groups and its respective property.\"\u003cbr/\u003e    map(object({\u003cbr/\u003e      name (as map key)      = (Required) The name of this Consumer Group.\u003cbr/\u003e      eventhub\\_endpoint\\_name = (Required) The name of the Event Hub-compatible endpoint in the IoT hub.\u003cbr/\u003e    })) | \u003cpre\u003emap(object({\u003cbr/\u003e    eventhub_endpoint_name = string\u003cbr/\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | (Optional) A mapping of tags to assign to the resource. | `map(string)` | `{}` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_id\"\u003e\u003c/a\u003e [id](#output\\_id) | The IoT Hub Id. |\n| \u003ca name=\"output_name\"\u003e\u003c/a\u003e [name](#output\\_name) | The IoT Hub Name. |\n| \u003ca name=\"output_hostname\"\u003e\u003c/a\u003e [hostname](#output\\_hostname) | The IoT Hub Shared Access Hostname. |\n| \u003ca name=\"output_shared_access_policy_key_name\"\u003e\u003c/a\u003e [shared\\_access\\_policy\\_key\\_name](#output\\_shared\\_access\\_policy\\_key\\_name) | The IoT Hub Shared Access Policy Key Name. |\n| \u003ca name=\"output_shared_access_policy_permissions\"\u003e\u003c/a\u003e [shared\\_access\\_policy\\_permissions](#output\\_shared\\_access\\_policy\\_permissions) | The IoT Hub Shared Access Policy Permisssions. |\n| \u003ca name=\"output_shared_access_policy_primary_key\"\u003e\u003c/a\u003e [shared\\_access\\_policy\\_primary\\_key](#output\\_shared\\_access\\_policy\\_primary\\_key) | The IoT Hub Shared Access Policy Primary Key. |\n| \u003ca name=\"output_shared_access_primary_connection_string\"\u003e\u003c/a\u003e [shared\\_access\\_primary\\_connection\\_string](#output\\_shared\\_access\\_primary\\_connection\\_string) | The IoT Hub Shared Access Primary Connection String. |\n| \u003ca name=\"output_shared_access_policy_secondary_key\"\u003e\u003c/a\u003e [shared\\_access\\_policy\\_secondary\\_key](#output\\_shared\\_access\\_policy\\_secondary\\_key) | The IoT Hub Shared Access Policy Secondary Key. |\n| \u003ca name=\"output_shared_access_secondary_connection_string\"\u003e\u003c/a\u003e [shared\\_access\\_secondary\\_connection\\_string](#output\\_shared\\_access\\_secondary\\_connection\\_string) | The IoT Hub Shared Access Secondary Connection String. |\n| \u003ca name=\"output_shared_access_policy\"\u003e\u003c/a\u003e [shared\\_access\\_policy](#output\\_shared\\_access\\_policy) | The IoT Hub Shared Access Policy. |\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaunchbynttdata%2Ftf-azurerm-module_primitive-iothub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaunchbynttdata%2Ftf-azurerm-module_primitive-iothub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaunchbynttdata%2Ftf-azurerm-module_primitive-iothub/lists"}