이 문서에서는 Azure CLI 또는 Azure PowerShell을 사용하여 Azure IoT Hub 템플릿을 내보내고, IoT Hub에 경로를 추가한 다음, 템플릿을 IoT 허브에 다시 배포하는 방법을 보여줍니다. Azure Resource Manager 템플릿을 사용하여 경로 및 엔드포인트를 만듭니다. IoT Hub는 다음 Azure 서비스를 엔드포인트로 지원합니다.
스토리지 컨테이너
Event Hubs
Service Bus 큐
Service Bus 토픽
Cosmos DB
Azure Resource Manager 템플릿은 JSON 파일을 사용하여 리소스를 정의하려는 경우에 유용합니다. 모든 Azure 리소스에는 해당 리소스에 사용되는 구성 요소를 정의하는 템플릿이 있습니다. 모든 Azure 리소스 템플릿을 내보낼 수 있습니다.
Important
Resource Manager 템플릿을 사용하여 리소스를 배포하는 경우 이 템플릿은 배포되는 기존 리소스를 대체합니다.
새 IoT 허브를 만들 때 기존에 배포된 리소스를 덮어써도 문제가 되지 않습니다. 새 IoT 허브를 만들려면 이미 배포된 IoT 허브의 기존 템플릿을 내보내는 대신 필요한 속성이 있는 기본 템플릿을 사용하면 됩니다.
그러나 기존 IoT Hub에 대한 경로를 추가하는 경우 업데이트된 템플릿을 배포한 후 IoT Hub에서 내보낸 템플릿을 사용하여 모든 기존 리소스와 속성이 연결된 상태로 유지되도록 합니다. 이미 배포된 리소스는 대체되지 않습니다. 예를 들어 이전에 배포하고 내보낸 Resource Manager 템플릿은 스토리지에 연결한 경우 IoT 허브에 대한 스토리지 정보를 포함하고 있을 수 있습니다.
Azure Cosmos DB 리소스입니다. 새 Cosmos DB 데이터베이스 및 컨테이너를 만들어야 하는 경우 빠른 시작: Azure Cosmos DB 및 컨테이너 만들기를 참조하세요.
(권장) Cosmos DB 계정에 대한 역할 기반 액세스 제어 권한이 있는 관리 ID입니다. 자세한 내용은 Azure Cosmos DB for NoSQL에서 데이터 평면 역할 기반 액세스 제어 사용을 참조하세요.
Azure Resource Manager 템플릿
이 문서에서는 Azure Portal의 Azure Resource Manager 템플릿을 사용하여 IoT Hub 및 기타 Azure 서비스를 작업합니다. Resource Manager 템플릿 사용 방법에 대한 자세한 내용은 Azure Resource Manager 템플릿이란?을 참조하세요.
경로 만들기
IoT Hub에서 메시지를 보내거나 이벤트를 캡처하는 경로를 만들 수 있습니다. 각 경로에는 데이터 원본과 엔드포인트가 있습니다. 데이터 원본은 메시지 또는 이벤트 로그가 시작되는 위치입니다. 엔드포인트는 메시지 또는 이벤트 로그가 끝나는 위치입니다. IoT 허브에서 새 경로를 만들 때 데이터 원본 및 엔드포인트의 위치를 선택합니다. 그런 다음, 라우팅 쿼리를 사용하여 엔드포인트로 이동하기 전에 메시지 또는 이벤트를 필터링합니다.
IoT 허브 경로의 엔드포인트가 될 이벤트 허브, Service Bus 큐/토픽 또는 Azure 스토리지 계정을 사용할 수 있습니다. 그러려면 엔드포인트를 만드는 데 사용할 서비스가 Azure 계정에 있어야 합니다.
IoT Hub의 Resource Manager 템플릿 내보내기
먼저 IoT Hub에서 Resource Manager 템플릿을 내보냅니다. IoT Hub에서 템플릿을 내보내면 엔드포인트를 추가하고 리소스를 라우팅하고 기존 설정을 잃지 않고 다시 배포할 수 있습니다.
템플릿에는 IoT 허브에 기능 또는 서비스를 추가하는 데 사용할 수 있는 여러 자리 표시자가 있습니다. 이 문서에서는 routing 아래에 있거나 중첩된 속성에만 값을 추가합니다.
템플릿에 엔드포인트 추가
각 경로는 메시지 또는 이벤트 로그가 끝나는 엔드포인트를 가리킵니다. 경로가 참조할 수 있는 IoT Hub에 엔드포인트를 만듭니다. 이벤트 허브, Service Bus 큐 또는 토픽, Azure Storage 계정 또는 Cosmos DB 컨테이너를 사용하여 IoT Hub 경로의 엔드포인트가 될 수 있습니다. 그러려면 엔드포인트를 만드는 데 사용할 서비스가 Azure 계정에 있어야 합니다.
IoT Hub는 메시지 또는 로그를 보내는 모든 엔드포인트 리소스에 대한 액세스 권한이 필요합니다. 관리 ID 및 Microsoft Entra ID를 사용하거나 연결 문자열 사용하여 액세스를 제공할 수 있습니다. 보다 안전한 옵션으로 Entra ID로 인증하는 것이 좋습니다.
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 형식의 Event Hubs 네임스페이스의 호스트 이름 sb://<eventhubs_namespace_name>.servicebus.windows.net
entityPath
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 이벤트 허브의 이름입니다.
authenticationType
identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
identity
(인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.
사용자 할당의 경우: 이벤트 허브에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.
시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
connectionString
(인증 유형이 .인 keyBased경우) 이벤트 허브의 공유 액세스 정책 중 하나에서 기본 연결 문자열 Azure <connection_string>;EntityPath=<event_hub_name>. Portal에서 연결 문자열 값을 검색한 다음 엔터티 경로를 추가할 수 있습니다.
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 형식의 Service Bus 네임스페이스의 호스트 이름 sb://<service_bus_namespace_name>.servicebus.windows.net
entityPath
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) Service Bus 큐의 이름입니다.
authenticationType
identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
identity
(인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.
사용자 할당의 경우: Service Bus에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.
시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
connectionString
(인증 유형이 .인 keyBased경우) Service Bus의 공유 액세스 정책 중 하나에서 기본 연결 문자열 형식 <connection_string>;EntityPath=<service_bus_queue_name>. 으로 Azure Portal에서 연결 문자열 값을 검색한 다음 엔터티 경로를 추가할 수 있습니다.
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 형식의 Service Bus 네임스페이스의 호스트 이름 sb://<service_bus_namespace_name>.servicebus.windows.net
entityPath
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) Service Bus 토픽의 이름입니다.
authenticationType
identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
identity
(인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.
사용자 할당의 경우: Service Bus에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.
시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
connectionString
(인증 유형이 .인 keyBased경우) Service Bus의 공유 액세스 정책 중 하나에서 기본 연결 문자열 형식 <connection_string>;EntityPath=<service_bus_topic_name>. 으로 Azure Portal에서 연결 문자열 값을 검색한 다음 엔터티 경로를 추가할 수 있습니다.
파일 이름이 컨테이너에 기록되는 방식입니다. 기본 형식을 다시 정렬할 수 있지만 모든 요소를 유지해야 합니다. 기본 파일 형식은 .입니다 .avro. JSON 인코딩을 .json 선택하는 경우 파일 형식을 변경합니다.
batchFrequencyInSeconds
maxChunkSizeInBytes
encoding
Avro 또는 JSON
endpointUri
(인증 유형이 ;인 identityBased경우 그렇지 않으면 삭제합니다.) 스토리지 계정의 호스트 이름 형식 https://<storage_account_name>.blob.core.windows.net/
authenticationType
identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
identity
(인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.
사용자 할당의 경우: Service Bus에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.
시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
connectionString
(인증 유형이 .인 keyBased경우) 기본 연결 문자열 Storage 계정의 공유 액세스 정책 중 하나에서 가져옵니다. Azure Portal에서 연결 문자열 값을 검색할 수 있습니다.
형식의 Cosmos DB 계정의 호스트 이름 https://<cosmos_db_account_name>.documents.azure.com
databaseName
Cosmos DB 계정에 있는 기존 데이터베이스의 이름입니다.
containerName
데이터를 쓸 Cosmos DB 데이터베이스에 있는 기존 컨테이너의 이름입니다.
authenticationType
identityBased 또는 keyBased. 보다 안전한 옵션으로 ID 기반 인증을 권장합니다.
identity
(인증 유형이 .인 identityBased경우) IoT Hub에 시스템 할당 관리 ID가 사용하도록 설정된 경우 사용자 할당 관리 ID 또는 시스템 할당 관리 ID를 사용할 수 있습니다.
사용자 할당의 경우: Service Bus에 대한 액세스 권한이 있는 관리 ID의 외부 ID입니다 /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>.
시스템 할당의 경우: ID 매개 변수를 빈 목록으로 둡니다. 예를 들어 "identity": {},
primaryKey
(인증 유형이 .인 keyBased경우) Cosmos DB 계정의 기본 키입니다. Azure Portal에서 키 값을 검색할 수 있습니다.
secondaryKey
(인증 유형이 .인 keyBased경우) Cosmos DB 계정의 기본 연결 문자열. Azure Portal에서 키 값을 검색할 수 있습니다.
partitionKeyName
모든 Cosmos DB 문서에 추가될 가상 파티션 키의 이름입니다.
partitionKeyTemplate
파티션 키 템플릿에는 {iothub}, {deviceid}, {YYYY}, {MM}, {DD} 요소 중 하나 이상이 포함되어야 합니다.