Início rápido: criar um Provedor de Recursos Personalizado do Azure e implantar recursos personalizados

Neste guia de início rápido, você criará um provedor de recursos próprio e implantará recursos personalizados para o provedor de recursos. Para obter mais informações sobre os provedores de recursos personalizados, confira Visão geral dos provedores de recursos personalizados do Azure.

Pré-requisitos

Prepare seu ambiente para a CLI do Azure.

Exemplos da CLI do Azure usam az rest para solicitações de REST. Para obter mais informações, confira az rest.

Implantar um provedor de recursos personalizado

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

O modelo implanta os seguintes recursos na sua assinatura:

  • O aplicativo de funções com as operações para os recursos e as ações.
  • A conta de armazenamento para armazenar os usuários criados por meio do provedor de recursos personalizado.
  • O provedor de recursos personalizado, que define os tipos de recursos personalizados e as ações. Ele usa o ponto de extremidade do aplicativo de funções para enviar solicitações.
  • O 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, uma localização e um nome de aplicativo de funções 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 implantam os recursos.

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 no portal do Azure, selecione o botão Implantar no Azure.

Button to deploy the Resource Manager template to Azure.

Exibir o provedor de recursos personalizado e o recurso

No portal, o provedor de recursos personalizado é um tipo de recurso oculto. Para confirmar se o provedor de recursos foi implantado, acesse 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 operação GET no tipo de recurso. O tipo de recurso Microsoft.CustomProviders/resourceProviders/users 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

O 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ções. A ação ping responde com uma saudação.

Para enviar uma solicitação ping, use a operação POST na 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"
  }
}

Usar PUT para criar um recurso

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

Neste exemplo, como o modelo já implantou um recurso, a operação PUT cria um 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 operação GET na seção Exibir o provedor de recursos personalizado e o recurso para mostrar os dois recursos que foram criados. Este exemplo mostra a saída do comando da 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 do provedor de recursos personalizados

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

Listar provedores de recursos personalizados

Use o comando list 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 parâmetro --subscription. Para listar para um grupo de recursos, use o parâmetro --resource-group.

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 comando show para exibir as propriedades do provedor de recursos personalizado. O formato de saída é semelhante à saída de list.

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

Criar um novo recurso

Use o comando create 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 marcas do provedor

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

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

Excluir um provedor de recursos personalizado

O comando delete lhe faz uma solicitação e exclui somente o provedor de recursos personalizado. A conta de armazenamento, o serviço de aplicativo e o plano do serviço de aplicativo não são excluídos. Depois que o provedor for excluído, você será retornado para um prompt de comando.

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

Limpar os recursos

Quando terminar de usar os recursos criados neste artigo, exclua o grupo de recursos. Quando você exclui um grupo de recursos, todos os recursos do grupo são excluídos.

az group delete --resource-group $rgName

Próximas etapas

Para ver uma introdução aos provedores de recursos personalizados, confira o seguinte artigo: