Az Azure REST API használata az Azure CLI-vel

A reprezentációs állapotátviteli (REST) API-k olyan szolgáltatásvégpontok, amelyek különböző HTTP-műveleteket (vagy metódusokat) támogatnak. Ezek a HTTP-metódusok lehetővé teszik a szolgáltatás erőforrásainak különböző műveleteit. A az rest parancsot csak akkor szabad használni, ha egy meglévő Azure CLI-parancs nem érhető el.

A cikk befejezése után tudni fogja, hogyan használhatja a PUT, PATCH, GET, POST és DELETE HTTP-kéréseket az Azure Container Registry-erőforrások kezeléséhez. Az Azure Container Registry egy felügyelt beállításjegyzék-szolgáltatás, amely lehetővé teszi olyan Azure-tárolóregisztrációs adatbázisok létrehozását és karbantartását, amelyek tárolólemezképeket és kapcsolódó összetevőket tárolnak.

Előfeltételek

Egyéni Azure REST API-kérés beállítása:

Ha egyéni Azure REST API-kérést szeretne meghívni az Azure CLI-vel, használja a az rest parancsot, majd a paramétert --url . A --url paraméter határozza meg a kért erőforrás URL-címét, és ez az egyetlen kötelező paraméter.

Feljegyzés

  • A az rest parancs automatikusan hitelesíti a bejelentkezett hitelesítő adatokat. Ha az Engedélyezési fejléc nincs beállítva, csatolja a fejlécetAuthorization: Bearer <token>, ahol <token> a rendszer lekéri a Microsoft Entra-azonosítót. A jogkivonat célerőforrása a --url paraméterből lesz származtatva, amikor a --url paraméter a parancs kimenetéből az cloud show --query endpoints származó végponttal kezdődik. Használja a --resource paramétert egy egyéni erőforráshoz.
  • Ha a Tartalomtípus fejléc nincs beállítva, és --body érvényes JSON-sztring, a Tartalomtípus fejléc alapértelmezés szerint "application/json" lesz.

Azure Container Registry létrehozása a PUT használatával

A PUT HTTP metódussal hozzon létre egy új Azure Container Registryt.

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

Íme egy példa a befejezett paraméterekkel:

# 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-kimenet Bash és PowerShell esetén is:

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

Ezzel sikeresen létrehozta az új Azure Container Registryt az resta !

Az Azure Container Registry frissítése a PATCH használatával

Frissítse az Azure Container Registryt a PATCH HTTP-kéréssel. Szerkessze a --body paramétert a frissíteni kívánt tulajdonságokkal. Ez a példa az előző szakaszban beállított változókat használja, és frissíti az Azure Container Registry termékváltozatának nevét ($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'}}"

A következő JSON-szótárkimenetben a rövidség kedvéért kihagyott mezők szerepelnek:

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

Az Azure Container Registry lekérése a GET használatával

A GET HTTP-kéréssel megtekintheti a PATCH-kérelem frissítési eredményeit. Ez a példa az előző szakaszban beállított változókat használja.

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

A GET metódus kimenete megegyezik a PUT metódus kimenetével.

Az Azure Container Registry hitelesítő adatainak újragenerálása a POST használatával

A POST HTTP-kéréssel újjáépítheti a cikkben létrehozott Azure Container Registry bejelentkezési hitelesítő adatainak egyikét.

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

A következő JSON-szótárkimenetben a rövidség kedvéért kihagyott mezők szerepelnek:

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

A kérés befejezése után a megadott Azure Container Registry-hitelesítő adatok új jelszóval és a meglévő jelszóval (password2) lesznek újra létrehozva.

Az Azure Container Registry törlése a DELETE használatával

A DELETE HTTP-kéréssel törölhet egy meglévő Azure Container Registryt.

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

Az erőforrások eltávolítása

Ha végzett a cikkben létrehozott erőforrásokkal, törölheti az erőforráscsoportot. Az erőforráscsoport törlésekor az adott erőforráscsoport összes erőforrása törlődik.

az group delete --resource-group <resourceGroupName>