إنشاء اشتراكات Azure لاتفاقية شركاء Microsoft برمجياً مع أحدث واجهات برمجة التطبيقات

تساعدك هذه المقالة في إنشاء اشتراكات Azure برمجياً لاتفاقية شركاء Microsoft باستخدام أحدث إصدارات واجهة برمجة التطبيقات. إذا كنت لا تزال تستخدم إصدار المعاينة الأقدم، فراجع إنشاء اشتراكات Azure برمجياً باستخدام واجهات برمجة التطبيقات القديمة.

في هذه المقالة، ستتعرف على كيفية إنشاء اشتراكات برمجياً باستخدام مدير موارد Azure.

عند إنشاء اشتراك Azure برمجياً، يخضع هذا الاشتراك للاتفاقية التي حصلت بموجبها على خدمات Azure من Microsoft أو من بائع معتمد. لمزيد من المعلومات، راجع معلومات Microsoft Azure القانونية .

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لا يمكنك إنشاء خطط الدعم برمجيا. يمكنك شراء خطة دعم جديدة أو ترقية خطة في مدخل Microsoft Azure. انتقل إلى Help + support ثم في أعلى الصفحة، حدد Choose the right support plan.

المتطلبات الأساسية

يجب أن يكون لديك دور مسؤول عالمي أو عامل إداري في حساب Cloud Solution Provider الخاص بمؤسستك لإنشاء اشتراك لحساب الفوترة الخاص بك. لمزيد من المعلومات، راجع مركز الشركاء - تعيين أدوار المستخدمين وأذوناتهم .

إذا كنت لا تعرف ما إذا كان لديك حق الوصول إلى حساب اتفاقية شركاء Microsoft أم لا، فراجع التحقق من الوصول إلى اتفاقية شركاء Microsoft.

تستخدم الأمثلة التالية واجهات برمجة تطبيقات REST. حالياً، PowerShell و Azure CLI غير مدعومين.

ابحث عن حسابات الفواتير التي يمكنك الوصول إليها

قم بإجراء الطلب التالي لسرد جميع حسابات الفوترة التي يمكنك الوصول إليها.

GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01

تسرد استجابة واجهة برمجة التطبيقات حسابات الفوترة.

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "name": "99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "properties": {
        "accountStatus": "Active",
        "accountType": "Partner",
        "agreementType": "MicrosoftPartnerAgreement",
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "hasReadAccess": true
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

استخدم الخاصية displayName لتحديد حساب الفوترة الذي تريد إنشاء اشتراكات له. تأكد من أن نوع اتفاقية الحساب هو اتفاقية شركاء Microsoft . انسخ name للحساب. على سبيل المثال، لإنشاء اشتراك في Contoso حساب الفواتير، انسخ 99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx. الصق القيمة في مكان ما بحيث يمكنك استخدامها في الخطوة التالية.

ابحث عن العملاء الذين لديهم خطط Azure

قم بإجراء الطلب التالي، مع نسخ name من الخطوة الأولى ( 99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx ) لسرد جميع العملاء في حساب الفوترة الذين يمكنك إنشاء اشتراكات Azure لهم.

GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers?api-version=2020-05-01

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

{
  "totalCount": 2,
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "name": "7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "properties": {
        "billingProfileDisplayName": "Fabrikam toys Billing Profile",
        "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
        "displayName": "Fabrikam toys"
      },
      "type": "Microsoft.Billing/billingAccounts/customers"
    },
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "name": "acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "properties": {
        "billingProfileDisplayName": "Contoso toys Billing Profile",
        "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
        "displayName": "Contoso toys"
      },
      "type": "Microsoft.Billing/billingAccounts/customers"
    }
  ]
}

استخدم الخاصية displayName لتحديد العميل الذي تريد إنشاء اشتراكات له. انسخ id للعميل. على سبيل المثال، لإنشاء اشتراك لـ Fabrikam toys، انسخ /providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx. الصق القيمة في مكان ما لاستخدامها في خطوات لاحقة.

الحصول على البائعين للعميل

هذا المقطع اختياري لمقدمي الخدمات غير المباشرة فقط.

إذا كنت موفراً غير مباشر في نموذج CSP ثنائي المستوى، فيمكنك تحديد مورِّد أثناء إنشاء اشتراكات للعملاء.

قم بإجراء الطلب التالي، مع نسخ id من الخطوة الثانية ( /providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx ) لسرد جميع البائعين المتوفرين للعميل.

GET "https://management.azure.com/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx?$expand=resellers&api-version=2020-05-01"

تسرد استجابة واجهة برمجة التطبيقات البائعين للعميل:

{
  "value": [{
  "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "type": "Microsoft.Billing/billingAccounts/customers",
  "properties": {
    "billingProfileDisplayName": "Fabrikam toys Billing Profile",
    "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
    "displayName": "Fabrikam toys",
    "resellers": [
      {
        "resellerId": "3xxxxx",
        "description": "Wingtip"
      }
    ]
  }
}]
}

استخدم الخاصية description لتحديد البائع المقترن بالاشتراك. انسخ resellerId الخاص بالمورِّد. على سبيل المثال، لربط Wingtip، انسخ 3xxxxx. الصق القيمة في مكان ما بحيث يمكنك استخدامها في الخطوة التالية.

إنشاء اشتراك للعميل

ينشئ المثال التالي اشتراكاً باسم اشتراك Dev Team لـ Fabrikam toys ومورد Wingtip للاشتراك. يمكنك استخدام نطاق الفوترة المنسوخ من الخطوة السابقة: /providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

PUT  https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2021-10-01

نص الطلب

{
  "properties":
    {
        "billingScope": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "DisplayName": "Dev Team subscription",
        "Workload": "Production"
    }
}

الرد

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Accepted"
  }
}

يمكنك القيام بـ GET على نفس عنوان URL للحصول على حالة الطلب.

Request

GET https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2021-10-01

استجابة

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Succeeded"
  }
}

يتم إرجاع حالة قيد التقدم كحالة Accepted ضمن provisioningState.

تمرير معرف البائع الاختياري المنسوخ من الخطوة الثانية في نص الطلب لواجهة برمجة التطبيقات.

استخدم قالب ARM أو العضلة ذات الرأسين

أظهر القسم السابق كيفية إنشاء اشتراك باستخدام PowerShell أو CLI أو واجهة برمجة تطبيقات REST. إذا كنت بحاجة إلى أتمتة إنشاء الاشتراكات، ففكر في استخدام قالب Azure Resource Manager (قالب ARM) أو ملف Bicep.

ينشئ نموذج ARM التالي اشتراكاً. بالنسبة إلى billingScope، وفّر معرف العميل. تم إنشاء الاشتراك في مجموعة إدارة الجذر. بعد إنشاء الاشتراك، يمكنك نقله إلى مجموعة إدارة أخرى.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionAliasName": {
            "type": "string",
            "metadata": {
                "description": "Provide a name for the alias. This name will also be the display name of the subscription."
            }
        },
        "billingScope": {
            "type": "string",
            "metadata": {
                "description": "Provide the full resource ID of billing scope to use for subscription creation."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "name": "[parameters('subscriptionAliasName')]",
            "type": "Microsoft.Subscription/aliases",
            "apiVersion": "2021-10-01",
            "properties": {
                "workLoad": "Production",
                "displayName": "[parameters('subscriptionAliasName')]",
                "billingScope": "[parameters('billingScope')]"
            }
        }
    ],
    "outputs": {}
}

أو استخدم ملف Bicep لإنشاء الاشتراك.

targetScope = 'managementGroup'

@description('Provide a name for the alias. This name will also be the display name of the subscription.')
param subscriptionAliasName string

@description('Provide the full resource ID of billing scope to use for subscription creation.')
param billingScope string

resource subscriptionAlias 'Microsoft.Subscription/aliases@2021-10-01' = {
  scope: tenant()
  name: subscriptionAliasName
  properties: {
    workload: 'Production'
    displayName: subscriptionAliasName
    billingScope: billingScope
  }
}

انشر القالب على مستوى مجموعة الإدارة. تظهر الأمثلة التالية نشر قالب ARM JSON ولكن يمكنك نشر ملف Bicep بدلاً من ذلك.

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01

مع نص الطلب:

{
  "location": "eastus",
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
    },
    "parameters": {
      "subscriptionAliasName": {
        "value": "sampleAlias"
      },
      "billingScope": {
        "value": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    },
    "mode": "Incremental"
  }
}

لنقل اشتراك إلى مجموعة إدارة جديدة، استخدم نموذج مدير موارد Azure التالي.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "targetMgId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the management group that you want to move the subscription to."
            }
        },
        "subscriptionId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the existing subscription to move."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "type": "Microsoft.Management/managementGroups/subscriptions",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('targetMgId'), '/', parameters('subscriptionId'))]",
            "properties": {
            }
        }
    ],
    "outputs": {}
}

أو ملف Bicep التالي.

targetScope = 'managementGroup'

@description('Provide the ID of the management group that you want to move the subscription to.')
param targetMgId string

@description('Provide the ID of the existing subscription to move.')
param subscriptionId string

resource subToMG 'Microsoft.Management/managementGroups/subscriptions@2020-05-01' = {
  scope: tenant()
  name: '${targetMgId}/${subscriptionId}'
}

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