Usar a API REST do Azure com a CLI do Azure
APIs de Transferência de Estado Representacional (REST) são pontos de extremidade de serviço que oferecem suporte a diferentes conjuntos de operações (ou métodos) HTTP. Esses métodos HTTP permitem que você execute ações diferentes para os recursos do serviço. O az rest
comando só deve ser usado quando um comando existente da CLI do Azure não estiver disponível.
Este artigo demonstra as solicitações PUT, PATCH, GET, POST e DELETE HTTP para gerenciar recursos do Registro de Contêiner do Azure. O Registro de Contêiner do Azure é um serviço de registro gerenciado que permite criar e manter registros de contêiner do Azure que armazenam imagens de contêiner e artefatos relacionados.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
Aqui estão algumas informações úteis ao trabalhar com az rest:
- O
az rest
comando autentica automaticamente usando a credencial conectada. - Se o cabeçalho Authorization não estiver definido, ele anexará o cabeçalho
Authorization: Bearer <token>
, onde<token>
será recuperado da ID do Microsoft Entra. - O recurso de destino do token será derivado do
--url
parâmetro quando o--url
parâmetro começar com um ponto de extremidade da saída doaz cloud show --query endpoints
comando. O--url
parâmetro required. - Use o
--resource
parâmetro para um recurso personalizado. - Se o cabeçalho Content-Type não estiver definido e
--body
for uma cadeia de caracteres JSON válida, o cabeçalho Content-Type assumirá como padrão "application/json". - Ao usar
--uri-parameters
para solicitações na forma de OData, certifique-se de escapar$
em diferentes ambientes: emBash
, escape$
como\$
e emPowerShell
, escape$
como`$
.
Use o método HTTP PUT para criar um novo Registro de Contêiner do 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>'}}"
Aqui está um exemplo com parâmetros concluídos:
# 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'}}"
Saída JSON para Bash e 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"
}
Atualize seu Registro de Contêiner do Azure usando a solicitação HTTP PATCH. Edite o --body
parâmetro com as propriedades que você deseja atualizar. Este exemplo usa as variáveis definidas na seção anterior e atualiza o nome da SKU ($skuName="Premium") do Registro de Contêiner do Azure.
#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 saída do dicionário JSON a seguir tem campos omitidos por brevidade:
{
"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"
}
Use a solicitação HTTP GET, veja os resultados da atualização da solicitação PATCH. Este exemplo usa as variáveis definidas na seção 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
A saída para o método GET é a mesma que a mostrada para PUT.
Use a solicitação HTTP POST para gerar novamente uma das credenciais de logon para o Registro de Contêiner do Azure criado neste artigo.
# 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 saída do dicionário JSON a seguir tem campos omitidos por brevidade:
{
"passwords": [
{
"name": "password",
"value": "<passwordValue>"
},
{
"name": "password2",
"value": "<passwordValue2>"
}
],
"username": "<containerRegistryName>"
}
Depois que a solicitação for concluída, suas credenciais especificadas do Registro de Contêiner do Azure serão regeneradas com uma nova senha junto com sua senha existente (senha2).
Use a solicitação HTTP DELETE para excluir um Registro de Contêiner do Azure 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
Às vezes, é útil ver um exemplo para um cenário diferente, então aqui está um exemplo que usa a API do Microsoft Graph. Para atualizar os URIs de redirecionamento de um Aplicativo, chamamos a API REST Atualizar aplicativo, como neste 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"]}}'
Quando terminar os recursos criados neste artigo, você poderá excluir o grupo de recursos. Quando você exclui o grupo de recursos, todos os recursos nesse grupo de recursos são excluídos.
az group delete --resource-group <resourceGroupName>
Comentários do Azure CLI
O Azure CLI é um projeto código aberto. Selecione um link para fornecer comentários: