Używanie interfejsu API REST platformy Azure z interfejsem wiersza polecenia platformy Azure

Interfejsy API usługi Representational State Transfer (REST) to punkty końcowe usługi, które obsługują różne zestawy operacji HTTP (lub metod). Te metody HTTP umożliwiają wykonywanie różnych akcji dla zasobów usługi. Polecenie az rest powinno być używane tylko wtedy, gdy istniejące polecenie interfejsu wiersza polecenia platformy Azure nie jest dostępne.

Po ukończeniu tego artykułu dowiesz się, jak zarządzać zasobami usługi Azure Container Registry przy użyciu żądań PUT, PATCH, GET, POST i DELETE HTTP. Usługa Azure Container Registry to zarządzana usługa rejestru, która umożliwia tworzenie i konserwację rejestrów kontenerów platformy Azure, które przechowują obrazy kontenerów i powiązane artefakty.

Wymagania wstępne

Skonfiguruj niestandardowe żądanie interfejsu API REST platformy Azure:

Aby wywołać niestandardowe żądanie interfejsu API REST platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure, użyj az rest polecenia , a następnie parametru --url . Parametr --url definiuje adres URL żądanego zasobu i jest jedynym wymaganym parametrem.

Uwaga

  • Polecenie az rest automatycznie uwierzytelnia się przy użyciu poświadczeń zalogowanych. Jeśli nagłówek autoryzacji nie jest ustawiony, dołącza nagłówek Authorization: Bearer <token>, gdzie <token> jest pobierany z identyfikatora Entra firmy Microsoft. Zasób docelowy tokenu będzie pochodzić z parametru --url , gdy --url parametr rozpoczyna się od punktu końcowego z danych wyjściowych az cloud show --query endpoints polecenia. Użyj parametru --resource dla zasobu niestandardowego.
  • Jeśli nagłówek Content-Type nie jest ustawiony i --body jest prawidłowym ciągiem JSON, nagłówek Content-Type będzie domyślnie "application/json".

Tworzenie usługi Azure Container Registry przy użyciu funkcji PUT

Użyj metody PUT HTTP, aby utworzyć nową usługę 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>'}}"

Oto przykład z ukończonymi parametrami:

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

Dane wyjściowe JSON dla powłoki Bash i programu 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"
}

Udało Ci się pomyślnie utworzyć nową usługę Azure Container Registry przy użyciu programu az rest!

Aktualizowanie usługi Azure Container Registry przy użyciu poprawki PATCH

Zaktualizuj usługę Azure Container Registry przy użyciu żądania HTTP PATCH. Edytuj parametr za --body pomocą właściwości, które chcesz zaktualizować. W tym przykładzie użyto zmiennych ustawionych w poprzedniej sekcji i zaktualizowano nazwę jednostki SKU ($skuName="Premium") usługi 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'}}"

Następujące dane wyjściowe słownika JSON zawierają pola pominięte dla zwięzłości:

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

Pobieranie usługi Azure Container Registry przy użyciu polecenia GET

Użyj żądania HTTP GET, aby wyświetlić wyniki aktualizacji z żądania PATCH. W tym przykładzie użyto zmiennych ustawionych w poprzedniej sekcji.

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

Dane wyjściowe metody GET są takie same jak w przypadku metody PUT.

Ponowne generowanie poświadczeń usługi Azure Container Registry przy użyciu funkcji POST

Użyj żądania HTTP POST, aby ponownie wygenerować jedno z poświadczeń logowania dla usługi Azure Container Registry utworzonej w tym artykule.

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

Następujące dane wyjściowe słownika JSON zawierają pola pominięte dla zwięzłości:

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

Po zakończeniu żądania określone poświadczenia usługi Azure Container Registry zostaną ponownie wygenerowane przy użyciu nowego hasła wraz z istniejącym hasłem (hasło2).

Usuwanie usługi Azure Container Registry przy użyciu funkcji DELETE

Użyj żądania HTTP DELETE, aby usunąć istniejącą usługę Azure Container Registry.

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

Czyszczenie zasobów

Po zakończeniu pracy z zasobami utworzonymi w tym artykule możesz usunąć grupę zasobów. Po usunięciu grupy zasobów wszystkie zasoby w tej grupie zasobów zostaną usunięte.

az group delete --resource-group <resourceGroupName>