你当前正在访问 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 容器注册表。

先决条件

有关使用提示 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>

另请参阅