Использование 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. - Целевой ресурс маркера будет производным от параметра, когда
--url
параметр начинается с--url
конечной точки из выходныхaz cloud show --query endpoints
данных команды. Обязательный--url
параметр. --resource
Используйте параметр для пользовательского ресурса.- Если заголовок Content-Type не задан и
--body
является допустимой строкой JSON, заголовок Content-Type по умолчанию будет иметь значение application/json. - При использовании
--uri-parameters
запросов в виде OData обязательно следует использовать в разных средах: вBash
, escape$
$
как\$
и в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.
Повторное создание учетных данных Реестр контейнеров Azure с помощью POST
Используйте 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 перенаправления для ресурса Application (Приложение), вызовите 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>