Freigeben über


Verwenden der Azure REST-API mit Azure CLI

REST-APIs (Representational State Transfer) sind Dienstendpunkte, die unterschiedliche Sätze von HTTP-Vorgängen (oder Methoden) unterstützen. Mit diesen HTTP-Methoden können Sie verschiedene Aktionen für die Ressourcen Ihres Diensts ausführen. Der az rest Befehl sollte nur verwendet werden, wenn kein vorhandener Azure CLI-Befehl verfügbar ist.

In diesem Artikel werden die PUT-, PATCH-, GET-, POST- und DELETE-HTTP-Anforderungen zum Verwalten von Azure Container Registry-Ressourcen veranschaulicht. Die Azure Container Registry ist ein verwalteter Registrierungsdienst, mit dem Sie Azure-Containerregistrierungen erstellen und verwalten können, die Containerimages und zugehörige Artefakte speichern.

Voraussetzungen

Tipps für die Verwendung von az rest

Hier sind einige hilfreiche Informationen beim Arbeiten mit az rest:

  • Der az rest Befehl authentifiziert automatisch mit den angemeldeten Zugangsdaten.
  • Wenn kein Autorisierungsheader festgelegt ist, wird der Header Authorization: Bearer <token> angefügt, wobei <token> von Microsoft Entra ID abgerufen wird.
  • Die Zielressource des Tokens wird vom --url Parameter abgeleitet, wenn der --url Parameter mit einem Endpunkt aus der Ausgabe des az cloud show --query endpoints Befehls beginnt. Der --url parameter erforderlich.
  • Verwenden Sie den --resource Parameter für eine benutzerdefinierte Ressource.
  • Wenn der Content-Type-Header nicht festgelegt ist und --body eine gültige JSON-Zeichenfolge ist, wird der Content-Type-Header standardmäßig auf "application/json" festgelegt.
  • Stellen Sie bei der Verwendung von --uri-parameters für Anforderungen in Form von OData sicher, dass Sie $ in verschiedenen Umgebungen escapen: In Bash escapen Sie $ als \$ und in PowerShell escapen Sie $ als `$.

Verwenden von PUT zum Erstellen einer Azure-Containerregistrierung

Verwenden Sie die PUT-HTTP-Methode, um eine neue Azure-Containerregistrierung zu erstellen.

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

Hier ist ein Beispiel mit abgeschlossenen Parametern:

# 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-Ausgabe für Bash und 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"
}

Verwenden von PATCH zum Aktualisieren Der Azure-Containerregistrierung

Aktualisieren Sie Ihre Azure-Containerregistrierung mithilfe der PATCH-HTTP-Anforderung. Bearbeiten Sie den --body Parameter mit den Eigenschaften, die Sie aktualisieren möchten. In diesem Beispiel werden die im vorherigen Abschnitt festgelegten Variablen verwendet und der SKU-Name ($skuName="Premium") der Azure-Containerregistrierung aktualisiert.

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

Die folgende JSON-Wörterbuchausgabe enthält Felder, die aus Platzgründen weggelassen werden:

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

Verwenden von GET zum Abrufen Ihrer Azure-Containerregistrierung

Verwenden Sie die GET-HTTP-Anforderung, um die Updateergebnisse aus der PATCH-Anforderung anzuzeigen. In diesem Beispiel werden die im vorherigen Abschnitt festgelegten Variablen verwendet.

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

Die Ausgabe für die GET-Methode ist die gleiche wie die für PUT.

Verwenden von POST zum Erneuten Generieren Ihrer Azure Container-Registrierungsanmeldeinformationen

Verwenden Sie die POST-HTTP-Anforderung, um eine der Anmeldeinformationen für die in diesem Artikel erstellte Azure-Containerregistrierung neu zu generieren.

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

Die folgende JSON-Wörterbuchausgabe enthält Felder, die aus Platzgründen weggelassen werden:

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

Nachdem die Anforderung abgeschlossen ist, werden Ihre angegebenen Azure Container Registry-Anmeldeinformationen zusammen mit Ihrem vorhandenen Kennwort (Kennwort2) neu generiert.

Verwenden von DELETE zum Löschen Ihrer Azure-Containerregistrierung

Verwenden Sie die DELETE-HTTP-Anforderung, um eine vorhandene Azure Container-Registrierung zu löschen.

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

Zusätzliches az rest Beispiel für Microsoft Graph

Manchmal hilft es, ein Beispiel für ein anderes Szenario zu sehen. Hier ist also ein Beispiel, das die Microsoft Graph-API verwendet. Um Umleitungs-URIs für eine Anwendung zu aktualisieren, rufen Sie die REST-API der Updateanwendung wie in diesem Code auf:

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

Bereinigen von Ressourcen

Wenn Sie mit den in diesem Artikel erstellten Ressourcen fertig sind, können Sie die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden alle Ressourcen in dieser Ressourcengruppe gelöscht.

az group delete --resource-group <resourceGroupName>

Siehe auch