Поделиться через


Использование REST API Azure с Помощью Azure CLI

API передачи репрезентативного состояния (REST) — это конечные точки службы, поддерживающие различные наборы операций HTTP (или методов). Эти методы HTTP позволяют выполнять различные действия для ресурсов службы. Команда az rest должна использоваться только в том случае, если существующая команда Azure CLI недоступна.

В этой статье показаны запросы PUT, PATCH, GET, POST и DELETE HTTP для управления ресурсами реестра контейнеров Azure. реестр контейнеров Azure — это управляемая служба реестра, которая позволяет создавать и поддерживать реестры контейнеров Azure, которые хранят образы контейнеров и связанные артефакты.

Предпосылки

  • Используйте среду Bash в Azure Cloud Shell. Для получения дополнительной информации см. краткое руководство по Bash в Azure Cloud Shell.

  • Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы завершить процесс проверки подлинности, выполните действия, отображаемые в терминале. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Советы по использованию az rest

Ниже приведены полезные сведения при работе с az rest:

  • Команда az rest автоматически проходит проверку подлинности с использованием учетных данных, которые использовались для входа в систему.
  • Если заголовок авторизации не задан, добавляется заголовок Authorization: Bearer <token>, где <token> извлекается из Microsoft Entra ID.
  • Целевой ресурс маркера будет определяться из параметра --url, когда параметр --url начинается с конечной точки выходных данных команды az cloud show --query endpoints. Параметр --url обязателен.
  • Используйте параметр --resource для пользовательского ресурса.
  • Если заголовок Content-Type не задан и --body является допустимой строкой JSON, заголовок Content-Type по умолчанию будет иметь значение application/json.
  • При использовании --uri-parameters для запросов в формате OData обязательно используйте экранирование $ в разных средах: в Bashэкранируйте $ как \$, а в PowerShellэкранируйте $ как `$.

Создание реестра контейнеров Azure с помощью PUT

Используйте метод PUT HTTP для создания нового реестра контейнеров Azure.

# Command format example
az rest --method put \
    --url https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>?api-version=2023-01-01-preview \
    --body "{'location': '<locationName>', 'sku': {'name': '<skuName>'}, 'properties': {'adminUserEnabled': '<propertyValue>'}}"

Ниже приведен пример с завершенными параметрами:

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
subscriptionId="00000000-0000-0000-0000-000000000000"
resourceGroup="msdocs-app-rg$randomIdentifier"
containerRegistryName="msdocscr$randomIdentifier"
locationName="westus"
skuName="Standard"
propertyValue="true"

# Create resource group
az group create --name $resourceGroup --location $locationName --output json

# Invoke request
az rest --method put \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
    --body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"

Выходные данные JSON для Bash и PowerShell:

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
  "location": "<location>",
  "name": "<containerRegistryName>",
  "properties": {
    "adminUserEnabled": true,
    "anonymousPullEnabled": false,
    "creationDate": "2024-01-03T18:38:36.7089583Z",
    "dataEndpointEnabled": false,
    "dataEndpointHostNames": [],
    "encryption": {
      "status": "disabled"
    },
    "loginServer": "<containerRegistryName>.azurecr.io",
    "networkRuleBypassOptions": "AzureServices",
    "policies": {
      "azureADAuthenticationAsArmPolicy": {
        "status": "enabled"
      },
      "exportPolicy": {
        "status": "enabled"
      },
      "quarantinePolicy": {
        "status": "disabled"
      },
      "retentionPolicy": {
        "days": 7,
        "lastUpdatedTime": "2024-01-03T19:44:53.9770581+00:00",
        "status": "disabled"
      },
      "softDeletePolicy": {
        "lastUpdatedTime": "2024-01-03T19:44:53.9771117+00:00",
        "retentionDays": 7,
        "status": "disabled"
      },
      "trustPolicy": {
        "status": "disabled",
        "type": "Notary"
      }
    },
    "privateEndpointConnections": [],
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Enabled",
    "zoneRedundancy": "Disabled"
  },
  "sku": {
    "name": "Standard",
    "tier": "Standard"
  },
  "systemData": {
    "createdAt": "2024-01-03T18:38:36.7089583+00:00",
    "createdBy": "<username>@microsoft.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-03T19:44:53.684342+00:00",
    "lastModifiedBy": "<username>@microsoft.com",
    "lastModifiedByType": "User"
  },
  "tags":{},
  "type": "Microsoft.ContainerRegistry/registries"
}

Обновление реестра контейнеров Azure с помощью PATCH

Обновите реестр контейнеров Azure с помощью HTTP-запроса PATCH. Измените параметр --body, указав свойства, которые вы хотите обновить. В этом примере используются переменные, заданные в предыдущем разделе, и обновляется имя SKU ($skuName="Премиум") реестра контейнеров Azure.

#Variable Block
$skuName="Premium"

az rest --method patch \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview \
    --body "{'location': '$locationName', 'sku': {'name': '$skuName'}, 'properties': {'adminUserEnabled': '$propertyValue'}}"

Следующие выходные данные словаря JSON содержат поля, которые опущены для краткости:

{
  "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.ContainerRegistry/registries/<containerRegistryName>",
  "location": "westus",
  "name": "<containerRegistryName>",
  "properties": {...},
  "sku": {
    "name": "Premium",
    "tier": "Premium"
  },
  "systemData": {...},
  "type": "Microsoft.ContainerRegistry/registries"
}

Получение реестра контейнеров Azure с помощью GET

Используйте HTTP-запрос GET, чтобы просмотреть результаты обновления из запроса PATCH. В этом примере используются переменные, заданные в предыдущем разделе.

az rest --method get \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview 

Выходные данные метода GET совпадают с результатом, показанным для PUT.

Использование POST для повторного создания учетных данных реестра контейнеров Azure

Используйте HTTP-запрос POST для повторного создания одного из учетных данных входа для реестра контейнеров Azure, созданного в этой статье.

# Variable block
$passwordValue="password"

az rest --method post \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName/regenerateCredential?api-version=2023-01-01-preview \
    --body "{'name': '$passwordValue'}"

Следующие выходные данные словаря JSON содержат поля, которые опущены для краткости:

{
  "passwords": [
    {
      "name": "password",
      "value": "<passwordValue>"
    },
    {
      "name": "password2",
      "value": "<passwordValue2>"
    }
  ],
  "username": "<containerRegistryName>"
}

После завершения запроса указанные учетные данные реестра контейнеров Azure будут повторно созданы с новым паролем вместе с существующим паролем (password2).

Удаление реестра контейнеров Azure с помощью DELETE

Используйте HTTP-запрос DELETE для удаления существующего реестра контейнеров Azure.

az rest --method delete \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview

Дополнительный пример az rest для Microsoft Graph

Иногда это помогает просмотреть пример для другого сценария, поэтому ниже приведен пример использования API Microsoft Graph. Чтобы обновить URI перенаправления для приложения, вызовите REST API обновления приложения, как показано в следующем коде.

# Get the application
az rest --method GET \
    --uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001'

# Update `redirectUris` for `web` property
az rest --method PATCH \
    --uri 'https://graph.microsoft.com/v1.0/applications/b4e4d2ab-e2cb-45d5-a31a-98eb3f364001' \
    --body '{"web":{"redirectUris":["https://myapp.com"]}}'

Очистка ресурсов

После завершения работы с ресурсами, созданными в этой статье, можно удалить группу ресурсов. При удалении группы ресурсов все ресурсы в этой группе ресурсов удаляются.

az group delete --resource-group <resourceGroupName>

См. также