Использование 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.
Настройте пользовательский запрос REST API Azure:
Чтобы вызвать пользовательский запрос REST API Azure с помощью Azure CLI, используйте az rest
команду, за которой следует --url
параметр. Параметр --url
определяет URL-адрес запрошенного ресурса и является единственным обязательным параметром.
Примечание.
- Команда
az rest
автоматически проходит проверку подлинности с помощью учетных данных, вошедшего в систему. Если заголовок авторизации не задан, он присоединяет заголовокAuthorization: Bearer <token>
, где<token>
извлекается из идентификатора Microsoft Entra. Целевой ресурс маркера будет производным от параметра, когда--url
параметр начинается с--url
конечной точки из выходныхaz cloud show --query endpoints
данных команды.--resource
Используйте параметр для пользовательского ресурса. - Если заголовок Content-Type не задан и
--body
является допустимой строкой JSON, заголовок Content-Type по умолчанию будет иметь значение application/json.
Создание Реестр контейнеров 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 с помощью az rest
!
Обновление Реестр контейнеров 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 group delete --resource-group <resourceGroupName>