Programowe tworzenie subskrypcji umowy Azure Enterprise Agreement przy użyciu najnowszych interfejsów API

Ten artykuł pomaga w programowym tworzeniu subskrypcji umowy Azure Enterprise Agreement dla konta rozliczeniowego umowy EA przy użyciu najnowszych wersji interfejsu API. Jeśli nadal używasz starszej wersji zapoznawczej, zobacz Programowe tworzenie starszych interfejsów API subskrypcji platformy Azure.

W tym artykule dowiesz się, jak programowo tworzyć subskrypcje za pomocą usługi Azure Resource Manager.

Subskrypcja platformy Azure utworzona programowo podlega warunkom umowy, w ramach której nabyto usługi platformy Azure od firmy Microsoft lub autoryzowanego odsprzedawcy. Aby dowiedzieć się więcej, zobacz informacje prawne dotyczące platformy Microsoft Azure.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Nie można programowo tworzyć planów pomocy technicznej. Możesz kupić nowy plan pomocy technicznej lub uaktualnić go w witrynie Azure Portal. Przejdź do pozycji Pomoc i obsługa techniczna , a następnie w górnej części strony wybierz pozycję Wybierz odpowiedni plan pomocy technicznej.

Wymagania wstępne

Aby utworzyć subskrypcję, użytkownik musi mieć rolę Administracja istrator przedsiębiorstwa lub rolę Właściciel na koncie rejestracji. Istnieją dwa sposoby uzyskiwania roli właściciel na koncie rejestracji:

Aby użyć jednostki usługi do utworzenia subskrypcji EA, właściciel konta rejestracji musi przyznać tej jednostce usługi możliwość tworzenia subskrypcji.

W przypadku tworzenia subskrypcji przy użyciu jednostki usługi użyj identyfikatora ObjectId aplikacji Microsoft Entra Enterprise jako identyfikatora jednostki usługi przy użyciu programu Microsoft Graph PowerShell lub interfejsu wiersza polecenia platformy Azure. Aby znaleźć identyfikator obiektu w witrynie Azure Portal dla istniejącej jednostki usługi i identyfikatorów dzierżawy, możesz również użyć kroków opisanych w artykule Znajdowanie jednostki usługi i identyfikatorów dzierżawy.

Aby uzyskać więcej informacji na temat żądania interfejsu API przypisywania ról UMOWY EA, zobacz Przypisywanie ról do nazw głównych usług platformy Azure Umowa Enterprise. Artykuł zawiera listę ról (i identyfikatorów definicji ról), które można przypisać do jednostki usługi.

Uwaga

  • Upewnij się, że używasz prawidłowej wersji interfejsu API, aby nadać uprawnienia właściciela konta rejestracji. Na potrzeby tego artykułu oraz interfejsów API, które opisano w tym artykule, należy użyć interfejsu API w wersji 2019-10-01-preview.
  • Jeśli przeprowadzasz migrację do korzystania z nowszych interfejsów API, poprzednia konfiguracja utworzona w wersji 2015-07-01 nie jest automatycznie konwertowana do użycia z nowszymi interfejsami API.
  • Informacje o koncie rejestracji są widoczne tylko wtedy, gdy rola użytkownika jest właścicielem konta. Jeśli użytkownik ma wiele ról, interfejs API używa najmniej restrykcyjnej roli użytkownika.

Odnajdowanie kont, do których masz dostęp

Po dodaniu Cię do konta rejestracji skojarzonego z właścicielem konta platforma Azure na podstawie relacji konto-rejestracja określa, komu wystawić rachunek za opłaty związane z subskrypcją. Wszystkie subskrypcje utworzone w ramach tego konta są rozliczane w ramach rejestracji umowy EA, do której przypisane jest konto. Aby utworzyć subskrypcje, musisz przekazać wartości dotyczące konta rejestracji i jednostki usługi w celu zostania właścicielem subskrypcji.

Aby uruchomić poniższe polecenia, zaloguj się w katalogu macierzystym właściciela konta, czyli katalogu, w którym domyślnie tworzone są subskrypcje.

Wykonaj żądanie wyświetlenia listy wszystkich kont rejestracji, do których masz dostęp:

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

Odpowiedź interfejsu API będzie zawierała listę wszystkich kont rejestracji, do których masz dostęp:

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/1234567",
      "name": "1234567",
      "properties": {
        "accountStatus": "Unknown",
        "accountType": "Enterprise",
        "agreementType": "EnterpriseAgreement",
        "soldTo": {
          "companyName": "Contoso",
          "country": "US "
        },
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "enrollmentAccounts": [
          {
            "id": "/providers/Microsoft.Billing/billingAccounts/1234567/enrollmentAccounts/7654321",
            "name": "7654321",
            "type": "Microsoft.Billing/enrollmentAccounts",
            "properties": {
              "accountName": "Contoso",
              "accountOwnerEmail": "kenny@contoso.onmicrosoft.com",
              "costCenter": "Test",
              "isDevTest": false
            }
          }
        ],
        "hasReadAccess": false
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

Wartości zakresu rozliczeniowego i id są takie same. Element id dla Twojego konta rejestracji to zakres rozliczeniowy, w ramach którego inicjowane jest żądanie subskrypcji. Ważne jest, aby znać identyfikator, ponieważ jest to wymagany parametr używany w dalszej części artykułu do utworzenia subskrypcji.

Tworzenie subskrypcji w ramach konkretnego konta rejestracji

W poniższym przykładzie na koncie rejestracji wybranym w poprzednim kroku zostanie utworzona subskrypcja o nazwie Dev Team Subscription.

Korzystając z jednej z poniższych metod, utworzysz nazwę aliasu subskrypcji. Zalecamy, aby podczas tworzenia nazwy aliasu:

  • Używanie znaków alfanumerycznych i łączników
  • Zacznij od litery i kończy się znakiem alfanumerycznym
  • Nie używaj okresów

Alias jest używany do prostego podstawienia ciągu zdefiniowanego przez użytkownika zamiast identyfikatora GUID subskrypcji. Innymi słowy, można go użyć jako skrótu. Aby dowiedzieć się więcej na temat aliasu, zobacz Alias — Tworzenie. W poniższych przykładach zostanie utworzony, sampleAlias ale możesz użyć dowolnego ciągu.

Jeśli oprócz roli Właściciel konta masz wiele ról użytkownika, musisz pobrać identyfikator konta z witryny Azure Portal. Następnie możesz użyć identyfikatora, aby programowo tworzyć subskrypcje.

Wywołaj interfejs API PUT, aby utworzyć żądanie utworzenia subskrypcji/alias.

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

W treści żądania podaj jako element billingScope wartość id z jednego z elementów enrollmentAccounts.

{
  "properties": {
        "billingScope": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321",
        "DisplayName": "Dev Team Subscription", //Subscription Display Name
        "Workload": "Production"
  }
}

Dozwolone wartości dla elementu Workload to Production i DevTest.

Response

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

Aby uzyskać stan żądania, możesz wykonać instrukcję GET dla tego samego adresu URL.

Zażądaj

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

Response

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

Stan w toku jest zwracany jako stan Accepted w elemencie provisioningState.

Tworzenie subskrypcji w innej rejestracji

Korzystając z interfejsu API REST aliasu subskrypcji, możesz użyć parametru subscriptionTenantId w treści żądania. Aby utworzyć subskrypcję, jednostka usługi musi pobrać token z dzierżawy macierzystej. Po utworzeniu jednostki usługi uzyskasz token i subscriptionTenantId zaakceptujesz transfer przy użyciu interfejsu API Akceptuj własność .

Aby uzyskać więcej informacji na temat tworzenia subskrypcji EA w innej dzierżawie, zobacz Tworzenie subskrypcji w innej dzierżawie i wyświetlanie żądań przeniesienia.

Korzystanie z szablonu usługi ARM lub Bicep

W poprzedniej sekcji pokazano, jak utworzyć subskrypcję przy użyciu programu PowerShell, interfejsu wiersza polecenia lub interfejsu API REST. Jeśli musisz zautomatyzować tworzenie subskrypcji, rozważ użycie szablonu usługi Azure Resource Manager (szablonu usługi ARM) lub pliku Bicep.

Poniższy szablon usługi ARM tworzy subskrypcję. W polu billingScopepodaj identyfikator konta rejestracji. Subskrypcja jest tworzona w głównej grupie zarządzania. Po utworzeniu subskrypcji możesz przenieść ją do innej grupy zarządzania.

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

Możesz też użyć pliku Bicep, aby utworzyć subskrypcję.

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

Wdróż szablon na poziomie grupy zarządzania. W poniższych przykładach pokazano wdrażanie szablonu usługi ARM w formacie JSON, ale zamiast tego można wdrożyć plik Bicep.

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

Z treścią żądania:

{
  "location": "eastus",
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
    },
    "parameters": {
      "subscriptionAliasName": {
        "value": "sampleAlias"
      },
      "billingScope": {
        "value": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321"
      }
    },
    "mode": "Incremental"
  }
}

Aby przenieść subskrypcję do nowej grupy zarządzania, użyj następującego szablonu usługi ARM.

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

Lub następujący plik 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}'
}

Ograniczenia interfejsu API tworzenia subskrypcji Enterprise platformy Azure

  • Przy użyciu tego interfejsu API można tworzyć tylko subskrypcje Enterprise platformy Azure.
  • Istnieje limit 5000 subskrypcji na konto rejestracji. Po przekroczeniu tego limitu kolejne subskrypcje dla tego konta można utworzyć wyłącznie w witrynie Azure Portal. Aby utworzyć więcej subskrypcji za pomocą interfejsu API, musisz utworzyć kolejne konto rejestracji. Liczba anulowanych, usuniętych i przesłanych subskrypcji zbliża się do granicy 5000.
  • Użytkownicy, którzy nie są właścicielami konta, ale zostali dodani do konta rejestracji przy użyciu systemu RBAC platformy Azure, nie mogą tworzyć subskrypcji w witrynie Azure Portal.

Następne kroki