Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Importante
Os proxies do Azure Functions são um recurso herdado para versões 1.x a 3.x do Azure Functions runtime. O suporte para proxies pode ser reabilitado na versão 4.x para atualizar com sucesso seus aplicativos de funções para a última versão do runtime. Assim que possível, você deverá alternar para integrar seus aplicativos de funções ao Gerenciamento de API do Azure. O Gerenciamento de API permite aproveitar um conjunto mais completo de recursos para definir, proteger, gerenciar e monetizar as APIs baseadas no Functions. Para obter mais informações, consulte Integração do Gerenciamento de API.
Para saber como reabilitar o suporte a proxies no Functions versão 4.x, consulte Reabilitar proxies no Functions v4.x.
Para ajudar a facilitar a migração das implementações de proxy existentes, este artigo se vincula ao conteúdo equivalente do Gerenciamento de API, quando disponível.
Este artigo explica como configurar e trabalhar com proxies do Azure Functions. Com esse recurso, você pode especificar os pontos de extremidade em seu aplicativo de funções que são implementados por outro recurso. Você pode usar esses proxies para dividir uma API grande em vários aplicativos de função (como uma arquitetura de microsserviços), enquanto ainda apresenta uma única superfície de API para clientes.
A cobrança do Standard Functions se aplica para execuções de proxy. Para saber mais, confira Preços do Azure Functions.
Depois de migrar seu aplicativo de funções para a versão 4.x do runtime do Functions, você precisa reabilitar especificamente os proxies. Você ainda deve alternar para integrar seus aplicativos de funções ao Gerenciamento de API do Azure o mais rápido possível e não contar apenas com os proxies.
Habilitar novamente os proxies exige que você defina um sinalizador na configuração de aplicativo AzureWebJobsFeatureFlags
de uma das seguintes maneiras:
Se a configuração AzureWebJobsFeatureFlags
ainda não existir, adicione essa configuração ao seu aplicativo de funções com um valor de EnableProxies
.
Se essa configuração já existir, adicione ,EnableProxies
ao final do valor existente.
AzureWebJobsFeatureFlags
é uma matriz delimitada por vírgulas de sinalizadores usada para habilitar a versão prévia e outros recursos temporários. Para saber mais sobre como criar e modificar as configurações do aplicativo, confira Trabalhar com as configurações de aplicativo.
Observação
Mesmo quando habilitado novamente usando o sinalizador EnableProxies
, você não pode trabalhar com proxies no portal do Azure. Em vez disso, você deve trabalhar diretamente com o arquivo proxies.json do seu aplicativo de funções. Para obter mais informações, consulte Configuração avançada.
Importante
Para ver um conteúdo equivalente usando o Gerenciamento de API, confira Expor as APIs sem servidor de pontos de extremidade HTTP usando o Gerenciamento de API do Azure.
Os proxies são definidos no arquivo proxies.json na raiz do aplicativo de funções. As etapas desta seção mostram como usar o portal do Azure para criar esse arquivo no aplicativo de funções. Nem todas as linguagens e combinações de sistemas operacionais dão suporte à edição no portal. Se você não puder modificar os arquivos do aplicativo de funções no portal, poderá criar e implantar o arquivo proxies.json
equivalente na raiz da pasta do projeto local. Para saber mais sobre o suporte à edição do portal, confira Detalhes do suporte a linguagens.
Seu proxy agora existe como um novo ponto de extremidade em seu aplicativo de funções. Do ponto de vista do cliente, isso é o mesmo que um HttpTrigger no Functions. Você pode experimentar o novo proxy copiando a URL do Proxy e testá-la com seu cliente HTTP favorito.
Importante
O Gerenciamento de API permite que você altere o comportamento da API por meio da configuração usando políticas. As políticas são um conjunto de instruções executadas em sequência, na solicitação ou na resposta de uma API. Para obter mais informações sobre as políticas do Gerenciamento de API, confira Políticas do Gerenciamento de API do Azure.
Com os proxies, você pode modificar as solicitações e as respostas por meio do back-end. Essas transformações podem usar variáveis, conforme definido em Usar variáveis.
Por padrão, a solicitação de back-end é inicializada como uma cópia da solicitação original. Além de definir a URL de back-end, é possível fazer alterações no método HTTP, cabeçalhos e parâmetros de cadeia de consulta. Os valores modificados podem referenciar as configurações do aplicativo e os parâmetros da solicitação original do cliente.
As solicitações de back-end podem ser modificadas no portal expandindo a seção substituição da solicitação na página de detalhes do proxy.
Por padrão, a resposta do cliente é inicializada como uma cópia da resposta de back-end. Você pode fazer alterações no código de status, na frase de motivo, nos cabeçalhos e no corpo da resposta. Os valores modificados podem referenciar as configurações do aplicativo, os parâmetros da solicitação original do cliente e os parâmetros da resposta de back-end.
As respostas de back-end podem ser modificadas no portal expandindo a seção substituição da resposta na página de detalhes do proxy.
A configuração de um proxy não precisa ser estática. Você pode condicioná-la para usar variáveis da solicitação do cliente original, da resposta de back-end ou das configurações do aplicativo.
Você pode usar localhost
para fazer referência a uma função diretamente dentro do mesmo aplicativo de função, sem uma solicitação de proxy de ida e volta.
"backendUri": "https://localhost/api/httptriggerC#1"
fará referência a uma função disparada do HTTP local na rota/api/httptriggerC#1
Observação
Se sua função usar os níveis de autorização função, administrador ou sys, você precisará fornecer o código e o clientId, de acordo com a URL da função original. Nesse caso, a referência seria semelhante a: "backendUri": "https://localhost/api/httptriggerC#1?code=<keyvalue>&clientId=<keyname>"
recomendamos armazenar essas chaves nas configurações do aplicativo e referenciá-las nos proxies. Isso evita o armazenamento de segredos no código-fonte.
Use os parâmetros de solicitação como entradas para a propriedade de URL de back-end ou como parte da modificação de solicitações e respostas. Alguns parâmetros podem ser limitados ao modelo de rota especificado na configuração do proxy base, enquanto outros são obtidos de propriedades da solicitação de entrada.
Os parâmetros usados no modelo de rota estão disponíveis para serem referenciados pelo nome. Os nomes de parâmetro são colocados entre chaves ({}).
Por exemplo, se um proxy tem um modelo de rota como /pets/{petId}
, a URL do back-end pode incluir o valor de {petId}
, como em https://<AnotherApp>.azurewebsites.net/api/pets/{petId}
. Se o modelo de rota termina em um caractere curinga, como /api/{*restOfPath}
, o valor {restOfPath}
será uma representação de cadeia de caracteres dos segmentos de caminho restantes da solicitação de entrada.
Além dos parâmetros do modelo de rota, os seguintes valores podem ser usados em valores de configuração:
Parâmetros de resposta podem ser usados como parte da modificação da resposta ao cliente. Os seguintes valores podem ser usados em valores de configuração:
Você também referenciar as configurações do aplicativo definidas para o aplicativo de funções envolvendo o nome da configuração entre sinais de percentual (%).
Por exemplo, uma URL de back-end de https://%ORDER_PROCESSING_HOST%/api/orders teria "%ORDER_PROCESSING_HOST%" substituído pelo valor da configuração ORDER_PROCESSING_HOST.
Dica
Usar configurações do aplicativo para hosts de back-end quando você tem várias implantações ou ambientes de teste. Dessa forma, você pode garantir que está sempre se comunicando com o back-end correto para aquele ambiente.
Adicionando o sinalizador "debug":true
a qualquer proxy no proxies.json
, você habilitará o log de depuração. Os logs são armazenados em D:\home\LogFiles\Application\Proxies\DetailedTrace
e ficam acessíveis pelas ferramentas avançadas (kudu). As respostas HTTP também conterão um cabeçalho Proxy-Trace-Location
com uma URL para acessar o arquivo de log.
Você pode depurar um proxy do lado do cliente adicionando um cabeçalho Proxy-Trace-Enabled
definido como true
. Isso também registrará um rastreamento no sistema de arquivos e retornará a URL de rastreamento como um cabeçalho na resposta.
Por motivos de segurança, você pode não desejar permitir que qualquer pessoa chame o seu serviço para gerar um rastreamento. Essas pessoas não poderão acessar o conteúdo de rastreamento sem suas credenciais de logon, mas gerar o rastreamento consome recursos e expõe seu uso dos Proxies de Função.
Desabilite totalmente os rastreamentos adicionando "debug":false
a qualquer proxy específico em proxies.json
.
Os proxies que você configura são armazenados em um arquivo proxies.json, que está localizado na raiz de um diretório de aplicativo de função. Você pode editar esse arquivo manualmente e implantá-lo como parte do seu aplicativo ao usar qualquer um dos métodos de implantação que ofereça suporte a funções.
Dica
Se você não configurou um dos métodos de implantação, também poderá trabalhar com o arquivo proxies.json no portal. Vá até o aplicativo de funções e selecione Recursos da plataforma e,depois, selecione Editor do Serviço de Aplicativo. Isso permitirá que você veja toda a estrutura de arquivo do aplicativo de funções e faça alterações.
Proxies.json é definido por um objeto de proxies, composto de proxies nomeados e suas definições. Opcionalmente, você pode referenciar um esquema JSON para o preenchimento do código, caso seu editor dê suporte a isso. Um arquivo de exemplo pode parecer com o seguinte:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"proxy1": {
"matchCondition": {
"methods": [ "GET" ],
"route": "/api/{test}"
},
"backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>"
}
}
}
Cada proxy tem um nome amigável, como proxy1, no exemplo acima. O objeto de definição de proxy correspondente é definido pelas seguintes propriedades:
Observação
A propriedade de rota dos proxies de funções do Azure não honra a propriedade routePrefix da configuração de host do Aplicativo de funções. Se você quiser incluir um prefixo, como /api
, ele deve ser incluído na propriedade de rota.
Você pode desabilitar proxies individuais adicionando "disabled": true
ao proxy no arquivo proxies.json
. Isso fará com que as solicitações atendam a matchCondition para retornar 404.
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"Root": {
"disabled":true,
"matchCondition": {
"route": "/example"
},
"backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>"
}
}
}
O comportamento do proxy pode ser controlado por várias configurações de aplicativo. Todas elas são descritas na referência de Configurações do aplicativo de funções
Os proxies leem todas as cadeias de caracteres de um arquivo JSON, usando \ como símbolo de escape. Os proxies também interpretam chaves. Veja a seguir um conjunto completo de exemplos.
Caractere | Caractere de escape | Exemplo |
---|---|---|
{ ou } | {{ ou }} |
{{ example }} -->{ example } |
\ | \\ |
example.com\\text.html -->example.com\text.html |
" | \" |
\"example\" -->"example" |
O objeto requestOverrides define as alterações feitas à solicitação quando o recurso de back-end é chamado. O objeto é definido pelas seguintes propriedades:
Os valores podem referenciar as configurações do aplicativo e os parâmetros da solicitação original do cliente.
Uma configuração de exemplo pode ser parecida com a seguinte:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"proxy1": {
"matchCondition": {
"methods": [ "GET" ],
"route": "/api/{test}"
},
"backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>",
"requestOverrides": {
"backend.request.headers.Accept": "application/xml",
"backend.request.headers.x-functions-key": "%ANOTHERAPP_API_KEY%"
}
}
}
}
O objeto requestOverrides define as alterações feitas à resposta passada novamente ao cliente. O objeto é definido pelas seguintes propriedades:
Os valores podem referenciar as configurações do aplicativo, os parâmetros da solicitação original do cliente e os parâmetros da resposta de back-end.
Uma configuração de exemplo pode ser parecida com a seguinte:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"proxy1": {
"matchCondition": {
"methods": [ "GET" ],
"route": "/api/{test}"
},
"responseOverrides": {
"response.body": "Hello, {test}",
"response.headers.Content-Type": "text/plain"
}
}
}
}
Observação
Neste exemplo, o corpo da resposta é definido diretamente e, portanto, nenhuma propriedade backendUri
é necessária. O exemplo mostra como você pode usar os Proxies do Azure Functions para simular APIs.
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Roteiro de aprendizagem
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization