إنشاء مركز إنترنت الأشياء باستخدام قالب Azure Resource Manager (.NET)
يمكنك استخدام Azure Resource Manager لإنشاء موزعات Azure IoT وإدارتها برمجيا. يوضح لك هذا البرنامج التعليمي كيفية استخدام قالب Azure Resource Manager لإنشاء مركز إنترنت الأشياء من برنامج C #.
ملاحظة
يحتوي Azure على نموذجين مختلفين للنشر لإنشاء الموارد والعمل معها: Azure Resource Manager و classic. تتناول هذه المقالة استخدام نموذج نشر Azure Resource Manager.
ملاحظة
تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
لاستكمال هذا البرنامج التعليمي، ستحتاج إلى ما يلي:
- Visual Studio.
- حساب Azure نشط.
إذا لم يكن لديك حساب، يمكنك إنشاء حساب مجاني في بضع دقائق فقط. - حساب Azure Storage حيث يمكنك تخزين ملفات قوالب Azure Resource Manager.
- Azure PowerShell 1.0 أو أحدث.
الاستعداد لمصادقة طلبات Azure Resource Manager
يجب مصادقة كافة العمليات التي تقوم بها على الموارد باستخدام Azure Resource Manager باستخدام Azure Active Directory (AD). أسهل طريقة لتكوين هذا هي استخدام PowerShell أو Azure CLI.
قم بتثبيت cmdlets Azure PowerShell قبل المتابعة.
توضح الخطوات التالية كيفية إعداد مصادقة كلمة المرور لتطبيق AD باستخدام PowerShell. يمكنك تشغيل هذه الأوامر في جلسة عمل PowerShell قياسية.
سجل الدخول إلى اشتراكك في Azure باستخدام الأمر التالي:
Connect-AzAccountإذا كان لديك اشتراكات Azure متعددة، فإن تسجيل الدخول إلى Azure يمنحك حق الوصول إلى جميع اشتراكات Azure المقترنة ببيانات الاعتماد الخاصة بك. استخدم الأمر التالي لسرد اشتراكات Azure المتوفرة لك لاستخدامها:
Get-AzSubscriptionاستخدم الأمر التالي لتحديد الاشتراك الذي تريد استخدامه لتشغيل الأوامر لإدارة مركز إنترنت الأشياء. يمكنك استخدام اسم الاشتراك، أو معرف ID من إخراج الأمر السابق:
Select-AzSubscription ` -SubscriptionName "{your subscription name}"قم بتدوين معرف المستأجر ومعرفالاشتراك. أنت في حاجة إليها لاحقا.
قم بإنشاء تطبيق Azure Active Directory جديد باستخدام الأمر التالي، ليحل محل العناصر النائبة:
{اسم العرض}: اسم عرض للتطبيق الخاص بك مثل MySampleApp
{عنوان URL للصفحة الرئيسية}: عنوان URL للصفحة الرئيسية لتطبيقك مثل http://mysampleapp/home. لا يحتاج عنوان URL هذا إلى الإشارة إلى تطبيق حقيقي.
{معرف التطبيق}: معرف فريد مثل http://mysampleapp. لا يحتاج عنوان URL هذا إلى الإشارة إلى تطبيق حقيقي.
{كلمة المرور}: كلمة مرور تستخدمها للمصادقة مع تطبيقك.
$SecurePassword=ConvertTo-SecureString {password} –asplaintext –force New-AzADApplication -DisplayName {Display name} -HomePage {Home page URL} -IdentifierUris {Application identifier} -Password $SecurePassword
قم بتدوين ApplicationId الخاص بالتطبيق الذي قمت بإنشائه. أنت بحاجة إلى هذا لاحقا.
قم بإنشاء أصل خدمة جديد باستخدام الأمر التالي، واستبدال {MyApplicationId} ب ApplicationId من الخطوة السابقة:
New-AzADServicePrincipal -ApplicationId {MyApplicationId}قم بإعداد تعيين دور باستخدام الأمر التالي، واستبدال {MyApplicationId} بمعرفالتطبيق.
New-AzRoleAssignment -RoleDefinitionName Owner -ServicePrincipalName {MyApplicationId}
لقد انتهيت الآن من إنشاء تطبيق Azure AD الذي يمكنك من المصادقة من تطبيق C # المخصص. تحتاج إلى القيم التالية لاحقا في هذا البرنامج التعليمي:
- TenantID
- SubscriptionId
- معرف التطبيق
- كلمة المرور
قم بإعداد مشروع Visual Studio الخاص بك
في Visual Studio، قم بإنشاء مشروع سطح مكتب Visual C# Windows الكلاسيكي باستخدام قالب مشروع تطبيق وحدة التحكم (.NET Framework). قم بتسمية المشروع CreateIoTHub.
في مستكشف الحلول، انقر بزر الماوس الأيمن فوق مشروعك ثم انقر فوق إدارة حزم NuGet.
في NuGet مدير الحِزَم، حدد تضمين الإصدار التجريبي، وعلى صفحة استعراض البحث عن Microsoft.Azure.Management.ResourceManager. حدد الحزمة، انقر فوق تثبيت، في مراجعة التغييرات ، انقر فوق موافق، ثم انقر فوق أوافق لقبول التراخيص.
في مدير الحِزَم NuGet، ابحث عن Microsoft.IdentityModel.Clients.ActiveDirectory. انقر فوق تثبيت، في مراجعة التغييرات، انقر فوق موافق، ثم انقر فوق أوافق لقبول الترخيص.
في البرنامج.cs، استبدل العبارات الموجودة باستخدام التعليمات البرمجية التالية:
using System; using Microsoft.Azure.Management.ResourceManager; using Microsoft.Azure.Management.ResourceManager.Models; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Microsoft.Rest;في البرنامج.cs، أضف المتغيرات الثابتة التالية لتحل محل قيم العناصر النائبة. لقد قمت بتدوين ApplicationID و SubscriptionId و TenantID و Password في وقت سابق من هذا البرنامج التعليمي. اسم حساب تخزين Azure الخاص بك هو اسم حساب Azure Storage حيث تقوم بتخزين ملفات قوالب Azure Resource Manager. اسم مجموعة الموارد هو اسم مجموعة الموارد التي تستخدمها عند إنشاء مركز إنترنت الأشياء. يمكن أن يكون الاسم مجموعة موارد موجودة مسبقا أو جديدة. اسم النشر هو اسم للنشر، مثل Deployment_01.
static string applicationId = "{Your ApplicationId}"; static string subscriptionId = "{Your SubscriptionId}"; static string tenantId = "{Your TenantId}"; static string password = "{Your application Password}"; static string storageAddress = "https://{Your storage account name}.blob.core.windows.net"; static string rgName = "{Resource group name}"; static string deploymentName = "{Deployment name}";
الحصول على رمز Azure Resource Manager مميز
يجب أن يقوم Azure Active Directory بمصادقة كافة المهام التي تقوم بتنفيذها على الموارد باستخدام Resource Manager Azure. يستخدم المثال الموضح هنا مصادقة كلمة المرور، للاطلاع على الأساليب الأخرى، راجع مصادقة طلبات Resource Manager Azure.
أضف التعليمة البرمجية التالية إلى الطريقة الرئيسية في البرنامج.cs لاسترداد رمز مميز من Azure AD باستخدام معرف التطبيق وكلمة المرور.
var authContext = new AuthenticationContext(string.Format ("https://login.microsoftonline.com/{0}", tenantId)); var credential = new ClientCredential(applicationId, password); AuthenticationResult token = authContext.AcquireTokenAsync ("https://management.core.windows.net/", credential).Result; if (token == null) { Console.WriteLine("Failed to obtain the token"); return; }إنشاء كائن ResourceManagementClient يستخدم الرمز المميز عن طريق إضافة التعليمة البرمجية التالية إلى نهاية الأسلوب الرئيسي :
var creds = new TokenCredentials(token.AccessToken); var client = new ResourceManagementClient(creds); client.SubscriptionId = subscriptionId;قم بإنشاء مجموعة الموارد التي تستخدمها أو الحصول على مرجع إليها:
var rgResponse = client.ResourceGroups.CreateOrUpdate(rgName, new ResourceGroup("East US")); if (rgResponse.Properties.ProvisioningState != "Succeeded") { Console.WriteLine("Problem creating resource group"); return; }
إرسال قالب لإنشاء مركز إنترنت الأشياء
استخدم قالب JSON وملف معلمة لإنشاء مركز إنترنت الأشياء في مجموعة الموارد الخاصة بك. يمكنك أيضا استخدام قالب Azure Resource Manager لإجراء تغييرات على مركز إنترنت الأشياء الحالي.
في مستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع، ثم انقر فوق إضافة، ثم انقر فوق عنصر جديد. أضف ملف JSON يسمى template.json إلى مشروعك.
لإضافة مركز إنترنت الأشياء القياسي إلى منطقة شرق الولايات المتحدة ، استبدل محتويات template.json بتعريف المورد التالي. للحصول على القائمة الحالية للمناطق التي تدعم IoT Hub، راجع حالة Azure:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "hubName": { "type": "string" } }, "resources": [ { "apiVersion": "2016-02-03", "type": "Microsoft.Devices/IotHubs", "name": "[parameters('hubName')]", "location": "East US", "sku": { "name": "S1", "tier": "Standard", "capacity": 1 }, "properties": { "location": "East US" } } ], "outputs": { "hubKeys": { "value": "[listKeys(resourceId('Microsoft.Devices/IotHubs', parameters('hubName')), '2016-02-03')]", "type": "object" } } }في مستكشف الحلول، انقر بزر الماوس الأيمن فوق المشروع، ثم انقر فوق إضافة، ثم انقر فوق عنصر جديد. أضف ملف JSON يسمى parameters.json إلى مشروعك.
استبدل محتويات parameters.json بمعلومات المعلمة التالية التي تعين اسما لمركز إنترنت الأشياء الجديد مثل {الأحرف الأولى من اسمك}mynewiothub. يجب أن يكون اسم مركز إنترنت الأشياء فريدا من نوعه عالميا لذا يجب أن يتضمن اسمك أو الأحرف الأولى من اسمك:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "hubName": { "value": "mynewiothub" } } }هام
لأن مركز IoT مُكتشف بشكل عام كنقطة نهاية DNS، يُرجى التأكد من تجنب إدخال أي معلومات تعريف حساسة أو شخصية عند إضافة اسم لها.
في مستكشف الخادم، اتصل باشتراك Azure الخاص بك، وفي حساب تخزين Azure الخاص بك قم بإنشاء حاوية تسمى القوالب. في لوحة خصائص ، قم بتعيين أذونات الوصول للقراءة العامة لحاوية القوالب إلى Blob.
في " مستكشف الملقم" ، انقر بزر الماوس الأيمن فوق حاوية القوالب ثم انقر فوق عرض حاوية Blob. انقر فوق الزر Upload Blob، وحدد الملفين، parameters.json وtemplates.json، ثم انقر فوق فتح لتحميل ملفات JSON إلى حاوية القوالب. عناوين URL للنقاط التي تحتوي على بيانات JSON هي:
https://{Your storage account name}.blob.core.windows.net/templates/parameters.json https://{Your storage account name}.blob.core.windows.net/templates/template.jsonأضف الطريقة التالية إلى البرنامج.cs:
static void CreateIoTHub(ResourceManagementClient client) { }قم بإضافة التعليمة البرمجية التالية إلى الأسلوب CreateIoTHub لإرسال ملفات القالب والمعلمات إلى Resource Manager Azure:
var createResponse = client.Deployments.CreateOrUpdate( rgName, deploymentName, new Deployment() { Properties = new DeploymentProperties { Mode = DeploymentMode.Incremental, TemplateLink = new TemplateLink { Uri = storageAddress + "/templates/template.json" }, ParametersLink = new ParametersLink { Uri = storageAddress + "/templates/parameters.json" } } });قم بإضافة التعليمة البرمجية التالية إلى الأسلوب CreateIoTHub الذي يعرض الحالة والمفاتيح الخاصة بمركز إنترنت الأشياء الجديد:
string state = createResponse.Properties.ProvisioningState; Console.WriteLine("Deployment state: {0}", state); if (state != "Succeeded") { Console.WriteLine("Failed to create iothub"); } Console.WriteLine(createResponse.Properties.Outputs);
إكمال التطبيق وتشغيله
يمكنك الآن إكمال التطبيق عن طريق استدعاء طريقة CreateIoTHub قبل إنشائه وتشغيله.
قم بإضافة التعليمة البرمجية التالية إلى نهاية الأسلوب الرئيسي :
CreateIoTHub(client); Console.ReadLine();انقر فوق إنشاء ثم فوق إنشاء حل. تصحيح أي أخطاء.
انقر فوق تصحيح الأخطاء ثم ابدأ تصحيح الأخطاء لتشغيل التطبيق. قد يستغرق الأمر عدة دقائق لتشغيل النشر.
للتحقق من إضافة تطبيقك لمركز إنترنت الأشياء الجديد، تفضل بزيارة مدخل Azure واعرض قائمة الموارد. بدلا من ذلك، استخدم cmdlet Get-AzResource PowerShell.
ملاحظة
يضيف تطبيق المثال هذا S1 Standard IoT Hub الذي تتم محاسبتك عليه. يمكنك حذف مركز إنترنت الأشياء من خلال مدخل Azure أو باستخدام cmdlet Remove-AzResource PowerShell عند الانتهاء.
الخطوات التالية
الآن قمت بنشر مركز إنترنت الأشياء باستخدام قالب Azure Resource Manager مع برنامج C # ، قد ترغب في استكشاف المزيد:
- اقرأ عن إمكانات موفر موارد IoT Hub REST API.
- اقرأ نظرة عامة على Azure Resource Manager لمعرفة المزيد حول إمكانات Azure Resource Manager.
- للحصول على بناء جملة JSON وخصائصه لاستخدامها في القوالب، راجع أنواع موارد Microsoft.Devices.
لمعرفة المزيد حول التطوير ل IoT Hub، راجع المقالات التالية:
لمزيد من استكشاف إمكانات IoT Hub، راجع: