Uso de la API REST de Azure con la CLI de Azure

Las API de transferencia de estado representacional (REST) son puntos de conexión de servicio que admiten diferentes conjuntos de operaciones HTTP (o métodos). Estos métodos HTTP permiten realizar diferentes acciones para los recursos del servicio. El az rest comando solo se debe usar cuando un comando de la CLI de Azure existente no está disponible.

En este artículo se muestran las solicitudes HTTP PUT, PATCH, GET, POST y DELETE para administrar los recursos de Azure Container Registry. Azure Container Registry es un servicio de registro administrado que permite crear y mantener registros de contenedor de Azure que almacenan imágenes de contenedor y artefactos relacionados.

Requisitos previos

Sugerencias para usar az rest

Esta es una información útil al trabajar con az rest:

  • El az rest comando se autentica automáticamente mediante la credencial de inicio de sesión.
  • Si no se establece el encabezado authorization, adjunta el encabezado Authorization: Bearer <token>, donde <token> se recupera de Microsoft Entra ID.
  • El recurso de destino del token se derivará del --url parámetro cuando el --url parámetro comience con un punto de conexión de la salida del az cloud show --query endpoints comando. Parámetro --url necesario.
  • Use el --resource parámetro para un recurso personalizado.
  • Si el encabezado Content-Type no está establecido y --body es una cadena JSON válida, el encabezado Content-Type tendrá como valor predeterminado "application/json".
  • Al usar --uri-parameters para las solicitudes en forma de OData, asegúrese de escapar $ en entornos diferentes: en Bash, escape $ como \$ y en PowerShell, escape $ como `$.

Uso de PUT para crear una instancia de Azure Container Registry

Use el método HTTP PUT para crear una instancia de Azure Container Registry.

# 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>'}}"

Este es un ejemplo con parámetros completados:

# 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'}}"

Salida JSON para Bash y 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"
}

Uso de PATCH para actualizar Azure Container Registry

Actualice Azure Container Registry mediante la solicitud HTTP PATCH. Edite el --body parámetro con las propiedades que desea actualizar. En este ejemplo se usan las variables establecidas en la sección anterior y se actualiza el nombre de la SKU ($skuName="Premium") de Azure Container Registry.

#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'}}"

La siguiente salida del diccionario JSON tiene campos omitidos para mayor brevedad:

{
  "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"
}

Uso de GET para recuperar Azure Container Registry

Use la solicitud HTTP GET para ver los resultados de la actualización de la solicitud PATCH. En este ejemplo se usan las variables establecidas en la sección anterior.

az rest --method get \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview 

La salida del método GET es la misma que la que se muestra para PUT.

Uso de POST para regenerar las credenciales de Azure Container Registry

Use la solicitud HTTP POST para volver a generar una de las credenciales de inicio de sesión de Azure Container Registry creadas en este artículo.

# 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'}"

La siguiente salida del diccionario JSON tiene campos omitidos para mayor brevedad:

{
  "passwords": [
    {
      "name": "password",
      "value": "<passwordValue>"
    },
    {
      "name": "password2",
      "value": "<passwordValue2>"
    }
  ],
  "username": "<containerRegistryName>"
}

Una vez completada la solicitud, las credenciales de Azure Container Registry especificadas se regenerarán con una nueva contraseña junto con la contraseña existente (password2).

Uso de DELETE para eliminar Azure Container Registry

Use la solicitud HTTP DELETE para eliminar una instancia de Azure Container Registry existente.

az rest --method delete \
    --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$containerRegistryName?api-version=2023-01-01-preview

Ejemplo adicional az rest para Microsoft Graph

A veces ayuda a ver un ejemplo para un escenario diferente, por lo que este es un ejemplo que usa Microsoft Graph API. Para actualizar los identificadores URI de redireccionamiento de una aplicación, llame a la API REST de Actualizar aplicación, como en este código:

# 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"]}}'

Limpieza de recursos

Cuando haya terminado con los recursos creados en este artículo, puede eliminar el grupo de recursos. Al eliminar el grupo de recursos, se eliminan todos los recursos de ese grupo de recursos.

az group delete --resource-group <resourceGroupName>

Consulte también