Guia de início rápido: criar o Provedor de Recursos Personalizados do Azure e implantar recursos personalizados

Neste início rápido, você cria um provedor de recursos personalizado e implanta recursos personalizados para esse provedor de recursos. Para obter mais informações sobre provedores de recursos personalizados, consulte Visão geral dos provedores de recursos personalizados do Azure.

Pré-requisitos

Prepare seu ambiente para a CLI do Azure.

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Exemplos de CLI do Azure são usados az rest para REST solicitações. Para obter mais informações, consulte az rest.

Implantar provedor de recursos personalizado

Para configurar o provedor de recursos personalizado, implante um modelo de exemplo em sua assinatura do Azure.

O modelo implanta os seguintes recursos na sua assinatura:

  • Aplicativo de função com as operações para os recursos e ações.
  • Conta de armazenamento para armazenar usuários criados por meio do provedor de recursos personalizado.
  • Provedor de recursos personalizado que define os tipos e ações de recursos personalizados. Ele usa o ponto de extremidade do aplicativo de função para enviar solicitações.
  • Recurso personalizado do provedor de recursos personalizado.

Para implantar o provedor de recursos personalizado, use a CLI do Azure, o PowerShell ou o portal do Azure.

Este exemplo solicita que você insira um grupo de recursos, um local e o nome do aplicativo de função do provedor. Os nomes são armazenados em variáveis que são usadas em outros comandos. Os comandos az group create e az deployment group create deploy the resources.

read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read

Para implantar o modelo a partir do portal do Azure, selecione o botão Implantar no Azure .

Button to deploy the Resource Manager template to Azure.

Exibir provedor de recursos e recursos personalizados

No portal, o provedor de recursos personalizado é um tipo de recurso oculto. Para confirmar que o provedor de recursos foi implantado, vá para o grupo de recursos e selecione Mostrar tipos ocultos.

Screenshot of Azure portal displaying hidden resource types and resources deployed in a resource group.

Para ver o recurso personalizado que você implantou, use a GET operação em seu tipo de recurso. O tipo Microsoft.CustomProviders/resourceProviders/users de recurso mostrado na resposta JSON inclui o recurso que foi criado pelo modelo.

GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI

Você recebe a resposta:

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Ação de chamada

Seu provedor de recursos personalizado também tem uma ação chamada ping. O código que processa a solicitação é implementado no aplicativo de função. A ping ação responde com uma saudação.

Para enviar uma ping solicitação, use a POST operação em sua ação.

POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI

Você recebe a resposta:

{
  "message": "hello <function-name>.azurewebsites.net",
  "pingcontent": {
    "source": "<function-name>.azurewebsites.net"
  }
}

Use PUT para criar recursos

Neste início rápido, o modelo usou o tipo Microsoft.CustomProviders/resourceProviders/users de recurso para implantar um recurso. Você também pode usar uma PUT operação para criar um recurso. Por exemplo, se um recurso não for implantado com o modelo, a PUT operação criará um recurso.

Neste exemplo, como o modelo já implantou um recurso, a PUT operação cria um novo recurso.

PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview

{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"

Você recebe a resposta:

{
  "id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
  "name": "testuser",
  "properties": {
    "FullName": "Test User",
    "Location": "Earth",
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.CustomProviders/resourceProviders/users"
}

Você pode executar novamente a GET operação na seção exibir provedor de recursos personalizado e recurso para mostrar os dois recursos que foram criados. Este exemplo mostra a saída do comando CLI do Azure.

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    },
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
      "name": "testuser",
      "properties": {
        "FullName": "Test User",
        "Location": "Earth",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Comandos personalizados do provedor de recursos

Use os comandos custom-providers para trabalhar com seu provedor de recursos personalizado.

Listar provedores de recursos personalizados

Use o list comando para exibir todos os provedores de recursos personalizados em uma assinatura. O padrão lista os provedores de recursos personalizados da assinatura atual ou você pode especificar o --subscription parâmetro. Para listar um grupo de recursos, use o --resource-group parâmetro.

az custom-providers resource-provider list --subscription $subID
[
  {
    "actions": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "ping",
        "routingType": "Proxy"
      }
    ],
    "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
    "location": "eastus",
    "name": "<provider-name>",
    "provisioningState": "Succeeded",
    "resourceGroup": "<rg-name>",
    "resourceTypes": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "users",
        "routingType": "Proxy, Cache"
      }
    ],
    "tags": {},
    "type": "Microsoft.CustomProviders/resourceproviders",
    "validations": null
  }
]

Mostrar as propriedades

Use o show comando para exibir as propriedades do provedor de recursos personalizado. O formato de saída é semelhante à list saída.

az custom-providers resource-provider show --resource-group $rgName --name $funcName

Criar um novo recurso

Use o create comando para criar ou atualizar um provedor de recursos personalizado. Este exemplo atualiza o actions e resourceTypes.

az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "ping",
    "routingType": "Proxy"
  }
],

"resourceTypes": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "users",
    "routingType": "Proxy, Cache"
  }
],

Atualizar as tags do provedor

O update comando apenas atualiza tags para um provedor de recursos personalizado. No portal do Azure, o serviço de aplicativo do provedor de recursos personalizado mostra a tag.

az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
  "new": "tag"
},

Excluir um provedor de recursos personalizado

O delete comando solicita e exclui apenas o provedor de recursos personalizado. A conta de armazenamento, o serviço de aplicativo e o plano de serviço de aplicativo não são excluídos. Depois que o provedor for excluído, você retornará a um prompt de comando.

az custom-providers resource-provider delete --resource-group $rgName --name $funcName

Clean up resources (Limpar recursos)

Se tiver terminado com os recursos criados neste artigo, pode eliminar o grupo de recursos. Quando você exclui um grupo de recursos, todos os recursos desse grupo de recursos são excluídos.

az group delete --resource-group $rgName

Próximos passos

Para obter uma introdução aos provedores de recursos personalizados, consulte o seguinte artigo: