クイック スタート:Azure PowerShell を使用して Stream Analytics ジョブを作成するQuickstart: Create a Stream Analytics job using Azure PowerShell

Azure PowerShell モジュールは、PowerShell コマンドレットまたはスクリプトを使用して Azure リソースを作成および管理するために使用します。The Azure PowerShell module is used to create and manage Azure resources using PowerShell cmdlets or scripts. このクイック スタートでは、Azure PowerShell モジュールを使用して Azure Stream Analytics ジョブをデプロイおよび実行する方法について詳しく説明します。This quickstart details using the Azure PowerShell module to deploy and run an Azure Stream Analytics job.

サンプル ジョブでは、IoT Hub デバイスからストリーミング データを読み取ります。The example job reads streaming data from an IoT Hub device. 入力データは、Raspberry Pi オンライン シミュレーターによって生成されます。The input data is generated by a Raspberry Pi online simulator. 次に、温度が 27 度を上回っていることを示すメッセージをフィルター処理するために、Stream Analytics ジョブで Stream Analytics クエリ言語を使用してデータを変換します。Next, the Stream Analytics job transforms the data using the Stream Analytics query language to filter messages with a temperature greater than 27°. 最後に、結果の出力イベントを BLOB ストレージ内のファイルに書き込みます。Finally, it writes the resulting output events into a file in blob storage.

開始する前にBefore you begin

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

  • Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。If you don't have an Azure subscription, create a free account.

  • このクイック スタートには、Azure PowerShell モジュールが必要です。This quickstart requires the Azure PowerShell module. ローカル マシンにインストールされているバージョンを調べるには、Get-Module -ListAvailable Az を実行します。Run Get-Module -ListAvailable Az to find the version that is installed on your local machine. インストールまたはアップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure PowerShell module.

  • 一部の IoT Hub アクションは Azure PowerShell でサポートされていないため、Azure CLI バージョン 2.0.70 以降および Azure CLI の IoT 拡張機能を使用して完了する必要があります。Some IoT Hub actions are not supported by Azure PowerShell and must be completed using Azure CLI version 2.0.70 or later and the IoT extension for Azure CLI. Azure CLI をインストールし、az extension add --name azure-iot を使用して IoT 拡張機能をインストールします。Install the Azure CLI and use az extension add --name azure-iot to install the IoT extension.

Azure へのサインインSign in to Azure

Connect-AzAccount コマンドを使用して Azure サブスクリプションにサインインし、ポップアップ ブラウザーに Azure 資格情報を入力します。Sign in to your Azure subscription with the Connect-AzAccount command, and enter your Azure credentials in the pop-up browser:

# Connect to your Azure account
Connect-AzAccount

サブスクリプションが複数ある場合は、次のコマンドレットを実行して、このクイック スタートに使用するサブスクリプションを選択します。If you have more than one subscription, select the subscription you would like to use for this quickstart by running the following cmdlets. <your subscription name> は、実際のサブスクリプションの名前に置き換えてください。Make sure to replace <your subscription name> with the name of your subscription:

# 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

リソース グループを作成するCreate a resource group

New-AzResourceGroup を使用して Azure リソース グループを作成します。Create an Azure resource group with New-AzResourceGroup. リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。A resource group is a logical container into which Azure resources are deployed and managed.

$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
    -Name $resourceGroup `
    -Location $location

入力データを準備するPrepare the input data

Stream Analytics ジョブを定義する前に、ジョブへの入力として構成されるデータを準備します。Before defining the Stream Analytics job, prepare the data that is configured as input to the job.

次の Azure CLI コード ブロックでは、ジョブに必要な入力データを準備するための多くのコマンドが実行されます。The following Azure CLI code block does many commands to prepare the input data required by the job. コードを理解するためにセクションを確認してください。Review the sections to understand the code.

  1. PowerShell ウィンドウで az login コマンドを実行して、ご利用の Azure アカウントにサインインします。In your PowerShell window, run the az login command to sign in to your Azure account.

    サインインに成功すると、Azure CLI からサブスクリプションの一覧が返されます。When you successfully sign in, Azure CLI returns a list of your subscriptions. このクイック スタートに使用しているサブスクリプションをコピーし、az account set コマンドを実行してそのサブスクリプションを選択します。Copy the subscription you're using for this quickstart and run the az account set command to select that subscription. PowerShell を使用した前のセクションで選択したのと同じサブスクリプションを選択します。Choose the same subscription you selected in the previous section with PowerShell. <your subscription name> は、必ず実際のサブスクリプションの名前に置き換えてください。Make sure to replace <your subscription name> with the name of your subscription.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. az iot hub create コマンドを使用して、IoT ハブを作成します。Create an IoT Hub using the az iot hub create command. この例では、MyASAIoTHub という名前の IoT ハブを作成します。This example creates an IoT Hub called MyASAIoTHub. IoT ハブの名前は一意であるため、独自の IoT ハブ名を考案する必要があります。Because IoT Hub names are unique, you need to come up with your own IoT Hub name. サブスクリプションで Free レベルを使用できる場合は、SKU を F1 に設定して Free レベルを使用します。Set the SKU to F1 to use the free tier if it is available with your subscription. そうでない場合は、次に低いレベルを選択します。If not, choose the next lowest tier.

    az iot hub create --name "<your IoT Hub name>" --resource-group $resourceGroup --sku S1
    

    IoT ハブが作成されたら、az iot hub show-connection-string コマンドを使用して IoT ハブの接続文字列を取得します。Once the IoT hub has been created, get the IoT Hub connection string using the az iot hub show-connection-string command. IoT ハブを Stream Analytics ジョブへの入力として追加するときに備えて、接続文字列全体をコピーして保存します。Copy the entire connection string and save it for when you add the IoT Hub as input to your Stream Analytics job.

    az iot hub show-connection-string --hub-name "MyASAIoTHub"
    
  3. az iothub device-identity create コマンドを使用して、デバイスを IoT ハブに追加します。Add a device to IoT Hub using the az iothub device-identity create command. この例では、MyASAIoTDevice という名前のデバイスを作成します。This example creates a device called MyASAIoTDevice.

    az iot hub device-identity create --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. az iot hub device-identity show-connection-string コマンドを使用してデバイスの接続文字列を取得します。Get the device connection string using the az iot hub device-identity show-connection-string command. Raspberry Pi シミュレーターを作成するときに備えて、接続文字列全体をコピーして保存します。Copy the entire connection string and save it for when you create the Raspberry Pi simulator.

    az iot hub device-identity show-connection-string --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
    

    出力例:Output example:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

BLOB ストレージを作成するCreate blob storage

次の Azure PowerShell コード ブロックでは、コマンドを使用して、ジョブの出力に使用される BLOB ストレージを作成します。The following Azure PowerShell code block uses commands to create blob storage that is used for job output. コードを理解するためにセクションを確認してください。Review the sections to understand the code.

  1. New-AzStorageAccount コマンドレットを使用して、標準の汎用ストレージ アカウントを作成します。Create a standard general-purpose storage account using New-AzStorageAccount cmdlet. この例では、ローカル冗長ストレージ (LRS) と BLOB 暗号化 (既定で有効) を使用する、myasaquickstartstorage と呼ばれるストレージ アカウントを作成します。This example creates a storage account called myasaquickstartstorage with locally redundant storage(LRS) and blob encryption (enabled by default).

  2. 使用されるストレージ アカウントを定義するストレージ アカウント コンテキスト $storageAccount.Context を取得します。Retrieve the storage account context $storageAccount.Context that defines the storage account to be used. ストレージ アカウントを操作するとき、資格情報を繰り返し入力する代わりに、このコンテキストを参照します。When working with storage accounts, you reference the context instead of repeatedly providing the credentials.

  3. New-AzStorageContainer を使用して、ストレージ コンテナーを作成します。Create a storage container using New-AzStorageContainer.

  4. コードによって出力されたストレージ キーをコピーし、そのキーを保存します。これは、後でストリーミング ジョブの出力を作成するために使用します。Copy the storage key that is outputted by the code, and save that key to create the streaming job's output later on.

    $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 のジョブの作成Create a Stream Analytics job

New-AzStreamAnalyticsJob コマンドレットを使用して、Stream Analytics ジョブを作成します。Create a Stream Analytics job with New-AzStreamAnalyticsJob cmdlet. このコマンドレットは、パラメーターとしてジョブ名、リソース グループ名、およびジョブ定義を受け取ります。This cmdlet takes the job name, resource group name, and job definition as parameters. ジョブ名は、ジョブを識別する任意のフレンドリ名にすることができます。The job name can be any friendly name that identifies your job. これには英数字、ハイフン、アンダースコアのみを使用できます。長さは 3 文字以上 63 文字以下でなければなりません。It can have alphanumeric characters, hyphens, and underscores only and it must be between 3 and 63 characters long. ジョブ定義は、ジョブの作成に必要なプロパティを含む JSON ファイルです。The job definition is a JSON file that contains the properties required to create a job. ローカル マシンに JobDefinition.json という名前のファイルを作成し、次の JSON データを追加します。On your local machine, create a file named JobDefinition.json and add the following JSON data to it:

{
  "location":"WestUS2",
  "properties":{
    "sku":{
      "name":"standard"
    },
    "eventsOutOfOrderPolicy":"adjust",
    "eventsOutOfOrderMaxDelayInSeconds":10,
    "compatibilityLevel": 1.1
  }
}

次に、New-AzStreamAnalyticsJob コマンドレットを実行します。Next, run the New-AzStreamAnalyticsJob cmdlet. jobDefinitionFile 変数の値は、ジョブ定義 JSON ファイルを保存したパスに置き換えてください。Replace the value of jobDefinitionFile variable with the path where you've stored the job definition JSON file.

$jobName = "MyStreamingJob"
$jobDefinitionFile = "C:\JobDefinition.json"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -File $jobDefinitionFile `
  -Name $jobName `
  -Force

ジョブへの入力を構成するConfigure input to the job

New-AzStreamAnalyticsInput コマンドレットを使用して、ジョブへの入力を追加します。Add an input to your job by using the New-AzStreamAnalyticsInput cmdlet. このコマンドレットは、パラメーターとして、ジョブ名、ジョブ入力名、リソース グループ名、およびジョブ入力定義を受け取ります。This cmdlet takes the job name, job input name, resource group name, and the job input definition as parameters. ジョブ入力定義は、ジョブの入力の構成に必要なプロパティを含む JSON ファイルです。The job input definition is a JSON file that contains the properties required to configure the job’s input. この例では、BLOB ストレージを入力として作成します。In this example, you'll create a blob storage as an input.

ローカル マシンに JobInputDefinition.json という名前のファイルを作成し、次の JSON データを追加します。On your local machine, create a file named JobInputDefinition.json and add the following JSON data to it. accesspolicykey の値は必ず、前のセクションで保存した IoT ハブの接続文字列の SharedAccessKey 部分に置き換えてください。Make sure to replace the value for accesspolicykey with the SharedAccessKey portion of the IoT Hub connection string you saved in a previous section.

{
    "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"
}

次に、New-AzStreamAnalyticsInput コマンドレットを実行します。jobDefinitionFile 変数の値は必ず、ジョブ入力定義 JSON ファイルを保存したパスに置き換えてください。Next, run the New-AzStreamAnalyticsInput cmdlet, make sure to replace the value of jobDefinitionFile variable with the path where you've stored the job input definition JSON file.

$jobInputName = "IoTHubInput"
$jobInputDefinitionFile = "C:\JobInputDefinition.json"
New-AzStreamAnalyticsInput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobInputDefinitionFile `
  -Name $jobInputName

ジョブへの出力を構成するConfigure output to the job

New-AzStreamAnalyticsOutput コマンドレットを使用して、ジョブへの出力を追加します。Add an output to your job by using the New-AzStreamAnalyticsOutput cmdlet. このコマンドレットは、パラメーターとして、ジョブ名、ジョブ出力名、リソース グループ名、およびジョブ出力定義を受け取ります。This cmdlet takes the job name, job output name, resource group name, and the job output definition as parameters. ジョブ出力定義は、ジョブの出力の構成に必要なプロパティを含む JSON ファイルです。The job output definition is a JSON file that contains the properties required to configure job’s output. この例では、BLOB ストレージを出力として使用します。This example uses blob storage as output.

ローカル マシンに JobOutputDefinition.json という名前のファイルを作成し、次の JSON データを追加します。On your local machine, create a file named JobOutputDefinition.json, and add the following JSON data to it. accountKey の値は、ストレージ アカウントのアクセス キー ($storageAccountKey 値に格納されている値) に置き換えてください。Make sure to replace the value for accountKey with your storage account’s access key that is the value stored in $storageAccountKey value.

{
    "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"
}

次に、New-AzStreamAnalyticsOutput コマンドレットを実行します。Next, run the New-AzStreamAnalyticsOutput cmdlet. jobOutputDefinitionFile 変数の値は、ジョブ出力定義 JSON ファイルを保存したパスに置き換えてください。Make sure to replace the value of jobOutputDefinitionFile variable with the path where you have stored the job output definition JSON file.

$jobOutputName = "BlobOutput"
$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"
New-AzStreamAnalyticsOutput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobOutputDefinitionFile `
  -Name $jobOutputName -Force

変換クエリを定義するDefine the transformation query

New-AzStreamAnalyticsTransformation コマンドレットを使用して、ジョブの変換を追加します。Add a transformation your job by using the New-AzStreamAnalyticsTransformation cmdlet. このコマンドレットは、パラメーターとして、ジョブ名、ジョブ変換名、リソース グループ名、およびジョブ変換定義を受け取ります。This cmdlet takes the job name, job transformation name, resource group name, and the job transformation definition as parameters. ローカル マシンに JobTransformationDefinition.json という名前のファイルを作成し、次の JSON データを追加します。On your local machine, create a file named JobTransformationDefinition.json and add the following JSON data to it. JSON ファイルには、変換クエリを定義するクエリ パラメーターが含まれています。The JSON file contains a query parameter that defines the transformation query:

{
    "name":"MyTransformation",
    "type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
    "properties":{
        "streamingUnits":1,
        "script":null,
        "query":" SELECT * INTO BlobOutput FROM IoTHubInput HAVING Temperature > 27"
    }
}

次に、New-AzStreamAnalyticsTransformation コマンドレットを実行します。Next run the New-AzStreamAnalyticsTransformation cmdlet. jobTransformationDefinitionFile 変数の値は必ず、ジョブ変換定義 JSON ファイルを保存したパスに置き換えてください。Make sure to replace the value of jobTransformationDefinitionFile variable with the path where you've stored the job transformation definition JSON file.

$jobTransformationName = "MyJobTransformation"
$jobTransformationDefinitionFile = "C:\JobTransformationDefinition.json"
New-AzStreamAnalyticsTransformation `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobTransformationDefinitionFile `
  -Name $jobTransformationName -Force

IoT シミュレーターを実行するRun the IoT simulator

  1. Raspberry Pi Azure IoT オンライン シミュレーターを開きます。Open the Raspberry Pi Azure IoT Online Simulator.

  2. 行 15 のプレースホルダーを、前のセクションで保存した Azure IoT Hub デバイスの接続文字列全体で置き換えます。Replace the placeholder in Line 15 with the entire Azure IoT Hub Device connection string you saved in a previous section.

  3. [実行] をクリックします。Click Run. お客様の IoT ハブに送信されているセンサー データとメッセージが出力に表示されます。The output should show the sensor data and messages that are being sent to your IoT Hub.

    Raspberry Pi Azure IoT オンライン シミュレーター

Stream Analytics ジョブを開始して出力をチェックするStart the Stream Analytics job and check the output

Start-AzStreamAnalyticsJob コマンドレットを使用して、ジョブを開始します。Start the job by using the Start-AzStreamAnalyticsJob cmdlet. このコマンドレットは、パラメーターとして、ジョブ名、リソース グループ名、出力開始モード、および開始時刻を受け取ります。This cmdlet takes the job name, resource group name, output start mode, and start time as parameters. OutputStartMode には、JobStartTimeCustomTime、または LastOutputEventTime の値が使用できます。OutputStartMode accepts values of JobStartTime, CustomTime, or LastOutputEventTime. これらの値がそれぞれ何を意味しているかについては、PowerShell ドキュメントのパラメーターに関するセクションを参照してください。To learn more about what each of these values are referring to, see the parameters section in PowerShell documentation.

次のコマンドレットを実行すると、ジョブが開始されたときに出力として True が返されます。After you run the following cmdlet, it returns True as output if the job starts. 変換されたデータが含まれた出力フォルダーがストレージ コンテナーに作成されます。In the storage container, an output folder is created with the transformed data.

Start-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -OutputStartMode 'JobStartTime'

リソースをクリーンアップするClean up resources

リソース グループ、ストリーミング ジョブ、および関連するすべてのリソースは、不要になったら削除します。When no longer needed, delete the resource group, the streaming job, and all related resources. ジョブを削除すると、ジョブによって消費されるストリーミング ユニットに対する課金を回避することができます。Deleting the job avoids billing the streaming units consumed by the job. ジョブを後で使用する計画がある場合、削除をスキップしてこのジョブを一時的に停止できます。If you're planning to use the job in future, you can skip deleting it, and stop the job for now. このジョブを今後使用しない場合には、次のコマンドレットを実行して、このクイック スタートで作成したすべてのリソースを削除してください。If you aren't going to continue to use this job, delete all resources created by this quickstart by running the following cmdlet:

Remove-AzResourceGroup `
  -Name $resourceGroup

次のステップNext steps

このクイック スタートでは、PowerShell を使用して、簡単な Stream Analytics ジョブをデプロイしました。In this quickstart, you deployed a simple Stream Analytics job using PowerShell. Azure portalVisual Studio を使用して Stream Analytics ジョブをデプロイすることもできます。You can also deploy Stream Analytics jobs using the Azure portal and Visual Studio.

その他の入力ソースの構成やリアルタイム検出の実行について学習するには、次の記事に進んでください。To learn about configuring other input sources and performing real-time detection, continue to the following article: