你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将 Azure REST API 与 Azure CLI 配合使用
表示性状态传输(REST)API 是支持不同 HTTP 操作集(或方法)的服务终结点。 这些 HTTP 方法允许你对服务的资源执行不同的操作。 az rest
仅当现有 Azure CLI 命令不可用时,才应使用该命令。
本文演示了用于管理Azure 容器注册表资源的 PUT、PATCH、GET、POST 和 DELETE HTTP 请求。 Azure 容器注册表是一种托管注册表服务,可用于创建和维护存储容器映像和相关项目的 Azure 容器注册表。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
有关使用提示 az rest
下面是使用 az rest 时的一些有用信息:
- 该
az rest
命令使用登录凭据自动进行身份验证。 - 如果未设置 Authorization 标头,则会附加标头,从Microsoft Entra ID 检索到该
<token>
标头Authorization: Bearer <token>
。 - 当参数从命令输出
az cloud show --query endpoints
中的终结点开始时--url
,令牌的目标资源将从参数派生--url
。--url
必需参数。 - 对
--resource
自定义资源使用参数。 - 如果未设置 Content-Type 标头并且
--body
是有效的 JSON 字符串,则 Content-Type 标头将默认为“application/json”。 - 使用
--uri-parameters
OData 形式的请求时,请确保在不同的环境中进行转义:在Bash
、转义$
$
方式\$
和转PowerShell
义方式中转义。$
`$
使用 PUT 创建Azure 容器注册表
使用 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'}}"
Bash 和 Powershell 的 JSON 输出:
{
"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"
}
使用 PATCH 更新Azure 容器注册表
使用 PATCH HTTP 请求更新Azure 容器注册表。 使用 --body
要更新的属性编辑参数。 此示例使用上一节中设置的变量,并更新Azure 容器注册表的 SKU 名称($skuName=“Premium”。
#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"
}
使用 GET 检索Azure 容器注册表
使用 GET HTTP 请求查看 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 容器注册表凭据
使用 POST HTTP 请求重新生成本文中创建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)一起重新生成新的密码。
使用 DELETE 删除Azure 容器注册表
使用 DELETE HTTP 请求删除现有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
Microsoft Graph 的其他 az rest
示例
有时,它有助于查看不同方案的示例,因此下面是使用 Microsoft 图形 API 的示例。 若要更新应用程序的重定向 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>
另请参阅
- Azure REST API 参考
- az resource command