PowerShell を使用して IoT Hub ファイルのアップロードを構成する

この記事では、PowerShell を使用して IoT ハブ上でファイルのアップロードを構成する方法を示します。

IoT Hub でファイルのアップロード機能を使用するには、最初に Azure ストレージ アカウントと BLOB コンテナーを IoT ハブに関連付ける必要があります。 IoT Hub により、ファイルをアップロードするときにデバイスで使用する、この BLOB コンテナーへの書き込みアクセス許可を含む SAS URI が自動的に生成します。 ストレージ アカウントと BLOB コンテナーに加えて、SAS URI の Time to Live を設定し、IoT Hub がバックエンド サービスに配信できるオプションのファイル アップロード通知の設定を構成できます。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

サインインして Azure アカウントを設定する

Azure アカウントにサインインしてサブスクリプションを選択します。 Azure Cloud Shell を使用している場合は、既にサインインしているはずです。ただし、複数のサブスクリプションがある場合は、引き続き Azure サブスクリプションの選択が必要になる場合があります。

  1. PowerShell プロンプトで、Connect-AzAccount コマンドレットを実行します。

    Connect-AzAccount
    
  2. 複数の Azure サブスクリプションがある場合は、Azure にサインインすると、資格情報に関連付けられているすべての Azure サブスクリプションへのアクセスが許可されます。 Get-AzSubscription コマンドを使用して、使用できる Azure サブスクリプションの一覧を表示します。

    Get-AzSubscription
    

    次のコマンドで、使用するサブスクリプションを選択して、IoT Hub を管理するためのコマンドを実行します。 前のコマンドの出力から、サブスクリプション名または ID のいずれかを使用できます。

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

    注意

    Select-AzSubscription コマンドは Select-AzContext の別名であり、Select-AzContext コマンドに必要な複雑なコンテキスト名ではなく、Get-AzSubscription コマンドによって返されるサブスクリプション名 (Name) またはサブスクリプション ID (Id) を使用できます。

ストレージ アカウントの詳細を取得する

次の手順は、ストレージ アカウントが、クラシック デプロイ モデルではなく Resource Manager デプロイ モデルを使用して作成されていることを前提としています。

デバイスからファイル アップロードを構成するには、Azure Storage アカウント用の接続文字列が必要です。 Azure Storage アカウントは、IoT Hub と同じサブスクリプション内にある必要があります。 また、ストレージ アカウントには BLOB コンテナーの名前も必要です。 Get-AzStorageAccountKey コマンドを使用してストレージ アカウント キーを取得します。

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

key1 ストレージ アカウント キーの値を書き留めておきます。 これは、以降の手順で必要です。

ファイル アップロード用の既存の BLOB コンテナーを使用するか、新しいものを作成します。

  • ストレージ アカウント内の既存の BLOB コンテナーの一覧を表示するには、New-AzStorageContext および Get-AzStorageContainer コマンドを使用します。

    $ctx = New-AzStorageContext `
        -StorageAccountName {your storage account name} `
        -StorageAccountKey {your storage account key}
    Get-AzStorageContainer -Context $ctx
    
  • ストレージ アカウント内に BLOB コンテナーを作成するには、New-AzStorageContext および New-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 を構成します。

構成するには次の値が必要です。

  • ストレージ コンテナー: IoT Hub に関連付ける、現在の Azure サブスクリプションの Azure ストレージ アカウントの BLOB コンテナー。 必要なストレージ アカウント情報は、前のセクションで取得しました。 IoT Hub により、ファイルをアップロードするときにデバイスで使用する、この BLOB コンテナーへの書き込みアクセス許可を含む SAS URI が自動的に生成します。

  • Receive notifications for uploaded files (アップロードされたファイルに関する通知を受け取る) : ファイルのアップロードに関する通知を有効または無効にします。

  • SAS TTL: IoT Hub によりデバイスに返される SAS URI の有効期間を設定します。 既定では 1 時間に設定されています。

  • File notification settings default TTL (ファイルの通知設定 既定の TTL) : 有効期限が切れるまでのファイルのアップロード通知の有効期間です。 既定では 1 日に設定されています。

  • File notification maximum delivery count (ファイルの通知設定 最大配信回数) : IoT Hub がファイルのアップロード通知の配信を試行する回数です。 既定では 10 に設定されています。

IoT ハブ上でファイルのアップロード設定を構成するには、Set-AzIotHub コマンドを使用します。

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 サービスに提供します。 詳細については、「IoT Hub でのマネージド ID のサポート」を参照してください。 現時点では、Set-AzIotHub コマンドには認証の種類を設定するパラメーターがありません。 代わりに、Azure portal または Azure CLI を使用できます。

次のステップ