التشغيل السريع - إنشاء وظيفة Stream Analytics باستخدام Azure PowerShell

تُستخدم الوحدة النمطية Azure PowerShell لإنشاء موارد Azure وإدارتها باستخدام PowerShell cmdlets أو البرامج النصية. يوضح هذا التشغيل السريع كيفية استخدام الوحدة النمطية Azure PowerShell لنشر وتشغيل مهمة Azure Stream Analytics.

تقرأ عينة الوظيفة دفق البيانات من جهاز IoT Hub. يتم إنشاء بيانات الإدخال بواسطة جهاز محاكاة Raspberry Pi عبر الإنترنت. تحول مهمة Stream Analytics البيانات باستخدام لغة استعلام Stream Analytics لتصفية الرسائل ذات درجة حرارة أكبر من 27 درجة. ثم يكتب أحداث الإخراج الناتجة في ملف في تخزين كائن ثنائي كبير الحجم.

قبل أن تبدأ

  • إذا لم يكن لديك اشتراك Azure، فقم بإنشاء حساب مجاني.
  • يتطلب هذا التشغيل السريع وحدة Azure PowerShell النمطية. شغل Get-Module -ListAvailable Az للبحث عن الإصدار المثبت على الجهاز المحلي الخاص بك. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت وحدة Azure PowerShell.
  • لا يدعم Azure PowerShell بعض إجراءات IoT Hub ويجب إكمالها باستخدام الإصدار 2.0.70 من Azure CLI أو أحدث وملحق IoT ل Azure CLI. تثبيت Azure CLI واستخدام az extension add --name azure-iot لتثبيت ملحق IoT.

تسجيل الدخول إلى Azure

سجل الدخول إلى اشتراك Azure باستخدام Connect-AzAccount الأمر، وأدخل بيانات اعتماد Azure الخاصة بك في المتصفح المنبثق:

# Connect to your Azure account
Connect-AzAccount

إذا كان لديك أكثر من اشتراك واحد، حدد الاشتراك الذي ترغب في استخدامه لهذه البداية السريعة من خلال تشغيل cmdlets التالية. تأكد من استبدال <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

قم بإنشاء مجموعة موارد

إنشاء مجموعة موارد Azure باستخدام New-AzResourceGroup. تُعد مجموعة الموارد حاوية منطقية يتم فيها نشر موارد Azure وإدارتها.

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

قم بإعداد بيانات الإدخال

قبل تحديد وظيفة Stream Analytics، عليك إعداد البيانات التي تم تكوينها كمدخل للوظيفة.

تحتوي كتلة التعليمات البرمجية Azure CLI التالية على العديد من الأوامر لإعداد بيانات الإدخال المطلوبة من قبل الوظيفة. راجع الأقسام التالية لفهم التعليمات البرمجية.

  1. في نافذة PowerShell، قم بتشغيل az login الأمر لتسجيل الدخول إلى حساب Azure الخاص بك.

    عند تسجيل الدخول بنجاح، يقوم Azure CLI بإرجاع قائمة الاشتراكات الخاصة بك. انسخ الاشتراك الذي تستخدمه لهذا التشغيل السريع وقم بتشغيل az account set الأمر لتحديد هذا الاشتراك. اختر نفس الاشتراك الذي حددته في القسم السابق باستخدام PowerShell. تأكد من استبدال <your subscription name> باسم اشتراكك.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. إنشاء IoT Hub باستخدام az iot hub create الأمر . ينشئ هذا المثال IoT Hub يسمى MyASAIoTHub. نظرًا لأن أسماء IoT Hub فريدة من نوعها، تحتاج إلى ابتكار اسم IoT Hub الخاص بك. قم بتعيين SKU إلى F1 لاستخدام المستوى المجاني إذا كان متوفرا مع اشتراكك. إذا لم يكن كذلك، اختر المستوى الأدنى التالي.

    az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
    

    بمجرد إنشاء مركز IoT، احصل على سلسلة اتصال IoT Hub باستخدام الأمر az iot hub show-connection-string. انسخ سلسلة الاتصال بأكملها واحفظها. تحتاج إليه عند إضافة IoT Hub كمدخل إلى وظيفة Stream Analytics.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. أضف جهازا إلى IoT Hub باستخدام az iot hub device-identity create الأمر . ينشئ هذا المثال جهازًا يسمى MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. احصل على سلسلة اتصال الجهاز باستخدام 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=
    

إنشاء مخزن كائنات ثنائية كبيرة

يستخدم قالب التعليمات البرمجية لـAzure PowerShell التالي أوامر لإنشاء مخزن كائنات ثنائية صغيرة المستخدمة لإخراج الوظيفة. راجع الأقسام لفهم التعليمات البرمجية.

  1. إنشاء حساب تخزين موحد ذات أغراض عامة باستخدام New-AzStorageAccount cmdlet. ينشئ هذا المثال حساب تخزين يسمى myasaquickstartstorage مع التخزين المكرر محليا (LRS) وتشفير الكائنات الثنائية الكبيرة (مفعلة بشكل افتراضي).

  2. استرداد سياق حساب التخزين $storageAccount.Context الذي يعرف حساب التخزين ليتم استخدامه. عند العمل على حسابات التخزين، يمكنك الإشارة إلى السياق بدلاً من تقديم بيانات الاعتماد بشكل متكرر.

  3. إنشاء حاوية تخزين باستخدام New-AzStorageContainer.

  4. انسخ مفتاح التخزين الذي يتم إخراجه بواسطة التعليمات البرمجية، واحفظ هذا المفتاح لإنشاء إخراج وظيفة التدفق لاحقا.

    $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

إنشاء وظيفة Stream Analytics باستخدام New-AzStreamAnalyticsJob cmdlet. يأخذ cmdlet هذا اسم الوظيفة واسم مجموعة الموارد والموقع واسم sku كمعلمات. يمكن أن يكون اسم الوظيفة أي اسم مألوف يحدد وظيفتك. من الممكن أن تحتوي على أحرف أبجدية رقمية، وواصلات، وشرطات سفلية فقط ويجب أن يتراوح طولها بين 3 و 63 حرفًا.

تشغيل ⁧New-AzStreamAnalyticsJob⁩ cmdlet.

$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -Location centralus `
  -SkuName Standard

تكوين الإدخال إلى المهمة

أضف مُدخلاً إلى وظيفتك باستخدام الأمر New-AzStreamAnalyticsInput cmdlet. يأخذ هذا الأمر cmdlet اسم المهمة، واسم إدخال المهمة، واسم مجموعة الموارد، وتعريف إدخال المهمة كمعلمات. تعريف إدخال المهمة هو ملف JSON يحتوي على الخصائص المطلوبة لتكوين إدخال المهمة. في هذا المثال، يمكنك إنشاء تخزين كائن ثنائي كبير الحجم كمدخل.

على جهازك المحلي، قم بإنشاء ملف باسم JobInputDefinition.json وإضافة بيانات JSON التالية إليه.

هام

  • استبدل accesspolicykey بجزء SharedAccessKey سلسلة اتصال IoT Hub التي حفظتها في قسم سابق.
  • إذا استخدمت اسما مختلفا لمركز 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"
}

$jobInputDefinitionFile قم بتعيين متغير PowerShell إلى المسار حيث قمت بتخزين ملف JSON لتعريف إدخال الوظيفة.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

بعد ذلك، قم بتشغيل New-AzStreamAnalyticsInput cmdlet لإنشاء إدخال Azure IoT Hub لوظيفة Stream Analytics.

$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobInputDefinitionFile `
  -Name $jobInputName

تكوين الإخراج إلى الوظيفة

أضف مُدخلاً إلى وظيفتك باستخدام الأمر New-AzStreamAnalyticsOutput cmdlet. يأخذ هذا الأمر cmdlet اسم الوظيفة، واسم إخراج الوظيفة، واسم مجموعة الموارد، وتعريف إخراج الوظيفة كمعلمات. تعريف إخراج المهمة هو ملف JSON يحتوي على الخصائص المطلوبة لتكوين إخراج الوظيفة. يستخدم هذا المثال مخزن كائنات ثنائية كبيرة كناتج.

على جهازك المحلي، قم بإنشاء ملف باسم 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"
}

$jobOutputDefinitionFile قم بتعيين متغير PowerShell إلى المسار حيث قمت بتخزين ملف JSON لتعريف إخراج الوظيفة.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

بعد ذلك، قم بتشغيل New-AzStreamAnalyticsOutput cmdlet لإنشاء إخراج Azure Blob Storage لوظيفة Stream Analytics.

$jobOutputName = "BlobOutput"

New-AzStreamAnalyticsOutput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobOutputDefinitionFile `
  -Name $jobOutputName

حدد استعلام التحويل

أضف تحويلًا للوظيفة الخاصة بك باستخدام أمر New-AzStreamAnalyticsTransformation cmdlet. يأخذ هذا الأمر cmdlet اسم الوظيفة، واسم تحويل الوظيفة، واسم مجموعة الموارد، وتعريف تحويل الوظيفة كمعلمات. على جهازك المحلي، قم بإنشاء ملف باسم 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"
    }
}

بعد ذلك، قم بتشغيل الأمر cmdlet 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

  1. افتح Raspberry Pi Azure IoT Online Simulator .

  2. استبدل العنصر النائب في السطر 15 بسلسلة اتصال الجهاز Azure IoT Hub بالكامل الذي حفظتها في قسم سابق.

  3. انقر فوق⁧⁩Run⁧⁩. يجب أن يُظهر الإخراج بيانات المستشعر والرسائل المُرسلة إلى مركز loT الخاص بك.

    لقطة شاشة تعرض Raspberry Pi Azure IoT Online Simulator.

ابدأ وظيفة Stream Analytics وتحقق من الإخراج

بدء الوظيفة باستخدام Start-AzStreamAnalyticsJob cmdlet. يأخذ هذا الأمر cmdlet اسم الوظيفة، واسم مجموعة الموارد، ووضع بدء الإخراج، ووقت البدء كمعلمات. OutputStartMode يقبل قيم JobStartTime، CustomTime أو LastOutputEventTime. لمعرفة المزيد حول ما تشير إليه كل من هذه القيم، راجع قسم المعلمات في وثائق PowerShell.

بعد تشغيل الأمر cmdlet التالي، فإنه يقوم بإعادة True كإخراج إذا بدأت الوظيفة. في حاوية التخزين، يتم إنشاء مجلد إخراج مع البيانات المحولة.

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

تنظيف الموارد

عند عدم الحاجة، احذف مجموعة الموارد، ووظيفة التدفق، وكافة الموارد المرتبطة. يؤدي حذف الوظيفة إلى تجنب فوترة الوحدات المتدفقة التي تستهلكها الوظيفة. إذا كنت تخطط لاستخدام الوظيفة في المستقبل، يمكنك تخطي حذفها، وإيقاف الوظيفة في الوقت الحالي. إذا لم تكن تنوي متابعة استخدام هذه الوظيفة، احذف كافة الموارد التي تم إنشاؤها بواسطة التشغيل السريع هذا باستخدام الخطوات التالية:

Remove-AzResourceGroup `
  -Name $resourceGroup

الخطوات التالية

في هذا التشغيل السريع، قمت بنشر وظيفة Stream Analytics بسيطة باستخدام PowerShell. كما يمكنك نشر وظائف Stream Analytics باستخدام مدخل AzureوVisual Studio.

للتعرف على تكوين مصادر الإدخال الأخرى وإجراء الكشف في الوقت الفعلي، تابع إلى المقالة التالية: