表示性状态传输(REST)API 是支持不同 HTTP作集(或方法)的服务终结点。 这些 HTTP 方法允许你对服务的资源执行不同的操作。
az rest
仅当现有 Azure CLI 命令不可用时,才应使用该命令。
本文演示了用于管理 Azure 容器注册表资源的 PUT、PATCH、GET、POST 和 DELETE HTTP 请求。 Azure 容器注册表是一项托管注册表服务,可用于创建和维护存储容器映像和相关项目的 Azure 容器注册表。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行az version命令,以查看已安装的版本和依赖库。 若要升级到最新版本,请运行az upgrade。
使用az rest
的技巧
下面是使用 az rest 时的一些有用信息:
- 该
az rest
命令使用登录凭据自动进行身份验证。 - 如果未设置 Authorization 标头,则会附加标头
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
转义为$
。
使用 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>"
}
请求完成后,将使用新密码以及现有密码(password2)重新生成指定的 Azure 容器注册表凭据。
使用 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