クイック スタート: Azure PowerShell を使用して Stream Analytics ジョブを作成する
Azure PowerShell モジュールは、PowerShell コマンドレットまたはスクリプトを使用して Azure リソースを作成および管理するために使用します。 このクイック スタートでは、Azure PowerShell モジュールを使用して Azure Stream Analytics ジョブをデプロイおよび実行する方法を示します。
サンプル ジョブでは、IoT Hub デバイスからストリーミング データを読み取ります。 入力データは、Raspberry Pi オンライン シミュレーターによって生成されます。 温度が 27 度を上回っている内容のメッセージをフィルター処理するために、Stream Analytics ジョブで Stream Analytics クエリ言語を使用してデータを変換します。 それから、結果の出力イベントを BLOB ストレージ内のファイルに書き込みます。
開始する前に
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
- このクイック スタートには、Azure PowerShell モジュールが必要です。 ローカル マシンにインストールされているバージョンを調べるには、
Get-Module -ListAvailable Az
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 - 一部の IoT Hub アクションは Azure PowerShell でサポートされていないため、Azure CLI バージョン 2.0.70 以降および Azure CLI の IoT 拡張機能を使用して完了する必要があります。
Azure CLI をインストールし、
az extension add --name azure-iot
を使用して IoT 拡張機能をインストールします。
Azure へのサインイン
Connect-AzAccount
コマンドを使用して Azure サブスクリプションにサインインし、ポップアップ ブラウザーに Azure 資格情報を入力します。
# Connect to your Azure account
Connect-AzAccount
サブスクリプションが複数ある場合は、次のコマンドレットを実行して、このクイック スタートに使用するサブスクリプションを選択します。
<your subscription name>
は、実際のサブスクリプションの名前に置き換えてください。
# List all available subscriptions.
Get-AzSubscription
# Select the Azure subscription you want to use to create the resource group and resources.
Get-AzSubscription -SubscriptionName "<your subscription name>" | Select-AzSubscription
リソース グループを作成する
New-AzResourceGroup を使用して Azure リソース グループを作成します。 リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
入力データを準備する
Stream Analytics ジョブを定義する前に、ジョブへの入力として構成されるデータを準備します。
次の Azure CLI コード ブロックでは、ジョブに必要な入力データを準備するための多くのコマンドがあります。 次のセクションをレビューしてコードを理解してください。
PowerShell ウィンドウで
az login
コマンドを実行して、ご利用の Azure アカウントにサインインします。サインインに成功すると、Azure CLI からサブスクリプションの一覧が返されます。 このクイック スタートに使用しているサブスクリプションをコピーし、
az account set
コマンドを実行してそのサブスクリプションを選択します。 PowerShell を使用した前のセクションで選択したのと同じサブスクリプションを選択します。<your subscription name>
は、必ず実際のサブスクリプションの名前に置き換えてください。az login az account set --subscription "<your subscription>"
az iot hub create
コマンドを使用して、IoT ハブを作成します。 この例では、MyASAIoTHub という名前の IoT ハブを作成します。 IoT ハブの名前は一意であるため、独自の IoT ハブ名を考案する必要があります。 サブスクリプションで Free レベルを使用できる場合は、SKU を F1 に設定して Free レベルを使用します。 そうでない場合は、次に低いレベルを選択します。az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
IoT ハブが作成されたら、az iot hub show-connection-string コマンドを使用して IoT ハブの接続文字列を取得します。 接続文字列全体をコピーして保存します。 IoT Hub を入力として Stream Analytics ジョブに追加する際に必要です。
az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
az iot hub device-identity create
コマンドを使用して、デバイスを IoT Hub に追加します。 この例では、MyASAIoTDevice という名前のデバイスを作成します。az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
az iot hub device-identity connection-string show
コマンドを使用して、デバイス接続文字列を取得します。 Raspberry Pi シミュレーターを作成するときに備えて、接続文字列全体をコピーして保存します。az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
出力例:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
BLOB ストレージを作成する
次の Azure PowerShell コード ブロックでは、コマンドを使用して、ジョブの出力に使用される BLOB ストレージを作成します。 コードを理解するためにセクションを確認してください。
New-AzStorageAccount コマンドレットを使用して、標準の汎用ストレージ アカウントを作成します。 この例では、ローカル冗長ストレージ (LRS) と BLOB 暗号化 (既定で有効) を使用する、myasaquickstartstorage と呼ばれるストレージ アカウントを作成します。
使用されるストレージ アカウントを定義するストレージ アカウント コンテキスト
$storageAccount.Context
を取得します。 ストレージ アカウントを操作するとき、資格情報を繰り返し入力する代わりに、このコンテキストを参照します。New-AzStorageContainer を使用して、ストレージ コンテナーを作成します。
コードによって出力されたストレージ キーをコピーし、そのキーを保存します。これは、後でストリーミング ジョブの出力を作成するために使用します。
$storageAccountName = "myasaquickstartstorage" $storageAccount = New-AzStorageAccount ` -ResourceGroupName $resourceGroup ` -Name $storageAccountName ` -Location $location ` -SkuName Standard_LRS ` -Kind Storage $ctx = $storageAccount.Context $containerName = "container1" New-AzStorageContainer ` -Name $containerName ` -Context $ctx $storageAccountKey = (Get-AzStorageAccountKey ` -ResourceGroupName $resourceGroup ` -Name $storageAccountName).Value[0] Write-Host "The <storage account key> placeholder needs to be replaced in your output json files with this key value:" Write-Host $storageAccountKey -ForegroundColor Cyan
Stream Analytics のジョブの作成
New-AzStreamAnalyticsJob コマンドレットを使用して、Stream Analytics ジョブを作成します。 このコマンドレットは、パラメーターとしてジョブ名、リソース グループ名、場所、SKU 名を受け取ります。 ジョブ名は、ジョブを識別する任意のフレンドリ名にすることができます。 これには英数字、ハイフン、アンダースコアのみを使用できます。長さは 3 文字以上 63 文字以下でなければなりません。
New-AzStreamAnalyticsJob
コマンドレットを実行します。
$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-Location centralus `
-SkuName Standard
ジョブへの入力を構成する
New-AzStreamAnalyticsInput コマンドレットを使用して、ジョブへの入力を追加します。 このコマンドレットは、パラメーターとして、ジョブ名、ジョブ入力名、リソース グループ名、およびジョブ入力定義を受け取ります。 ジョブ入力定義は、ジョブの入力の構成に必要なプロパティを含む JSON ファイルです。 この例では、入力として BLOB ストレージを作成します。
ローカル マシンに JobInputDefinition.json
という名前のファイルを作成し、次の JSON データを追加します。
重要
-
accesspolicykey
を、前のセクションで保存した IoT Hub 接続文字列のSharedAccessKey
部分で置き換えてください。 - IoT ハブに別の名前を使用した場合は、
iotHubNamespace
の値を更新します。
{
"properties": {
"type": "Stream",
"datasource": {
"type": "Microsoft.Devices/IotHubs",
"properties": {
"iotHubNamespace": "MyASAIoTHub",
"sharedAccessPolicyName": "iothubowner",
"sharedAccessPolicyKey": "accesspolicykey",
"endpoint": "messages/events",
"consumerGroupName": "$Default"
}
},
"compression": {
"type": "None"
},
"serialization": {
"type": "Json",
"properties": {
"encoding": "UTF8"
}
}
},
"name": "IoTHubInput",
"type": "Microsoft.StreamAnalytics/streamingjobs/inputs"
}
PowerShell 変数 $jobInputDefinitionFile
に、ジョブ入力定義 JSON ファイルを格納したパスを設定します。
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
次に、コマンドレット New-AzStreamAnalyticsInput
を実行して、Stream Analytics ジョブの Azure IoT Hub 入力を作成します。
$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobInputDefinitionFile `
-Name $jobInputName
ジョブへの出力を構成する
New-AzStreamAnalyticsOutput コマンドレットを使用して、ジョブへの出力を追加します。 このコマンドレットは、パラメーターとして、ジョブ名、ジョブ出力名、リソース グループ名、およびジョブ出力定義を受け取ります。 ジョブ出力定義は、ジョブの出力の構成に必要なプロパティを含む JSON ファイルです。 この例では、BLOB ストレージを出力として使用します。
ローカル マシンに JobOutputDefinition.json
という名前のファイルを作成し、次の JSON データを追加します。
重要
accountKey
の値を、ストレージ アカウントのアクセス キー ($storageAccountKey
に格納されている値) に置き換えてください。
{
"properties": {
"datasource": {
"type": "Microsoft.Storage/Blob",
"properties": {
"storageAccounts": [
{
"accountName": "asaquickstartstorage",
"accountKey": "<storage account key>"
}
],
"container": "container1",
"pathPattern": "output/",
"dateFormat": "yyyy/MM/dd",
"timeFormat": "HH"
}
},
"serialization": {
"type": "Json",
"properties": {
"encoding": "UTF8",
"format": "LineSeparated"
}
}
},
"name": "BlobOutput",
"type": "Microsoft.StreamAnalytics/streamingjobs/outputs"
}
PowerShell 変数 $jobOutputDefinitionFile
に、ジョブ出力定義 JSON ファイルを格納したパスを設定します。
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
次に、コマンドレット New-AzStreamAnalyticsOutput
を実行して、Stream Analytics ジョブの Azure Blob Storage 出力を作成します。
$jobOutputName = "BlobOutput"
New-AzStreamAnalyticsOutput `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-File $jobOutputDefinitionFile `
-Name $jobOutputName
変換クエリを定義する
New-AzStreamAnalyticsTransformation コマンドレットを使用して、ジョブの変換を追加します。 このコマンドレットは、パラメーターとして、ジョブ名、ジョブ変換名、リソース グループ名、およびジョブ変換定義を受け取ります。 ローカル マシンに JobTransformationDefinition.json
という名前のファイルを作成し、次の JSON データを追加します。 JSON ファイルには、変換クエリを定義するクエリ パラメーターが含まれています。
{
"name":"MyTransformation",
"type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
"properties":{
"streamingUnits":1,
"script":null,
"query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
}
}
次に、New-AzStreamAnalyticsTransformation
コマンドレットを実行します。
$jobTransformationName = "MyJobTransformation"
$jobTransformationDefinitionFile = "C:\JobTransformationDefinition.json"
New-AzStreamAnalyticsTransformation `
-ResourceGroupName $resourceGroup `
-JobName $jobName `
-Query "SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27" `
-StreamingUnit 1 `
-Name $jobTransformationName
IoT シミュレーターを実行する
行 15 のプレースホルダーを、前のセクションで保存した Azure IoT Hub デバイスの接続文字列全体で置き換えます。
[実行] をクリックします。 お客様の IoT ハブに送信されているセンサー データとメッセージが出力に表示されます。
Stream Analytics ジョブを開始して出力をチェックする
Start-AzStreamAnalyticsJob コマンドレットを使用して、ジョブを開始します。 このコマンドレットは、パラメーターとして、ジョブ名、リソース グループ名、出力開始モード、および開始時刻を受け取ります。
OutputStartMode
には、JobStartTime
、CustomTime
、または LastOutputEventTime
の値が使用できます。 これらの値がそれぞれ何を意味しているかについては、PowerShell ドキュメントのパラメーターに関するセクションを参照してください。
次のコマンドレットを実行すると、ジョブが開始されたときに出力として True
が返されます。 変換されたデータが含まれた出力フォルダーがストレージ コンテナーに作成されます。
Start-AzStreamAnalyticsJob `
-ResourceGroupName $resourceGroup `
-Name $jobName `
-OutputStartMode 'JobStartTime'
リソースをクリーンアップする
リソース グループ、ストリーミング ジョブ、および関連するすべてのリソースは、不要になったら削除します。 ジョブを削除すると、ジョブによって消費されるストリーミング ユニットに対する課金を回避することができます。 ジョブを後で使用する計画がある場合、削除をスキップしてこのジョブを一時的に停止できます。 このジョブを今後使用しない場合には、次のコマンドレットを実行して、このクイック スタートで作成したすべてのリソースを削除してください。
Remove-AzResourceGroup `
-Name $resourceGroup
次のステップ
このクイック スタートでは、PowerShell を使用して、簡単な Stream Analytics ジョブをデプロイしました。 Azure portal と Visual Studio を使用して Stream Analytics ジョブをデプロイすることもできます。
その他の入力ソースの構成やリアルタイム検出の実行について学習するには、次の記事に進んでください。