Azure PowerShell を使用してルートとエンドポイントを作成および削除する

この記事では、Azure IoT Hub のハブでルートとエンドポイントを作成する方法と、ルートとエンドポイントを削除する方法について説明します。 Azure PowerShell を使用して、Azure Event Hubs、Azure Service Bus キューとトピック、Azure Storage に対してルートとエンドポイントを作成する方法について説明します。

IoT Hub のルーティングのしくみについては、「IoT Hub メッセージ ルーティングを使用して device-to-cloud メッセージを別のエンドポイントに送信する」を参照してください。 ストレージにメッセージを送信するルートを設定し、シミュレートされたデバイスでテストする手順については、「チュートリアル: IoT Hub メッセージ ルーティングを使用してデバイス データを Azure Storage に送信する」を参照してください。

前提条件

この記事で説明する手順では、次のリソースを使用します。

  • Azure PowerShell
  • IoT ハブ
  • Azure のエンドポイント サービス

Azure PowerShell

この記事では、Azure PowerShell を使って IoT Hub や他の Azure サービスを操作します。 Azure PowerShell をローカルで使うには、コンピューターに Azure PowerShell モジュールをインストールします。 または、Azure PowerShell を Web ブラウザーで使うには、Azure Cloud Shell を有効にします。

IoT ハブ

IoT ハブ ルートを作成するには、Azure IoT Hub を使用して作成した IoT ハブが必要です。 デバイス メッセージとイベント ログは、IoT ハブで生成されます。

IoT ハブ ルートを作成するときに使用する次のハブ リソースがあることを確認してください。

エンドポイント サービス

IoT ハブ ルートを作成するには、ルートへのエンドポイントとして使用する他の Azure サービスが少なくとも 1 つ必要です。 エンドポイントは、デバイス メッセージとイベント ログを受信します。 IoT ハブ ルートと接続するエンドポイントに使用する Azure サービス (Event Hubs、Service Bus キューまたはトピック、Azure Storage) を選択できます。

IoT ハブ ルートでエンドポイントを作成するときに使用する次のリソースの "いずれか" があることを確認してください。

リソースとエンドポイントを作成する

IoT Hub では、メッセージを送信する、またはイベントをキャプチャするルートを作成できます。 各ルートには、データ ソースとエンドポイントがあります。 データ ソースは、メッセージまたはイベント ログが生成される場所です。 エンドポイントは、メッセージまたはイベント ログが最終的に到達する場所です。 IoT ハブで新しいルートを作成するときに、データ ソースとエンドポイントの場所を選択します。 次に、ルーティング クエリを使って、エンドポイントに移動する前にメッセージまたはイベントをフィルター処理します。

IoT ハブ ルートのエンドポイントとして、イベント ハブ、Service Bus キューまたはトピック、ストレージ アカウントを使用できます。 エンドポイントの作成に使用するサービスは、事前に Azure アカウントに存在する必要があります。

Note

ローカル バージョンの Azure PowerShell を使用する場合は、開始する前に Azure PowerShell にサインインします。

次の手順のコマンドでは、これらの参照を使用します。

イベント ハブの作成

認可規則がある新しい Event Hubs リソースを作成するには:

  1. 新しい Event Hubs 名前空間を作成します。 NamespaceName には、一意の値を使用します。

    New-AzEventHubNamespace -ResourceGroupName MyResourceGroup -NamespaceName MyNamespace -Location MyLocation
    
  2. 新しい Event Hubs エンティティを作成します。 Name には、一意の値を使用します。 NamespaceName には、前の手順で作成した名前空間の名前を使用します。

    New-AzEventHub -Name MyEventHub -NamespaceName MyNamespace -ResourceGroupName MyResourceGroup
    
  3. 新しい認可規則を作成します。 Name には、EventHubName のエンティティの名前を使用します。 認可規則の名前には、一意の値を使用します。

    New-AzEventHubAuthorizationRule -ResourceGroupName MyResourceGroup -NamespaceName MyNamespace -EventHubName MyEventHub -Name MyAuthRule -Rights @('Manage', 'Send', 'Listen')
    

    アクセスの詳細については、「Azure Event Hubs へのアクセスを承認する」を参照してください。

Event Hubs のエンドポイントを作成する

  1. イベント ハブからプライマリ接続文字列を取得します。 後で使うために接続文字列をコピーします。

    Get-AzEventHubKey -ResourceGroupName MyResourceGroup -NamespaceName MyNamespace -EventHubName MyEventHub -Name MyAuthRule
    
  2. Event Hubs への新しい IoT Hub エンドポイントを作成します。 前の手順のプライマリ接続文字列を使います。 EndpointType の値は EventHub である必要があります。 その他のすべてのパラメーターには、実際のシナリオの値を使用します。

    Add-AzIotHubRoutingEndpoint -ResourceGroupName MyResourceGroup -Name MyIotHub -EndpointName MyEndpoint -EndpointType EventHub -EndpointResourceGroup MyResourceGroup -EndpointSubscriptionId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -ConnectionString "Endpoint=<my connection string>"
    

    すべてのルーティング エンドポイント オプションを表示する方法については、「Add-AzIotHubRoutingEndpoint」を参照してください。

IoT Hub ルートを作成する

IoT ハブに新しいエンドポイントができたら、新しいルートを作成できます。

IoT Hub の既定のフォールバック ルートは、DeviceMessages からメッセージを収集します。 カスタム ルート用には別のオプション (DeviceConnectionStateEvents など) を選択します。 ソース オプションの詳細については、「Add-AzIotHubRoute」を参照してください。 Enabled パラメーターはスイッチであるため、パラメーターで値を使用する必要はありません。

Add-AzIotHubRoute -ResourceGroupName MyResourceGroup -Name MyIotHub -RouteName MyRoute -Source DeviceLifecycleEvents -EndpointName MyEndpoint -Enabled

PowerShell には、次の例のような確認が表示されます。

RouteName     : MyIotHub 
DataSource    : DeviceLifecycleEvents
EndpointNames : MyEndpoint
Condition     : true
IsEnabled     : True

IoT Hub ルートを更新する

既存のルートを変更するには、次のコマンドを使います。 たとえば、コマンドを使用してルートの名前を変更してみてください。

Set-AzIotHubRoute -ResourceGroupName MyResourceGroup -Name MyIotHub -RouteName MyRoute

ルートの変更を確認するには、Get-AzIotHubRoute コマンドを使います。

Get-AzIotHubRoute -ResourceGroupName MyResourceGroup -Name MyIotHub

エンドポイントの削除

エンドポイントを削除するには:

Remove-AzIotHubRoutingEndpoint -ResourceGroupName MyResourceGroup -Name MyIotHub -EndpointName MyEndpoint -PassThru

IoT Hub ルートを削除する

IoT Hub ルートを削除するには:

Remove-AzIotHubRoute -ResourceGroupName MyResourceGroup -Name MyIotHub -RouteName MyRoute -PassThru

ヒント

ルートを削除しても、Azure アカウントのエンドポイントは削除されません。 ルートの削除とは別にエンドポイントを削除する必要があります。

次の手順

このハウツー記事では、Event Hubs、Service Bus キューとトピック、Azure Storage に対してルートとエンドポイントを作成する方法について説明しました。

メッセージ ルーティングの詳細については、「チュートリアル: IoT Hub メッセージ ルーティングを使用してデバイス データを Azure Storage に送信する」を参照してください。 このチュートリアルでは、ストレージ ルートを作成し、IoT ハブでデバイスを使ってテストします。