다음을 통해 공유


Azure Portal을 사용하여 IoT Hub 파일 업로드 구성

IoT Hub에서 파일 업로드를 구성하면 연결된 디바이스가 Azure Storage 계정에 파일을 업로드할 수 있습니다. 이 문서에서는 Azure Portal, Azure CLI 및 Azure PowerShell을 사용하여 IoT Hub에서 파일 업로드를 구성하는 방법을 보여 줍니다.

IoT Hub의 파일 업로드 기능을 사용하려면 먼저 Azure 스토리지 계정 및 Blob 컨테이너를 IoT 허브에 연결해야 합니다. IoT Hub는 파일을 업로드하는 경우에 사용할 디바이스에 대한 이 Blob 컨테이너에 쓰기 권한이 있는 SAS URI를 자동으로 생성합니다. 스토리지 계정 및 Blob 컨테이너 외에도 SAS URI의 TTL(Time to Live) 및 IoT Hub가 Azure 스토리지에서 사용하는 인증 유형을 설정할 수 있습니다. IoT Hub가 백 엔드 서비스에 제공할 수 있는 선택적 파일 업로드 알림에 대한 설정도 구성할 수 있습니다.

필수 구성 요소

  • 활성 Azure 계정. 계정이 없는 경우 몇 분 안에 무료 계정 을 만들 수 있습니다.

  • Azure 구독의 IoT 허브. 아직 허브가 없는 경우 IoT Hub 만들기의 단계를 따를 수 있습니다.

Azure Portal에서 IoT Hub 구성

  1. Azure Portal에서 IoT 허브로 이동하고 파일 업로드를 선택하여 파일 업로드 속성을 표시합니다. 그런 다음, 스토리지 컨테이너 설정에서 Azure Storage 컨테이너를 선택합니다.

    포털에서 파일 업로드 설정을 구성하는 방법을 보여 주는 스크린샷.

  2. 현재 구독에 있는 Azure Storage 계정 및 Blob 컨테이너를 선택하여 IoT 허브와 연결합니다. 필요에 따라 Storage 계정 창에 Azure Storage 계정을 만들고 컨테이너 창에 Blob 컨테이너를 만들 수 있습니다.

    파일 업로드를 위해 스토리지 컨테이너를 보는 방법을 보여 주는 스크린샷.

  3. Azure Storage 계정 및 Blob 컨테이너를 선택한 후 파일 업로드 속성의 나머지 부분을 구성합니다.

    • 업로드된 파일에 대한 알림 받기: 토글을 통해 파일 업로드 알림을 사용하거나 사용하지 않도록 설정합니다.

    • SAS TTL: 이 설정은 IoT Hub에서 디바이스로 반환하는 SAS URI의 TTL(Time-to-Live)입니다. 기본적으로 1시간으로 설정되지만 슬라이더를 사용하여 다른 값으로 사용자 지정할 수 있습니다.

    • 파일 알림 설정 기본 TTL: 만료되기 전의 파일 업로드 알림 TTL입니다. 기본적으로 1시간으로 설정되지만 슬라이더를 사용하여 다른 값으로 사용자 지정할 수 있습니다.

    • 파일 알림 최대 배달 횟수: IoT Hub가 파일 업로드 알림 배달을 시도하는 횟수입니다. 기본적으로 10으로 설정되지만 슬라이더를 사용하여 다른 값으로 사용자 지정할 수 있습니다.

    • 인증 유형: 기본적으로 Azure IoT Hub는 키 기반 인증을 사용하여 Azure Storage에 연결하고 권한을 부여합니다. Azure Storage로 Azure IoT Hub를 인증하도록 사용자가 할당한 관리 ID 또는 시스템이 할당한 관리 ID를 구성할 수도 있습니다. 관리 ID는 Microsoft Entra ID에서 자동으로 관리 ID를 안전한 방식으로 Azure 서비스에 제공합니다. 관리 ID를 구성하는 방법을 알아보려면 관리 ID에 대한 IoT Hub 지원을 참조하세요. Azure Storage 계정 및 IoT 허브에서 하나 이상의 관리 ID를 구성한 후 시스템 할당 또는 사용자 할당 단추를 사용하여 Azure 스토리지로 인증에 대해 선택할 수 있습니다.

      참고

      인증 유형 설정은 IoT 허브가 Azure Storage 계정으로 인증하는 방법을 구성합니다. 디바이스는 항상 IoT 허브에서 가져온 SAS URI를 사용하여 Azure Storage로 인증합니다.

  4. 저장을 선택하여 설정을 저장합니다. 성공적인 완료에 대해 확인해야 합니다. 인증 유형과 같은 일부 선택은 설정을 저장한 후에만 유효성이 검사됩니다.

필수 구성 요소

  • 활성 Azure 계정. 계정이 없는 경우 몇 분 안에 무료 계정 을 만들 수 있습니다.

  • Azure 구독의 IoT 허브. 아직 허브가 없는 경우 IoT Hub 만들기의 단계를 따를 수 있습니다.

  • Blob 컨테이너가 있는 Azure Storage 계정입니다. Azure Storage 계정이 없는 경우 Azure CLI를 사용하여 계정을 만들 수 있습니다. 자세한 내용은 스토리지 계정 만들기를 참조하세요.

로그인하고 Azure 계정 설정

Azure 계정에 로그인하고 구독을 선택합니다. Azure Cloud Shell을 사용하는 경우 이미 로그인되어 있어야 합니다. 그러나 여러 구독이 있는 경우에도 Azure 구독을 선택해야 할 수 있습니다.

  1. 명령 프롬프트에서 로그인 명령을 실행합니다.

    az login
    

    지침에 따라 코드를 사용하여 인증하고 웹 브라우저를 통해 Azure 계정에 로그인합니다.

  2. 여러 Azure 구독이 있는 경우 Azure에 로그인하면 자격 증명과 연결된 모든 Azure 계정에 대한 액세스를 허용합니다. 다음 Azure 계정을 나열하는 명령을 사용합니다.

    az account list
    

    다음 명령을 사용하여 IoT Hub를 만드는 명령을 실행하는 데 사용할 구독을 선택합니다. 이전 명령의 출력에서 구독 이름 또는 ID를 사용할 수 있습니다.

    az account set --subscription {your subscription name or id}
    

스토리지 계정 액세스 구성

다음 단계에서는 클래식 배포 모델이 아닌 Resource Manager 배포 모델을 사용하여 스토리지 계정을 만들었다고 가정합니다.

디바이스에서 파일 업로드를 구성하려면 Azure Storage 계정에 대한 IoT Hub 액세스 권한을 부여해야 합니다. 스토리지 계정은 IoT Hub와 동일한 구독에 있어야 합니다. 스토리지 계정에 Blob 컨테이너의 이름도 필요합니다.

키 기반 또는 ID 기반 인증을 사용하여 액세스 권한을 제공할 수 있습니다. Microsoft는 ID 기반 인증을 보다 안전한 옵션으로 권장합니다.

키 기반 인증

키 기반 인증의 경우 스토리지 계정에 대한 연결 문자열을 제공합니다. az storage account show-connection-string 명령을 사용하여 스토리지 계정 키를 검색합니다.

connectionString 값을 기록해 둡니다. 연결 문자열은 다음 출력과 유사합니다.

{
  "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your_storage_account_name};AccountKey={your_storage_account_key}"
}

ID 기반 인증

ID 기반 인증에 시스템 할당 관리 ID 또는 사용자 할당 관리 ID를 사용할 수 있습니다. 자세한 내용은 관리 ID에 대한 IoT Hub 지원을 참조하세요.

az role assignment create 명령을 사용하여 관리 ID에 역할을 할당합니다. 자세한 내용은 Blob 데이터에 액세스하기 위한 Azure 역할 할당을 참조하세요.

IoT Hub 구성

이제 스토리지 계정 세부 정보를 사용하여 IoT Hub에 파일을 업로드할 수 있도록 IoT Hub 를 구성할 수 있습니다.

구성에는 다음 값이 필요합니다.

  • 스토리지 컨테이너: 현재 Azure 구독의 Azure Storage 계정에서 IoT Hub와 연결할 Blob 컨테이너입니다. 이전 섹션에서 필요한 스토리지 계정 정보를 검색했습니다. IoT Hub는 파일을 업로드하는 경우에 사용할 디바이스에 대한 이 Blob 컨테이너에 쓰기 권한이 있는 SAS URI를 자동으로 생성합니다.

  • 업로드된 파일에 대한 알림 받기: 파일 업로드 알림을 사용하거나 사용하지 않도록 설정합니다.

  • SAS TTL: 이 설정은 IoT Hub에서 디바이스로 반환하는 SAS URI의 TTL(Time-to-Live)입니다. 기본적으로 1시간으로 설정합니다.

  • 파일 알림 설정 기본 TTL: 만료되기 전의 파일 업로드 알림의 TTL 시간입니다. 기본적으로 1일로 설정합니다.

  • 파일 알림 최대 배달 횟수: IoT Hub가 파일 업로드 알림 배달을 시도하는 횟수입니다. 기본적으로 10으로 설정합니다.

  • 파일 알림 잠금 기간: 파일 알림 큐의 잠금 기간입니다. 기본적으로 60초로 설정합니다.

  • 인증 유형: Azure Storage에서 사용할 IoT Hub에 대한 인증 유형입니다. 이 설정은 IoT Hub가 Azure Storage를 인증하고 권한을 부여하는 방법을 결정합니다. 기본값은 키 기반 인증입니다. 그러나 시스템 할당 또는 사용자 할당 관리 ID 인증 옵션이 권장됩니다. 관리 ID는 Microsoft Entra ID에서 자동으로 관리 ID를 안전한 방식으로 Azure 서비스에 제공합니다.

    참고

    인증 유형 설정은 IoT 허브가 Azure Storage 계정으로 인증하는 방법을 구성합니다. 디바이스는 항상 IoT 허브에서 가져온 SAS URI를 사용하여 Azure Storage에서 인증합니다.

다음 명령은 IoT Hub에서 파일 업로드 설정을 구성하는 방법을 보여 줍니다. 이러한 명령은 명확성을 위해 별도로 표시되지만, 일반적으로 시나리오에 필요한 모든 매개 변수를 사용하여 단일 명령을 실행합니다. 명령줄에 표시되는 위치에 따옴표를 포함하고 중괄호를 포함하지 마세요. 각 매개 변수에 대한 자세한 내용은 az iot hub update 명령에 대한 Azure CLI 설명서에서 확인할 수 있습니다.

다음 명령은 스토리지 계정 및 Blob 컨테이너를 구성합니다.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-connectionstring "{your storage account connection string}" \
    --fileupload-storage-container-name "{your container name}" 

다음 명령은 SAS URI 시간을 기본값(1시간)으로 설정합니다.

az iot hub update --name {your iot hub name} \
    --fileupload-sas-ttl 1 

다음 명령은 파일 알림을 사용하도록 설정하고 파일 알림 속성을 기본값으로 설정합니다. 파일 업로드 알림 시간은 1시간으로 설정되고 잠금 기간은 60초로 설정됩니다.

az iot hub update --name {your iot hub name} \
    --fileupload-notifications true  \
    --fileupload-notification-max-delivery-count 10 \
    --fileupload-notification-ttl 1 \
    --fileupload-notification-lock-duration 60

다음 명령은 키 기반 인증을 구성합니다.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type keyBased

다음 명령은 IoT Hub의 시스템 할당 관리 ID를 사용하여 인증을 구성합니다. 이 명령을 실행하려면 IoT Hub에 대해 시스템 할당 관리 ID를 사용하도록 설정하고 Azure Storage 계정에서 올바른 역할 기반 액세스 제어 역할을 부여해야 합니다. 방법을 알아보려면 관리 ID에 대한 IoT Hub 지원을 참조하세요.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity [system] 

다음 명령은 IoT Hub에 구성된 사용자 할당 관리 ID를 검색하고 그 중 하나로 인증을 구성합니다. 사용자 할당 관리 ID를 사용하여 인증하려면 먼저 IoT Hub에서 구성하고 Azure Storage 계정에 적절한 역할 기반 액세스 제어 역할을 부여해야 합니다. 자세한 내용 및 단계는 관리 ID에 대한 IoT Hub 지원을 참조하세요.

IoT Hub에서 사용자 할당 관리 ID를 쿼리하려면 az iot hub identity show 명령을 사용합니다.

az iot hub identity show --name {your iot hub name} --query userAssignedIdentities

이 명령은 IoT Hub에 구성된 사용자 할당 관리 ID의 컬렉션을 반환합니다. 다음 출력은 단일 사용자 할당 관리 ID를 포함하는 컬렉션을 보여 줍니다.

{
  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}": 
  {
    "clientId": "<client ID GUID>",
    "principalId": "<principal ID GUID>"
  }
}

다음 명령은 위의 사용자 할당 ID를 사용하도록 인증을 구성합니다.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}"

다음 명령을 사용하여 IoT Hub에서 설정을 검토할 수 있습니다.

az iot hub show --name {your iot hub name}

파일 업로드 설정만 검토하려면 다음 명령을 사용합니다.

az iot hub show --name {your iot hub name}
    --query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'

대부분의 경우 Azure CLI 명령에서 명명된 매개 변수를 사용하는 것이 가장 쉽습니다. 그러나 매개 변수를 사용하여 파일 업로드 설정을 --set 구성할 수도 있습니다. 다음 명령은 방법을 이해하는 데 도움이 될 수 있습니다.

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.connectionString="{your storage account connection string}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.containerName="{your storage container name}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.sasTtlAsIso8601=PT1H0M0S

az iot hub update --name {your iot hub name} \
  --set properties.enableFileUploadNotifications=true

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.maxDeliveryCount=10

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.ttlAsIso8601=PT1H0M0S

필수 구성 요소

로그인하고 Azure 계정 설정

Azure 계정에 로그인하고 구독을 선택합니다. Azure Cloud Shell을 사용하는 경우 이미 로그인되어 있어야 합니다. 그러나 여러 구독이 있는 경우에도 Azure 구독을 선택해야 할 수 있습니다.

  1. PowerShell 프롬프트에서 Connect-AzAccount cmdlet을 실행합니다.

    Connect-AzAccount
    
  2. 여러 Azure 구독이 있는 경우 Azure에 로그인하면 자격 증명과 연결된 모든 Azure 구독에 대한 액세스 권한이 부여됩니다. Get-AzSubscription 명령을 사용하여 사용할 수 있는 Azure 구독을 나열합니다.

    Get-AzSubscription
    

    다음 명령을 사용하여 IoT Hub를 관리하는 명령을 실행하는 데 사용할 구독을 선택합니다. 이전 명령의 출력에서 구독 이름 또는 ID를 사용할 수 있습니다.

    Select-AzSubscription `
        -Name "{your subscription name}"
    

    참고

    Select-AzSubscription 명령은 Select-AzContext 명령에 필요한 보다 복잡한 컨텍스트 이름이 아닌 Get-AzSubscription 명령에서 반환된 구독 이름(이름) 또는 구독 ID(ID)를 사용할 수 있는 Select-AzContext의 별칭입니다.

스토리지 계정 세부 정보 검색

다음 단계에서는 클래식 배포 모델이 아닌 Resource Manager 배포 모델을 사용하여 스토리지 계정을 만들었다고 가정합니다.

디바이스에서 파일 업로드를 구성하려면 Azure Storage 계정에 대한 연결 문자열이 필요합니다. 스토리지 계정은 IoT Hub와 동일한 구독에 있어야 합니다. 스토리지 계정에 Blob 컨테이너의 이름도 필요합니다. Get-AzStorageAccountKey 명령을 사용하여 스토리지 계정 키를 검색합니다.

Get-AzStorageAccountKey `
  -Name {your storage account name} `
  -ResourceGroupName {your storage account resource group}

key1 스토리지 계정 키 값을 기록해 둡니다. 다음 단계에서 필요합니다.

파일 업로드에 기존 Blob 컨테이너를 사용하거나 새 Blob 컨테이너를 만들 수 있습니다.

  • 스토리지 계정의 기존 Blob 컨테이너를 나열하려면 New-AzStorageContextGet-AzStorageContainer 명령을 사용합니다.

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    Get-AzStorageContainer -Context $ctx
    
  • 스토리지 계정에 Blob 컨테이너를 만들려면 New-AzStorageContextNew-AzStorageContainer 명령을 사용합니다.

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    New-AzStorageContainer `
        -Name {your new container name} `
        -Permission Off `
        -Context $ctx
    

IoT Hub 구성

이제 스토리지 계정 세부 정보를 사용하여 IoT Hub에 파일을 업로드하도록 IoT Hub 를 구성할 수 있습니다.

구성에는 다음 값이 필요합니다.

  • 스토리지 컨테이너: 현재 Azure 구독의 Azure Storage 계정에서 IoT Hub와 연결할 Blob 컨테이너입니다. 이전 섹션에서 필요한 스토리지 계정 정보를 검색했습니다. IoT Hub는 파일을 업로드하는 경우에 사용할 디바이스에 대한 이 Blob 컨테이너에 쓰기 권한이 있는 SAS URI를 자동으로 생성합니다.

  • 업로드된 파일에 대한 알림 받기: 파일 업로드 알림을 사용하거나 사용하지 않도록 설정합니다.

  • SAS TTL: 이 설정은 IoT Hub에서 디바이스로 반환하는 SAS URI의 TTL(Time-to-Live)입니다. 기본적으로 1시간으로 설정합니다.

  • 파일 알림 설정 기본 TTL: 만료되기 전의 파일 업로드 알림 TTL입니다. 기본적으로 1일로 설정합니다.

  • 파일 알림 최대 배달 횟수: IoT Hub가 파일 업로드 알림 배달을 시도하는 횟수입니다. 기본적으로 10으로 설정합니다.

Set-AzIotHub 명령을 사용하여 IoT Hub에서 파일 업로드 설정을 구성합니다.

Set-AzIotHub `
    -ResourceGroupName "{your iot hub resource group}" `
    -Name "{your iot hub name}" `
    -FileUploadNotificationTtl "01:00:00" `
    -FileUploadSasUriTtl "01:00:00" `
    -EnableFileUploadNotifications $true `
    -FileUploadStorageConnectionString "DefaultEndpointsProtocol=https;AccountName={your storage account name};AccountKey={your storage account key};EndpointSuffix=core.windows.net" `
    -FileUploadContainerName "{your blob container name}" `
    -FileUploadNotificationMaxDeliveryCount 10

참고

기본적으로 IoT Hub는 연결 문자열의 계정 키를 사용하여 Azure Storage로 인증합니다. 시스템 할당 또는 사용자 할당 관리 ID를 사용하는 인증도 사용할 수 있습니다. 관리 ID는 Microsoft Entra ID에서 자동으로 관리 ID를 안전한 방식으로 Azure 서비스에 제공합니다. 자세한 내용은 관리 ID에 대한 IoT Hub 지원을 참조하세요. 현재 Set-AzIotHub 명령에는 인증 유형을 설정하는 매개 변수가 없습니다.