Etapa 1: criar o serviço remoto (Azure Function) no Portal¶
Este tópico fornece instruções detalhadas para a criação de um Azure Function para uso como serviço remoto para sua função externa.
Neste tópico:
Etapa anterior¶
Criação do aplicativo Azure Functions¶
Há várias maneiras possíveis de criar um serviço remoto. Esta seção mostra como criar um serviço remoto que é implementado como uma função JavaScript.
Esta função externa é síncrona. Para obter mais informações sobre a criação de uma função externa assíncrona, consulte Criação de uma função assíncrona no Azure.
Crie um aplicativo Azure Functions para servir como um recipiente para a(s) função(ões) que você criar posteriormente:
Entre no Portal do Azure se ainda não tiver feito isso.
Crie o aplicativo Azure Functions seguindo as instruções da documentação da Microsoft: Aplicativo Azure Functions.
Ao seguir as instruções, lembre-se do seguinte:
Ao inserir um nome no campo Function App Name, registre também o nome no campo
Azure Function app name
da sua planilha de rastreamento.Quando solicitado a escolher como Publish, selecione Code.
Algumas restrições se aplicam ao criar várias aplicativos no mesmo grupo de recursos. Para obter mais detalhes, consulte a documentação da Microsoft: Serviço de Aplicativo do Azure.
O Snowflake fornece uma função de “echo” de amostra no Node.js. Para usar essa função de amostra para começar:
Quando solicitado o
Runtime stack
, selecione Node.js.Quando for solicitada a versão do Node.js, selecione a versão 12.
Quando perguntado em qual OS executar a função, escolha “Windows” ou “Linux”.
Se você estiver criando apenas uma função de demonstração, o Snowflake recomenda selecionar “Windows”.
Os aplicativos de função do Linux não podem ser editados no Portal do Azure. Os usuários devem publicar o código pela interface do Visual Studio Code.
Se você quiser executar seu Azure Function no Linux em vez de no Microsoft Windows, consulte a documentação da Microsoft: Azure Functions.
A autenticação do Azure AD não está disponível no Linux quando se utiliza o plano de preços “Consumo” para Azure Functions. Você deve usar um plano de preços “Serviço de Aplicativo” ou plano de preços “Premium” para se autenticar com o Azure AD.
Para obter mais detalhes, consulte a documentação da Microsoft: Azure AD.
Criar um Azure Function acionado por HTTP¶
Após criar seu aplicativo Azure Functions (contêiner), você precisa criar um Azure Functions no contêiner. Essa função atua como o serviço remoto.
A Microsoft permite que as Azure Functions sejam chamadas (“acionadas”) de diferentes maneiras. Uma função externa do Snowflake invoca um serviço remoto por meio de um comando HTTP POST, portanto o Azure Function que você cria deve ser uma função “acionada por HTTP”.
Dica
Você pode usar as instruções fornecidas pela Microsoft para criar a função acionada por HTTP:
Entretanto, o Snowflake fornece instruções personalizadas que incluem detalhes adicionais e código de amostra, sugerindo um nível de autorização diferente daquele da Microsoft. Sugerimos o uso das instruções personalizadas em vez das instruções da Microsoft.
Criar a função¶
Para realizar as tarefas descritas nesta seção, você deve estar na tela Function App do Portal do Azure. O nome do seu aplicativo Azure Functions deve estar exibido, normalmente perto do canto superior esquerdo da tela.
Para criar a função acionada por HTTP:
Na árvore de menus do lado esquerdo, procure a seção intitulada Functions. Nessa seção, clique no item rotulado Functions para adicionar uma função.
Clique no botão + Add.
Selecione HTTP trigger da lista de possíveis acionadores à direita.
Digite o nome a ser usado para sua função acionada por HTTP.
Registre esse nome no campo
HTTP-Triggered Function name
da sua planilha de rastreamento.Digite o Authorization level.
O Snowflake recomenda escolher Function como nível de autorização.
Para obter mais informações sobre possíveis níveis de autorização, consulte a documentação da Microsoft: Funções acionadas por HTTP.
Clique no botão intitulado Add.
Isto leva você a uma tela que mostra o nome da função e, abaixo dela, a palavra Function.
Na árvore de menus no lado esquerdo, clique em Code + Test.
Substitua o código padrão pelo seu próprio código.
Uma amostra de código para uma função “echo” JavaScript é fornecida abaixo.
A função lê cada linha, depois copia a linha para a saída (resultados). O número da linha também está incluído na saída. A saída é retornada como parte de um dicionário multinível.
Essa função aceita e retorna dados no mesmo formato (JSON) que o Snowflake envia e lê. Para obter mais detalhes sobre formatos de dados, consulte Formatos de dados de entrada e saída do serviço remoto .
Normalmente, a função retorna o código 200 HTTP. Se nenhuma linha for passada para a função (isto é, se o corpo da solicitação estiver vazio), a função retorna o código de erro 400.
module.exports = async function(context, request) { context.log('JavaScript HTTP trigger function processed a request.'); if (request.body) { var rows = request.body.data; var results = []; rows.forEach(row => { results.push([row[0], row]); }); results = {data: results} context.res = { status: 200, body: JSON.stringify(results) }; } else { context.res = { status: 400, body: "Please pass data in the request body." }; } };
Clique no botão Save acima do código.
Testar a função¶
Para testar o Azure Function acionada por HTTP que você acabou de criar, cole os seguintes dados de amostra no campo Body e clique no botão Test/Run:
{ "data": [ [ 0, 43, "page" ], [ 1, 42, "life, the universe, and everything" ] ] }
O conteúdo de saída deve ser semelhante ao seguinte:
{ "data": [ [ 0, [ 0, 43, "page" ] ], [ 1, [ 1, 42, "life, the universe, and everything" ] ] ] }
Observe que a formatação pode ser diferente do que é mostrado acima.
Próxima etapa¶
Etapa 2: criar o serviço de proxy (serviço de gerenciamento de API do Azure) no Portal