Conectar funções ao Armazenamento do Azure usando o Visual Studio

O Azure Functions permite que você conecte os serviços do Azure e outros recursos a funções sem precisar escrever seu próprio código de integração. Essas ligações, que representam entrada e saída, são declaradas dentro da definição de função. Os dados de enlaces são fornecidos à função como parâmetros. Um gatilho é um tipo especial de ligação de entrada. Embora uma função tenha apenas um gatilho, ela pode ter várias ligações de entrada e saída. Para saber mais, consulte Conceitos de acionadores e associações do Azure Functions.

Este artigo mostra como usar o Visual Studio para conectar a função criada no artigo de início rápido anterior ao Armazenamento do Azure. A associação de saída que você adiciona a essa função grava dados da solicitação HTTP em uma mensagem em uma fila de armazenamento da Fila do Azure.

A maioria das associações requer uma cadeia de conexão armazenada que o Functions usa para acessar o serviço associado. Para facilitar, use a conta de armazenamento que criou com seu aplicativo de função. A conexão com essa conta já está armazenada em uma configuração de aplicativo chamada AzureWebJobsStorage.

Pré-requisitos

Antes de começar este artigo, você deve:

  • Conclua a parte 1 do início rápido do Visual Studio.
  • Instale o Azure Storage Explorer. O Gerenciador de Armazenamento é uma ferramenta que você usará para examinar mensagens de fila geradas pela vinculação de saída. O Storage Explorer é compatível com sistemas operacionais baseados em macOS, Windows e Linux.
  • Inicie sessão na sua subscrição do Azure a partir do Visual Studio.

Baixe as configurações do aplicativo de função

No artigo de início rápido anterior, você criou um aplicativo de função no Azure junto com a conta de armazenamento necessária. A cadeia de conexão para essa conta é armazenada com segurança nas configurações do aplicativo no Azure. Neste artigo, você grava mensagens em uma fila de armazenamento na mesma conta. Para se conectar à sua conta de armazenamento ao executar a função localmente, você deve baixar as configurações do aplicativo para o arquivo local.settings.json .

  1. No Explorador de Soluções, clique com o botão direito do rato no projeto e selecione Publicar.

  2. Na guia Publicar em Hospedagem, expanda os três pontos (...) e selecione Gerenciar configurações do Serviço de Aplicativo do Azure.

    Editar as configurações do aplicativo

  3. Em AzureWebJobsStorage, copie o valor da cadeia de caracteres Remote para Local e selecione OK.

A associação de armazenamento, que usa a AzureWebJobsStorage configuração para a conexão, agora pode se conectar ao seu armazenamento de fila quando executado localmente.

Registar as extensões de enlace

Como você está usando uma ligação de saída de armazenamento de fila, você precisa da extensão de ligações de armazenamento instalada antes de executar o projeto. Exceto para gatilhos HTTP e timer, as ligações são implementadas como pacotes de extensão.

  1. No menu Ferramentas, selecione Console do Gerenciador> de Pacotes NuGet.

  2. No console, execute o seguinte comando Install-Package para instalar as extensões de armazenamento:

    Install-Package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues
    

Agora, você pode adicionar a vinculação de saída de armazenamento ao seu projeto.

Adicionar um enlace de saída

Em um projeto C#, as ligações são definidas como atributos de ligação no método de função. As definições específicas dependem se seu aplicativo é executado em processo (biblioteca de classes C#) ou em um processo de trabalho isolado.

Abra o arquivo de projeto HttpExample.cs e adicione a seguinte MultiResponse classe:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

A MultiResponse classe permite que você escreva em uma fila de armazenamento nomeada outqueue e uma mensagem de sucesso HTTP. Várias mensagens podem ser enviadas para a fila porque o QueueOutput atributo é aplicado a uma matriz de cadeia de caracteres.

A Connection propriedade define a cadeia de conexão para a conta de armazenamento. Nesse caso, você pode omitir Connection porque já está usando a conta de armazenamento padrão.

Adicione código que utiliza o enlace de saída

Depois que a associação for definida, você poderá usar o name da associação para acessá-la como um atributo na assinatura da função. Usando uma associação de saída, você não precisa usar o código do SDK do Armazenamento do Azure para autenticação, obtenção de uma referência de fila ou gravação de dados. O tempo de execução do Functions e a vinculação de saída da fila fazem essas tarefas por você.

Substitua a classe existente HttpExample pelo seguinte código:

    [Function("HttpExample")]
    public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
        FunctionContext executionContext)
    {
        var logger = executionContext.GetLogger("HttpExample");
        logger.LogInformation("C# HTTP trigger function processed a request.");

        var message = "Welcome to Azure Functions!";

        var response = req.CreateResponse(HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
        response.WriteString(message);

        // Return a response to both HTTP trigger and storage output binding.
        return new MultiResponse()
        {
            // Write a single message.
            Messages = new string[] { message },
            HttpResponse = response
        };
    }
}

Executar a função localmente

  1. Para executar sua função, pressione F5 no Visual Studio. Talvez seja necessário habilitar uma exceção de firewall para que as ferramentas possam lidar com solicitações HTTP. Os níveis de autorização nunca são impostos quando você executa uma função localmente.

  2. Copie o URL da sua função na saída do tempo de execução das funções do Azure.

    Tempo de execução local do Azure

  3. Cole o URL da solicitação HTTP na barra de endereço do navegador e execute a solicitação. A imagem a seguir mostra a resposta no navegador para a solicitação GET local retornada pela função:

    Resposta da função localhost no browser

  4. Para parar a depuração, pressione Shift+F5 no Visual Studio.

Uma nova fila nomeada outqueue é criada em sua conta de armazenamento pelo tempo de execução do Functions quando a associação de saída é usada pela primeira vez. Você usará o Gerenciador de Armazenamento para verificar se a fila foi criada junto com a nova mensagem.

Ligar o Explorador de Armazenamento à sua conta

Ignore esta seção se você já tiver instalado o Gerenciador de Armazenamento do Azure e o conectado à sua conta do Azure.

  1. Execute a ferramenta Gerenciador de Armazenamento do Azure, selecione o ícone de conexão à esquerda e selecione Adicionar uma conta.

    Captura de ecrã de como adicionar uma conta do Azure ao Microsoft Azure Storage Explorer.

  2. Na caixa de diálogo Conectar, escolha Adicionar uma conta do Azure, escolha seu ambiente do Azure e selecione Entrar....

    Captura de ecrã do início de sessão na janela da sua conta do Azure.

Depois de iniciar sessão com êxito na sua conta, vê todas as subscrições do Azure associadas à sua conta. Escolha a sua subscrição e selecione Abrir Explorer.

Examinar a fila de saída

  1. No Gerenciador de Armazenamento, expanda o nó Filas e selecione a fila chamada outqueue.

    A fila contém a mensagem que a fila de enlace de saída da fila criou quando executou a função acionada por HTTP. Se invocou a função com o valor predefinido name do Azure, a mensagem de fila é Nome transmitido para a função: Azure.

    Captura de ecrã da mensagem de fila apresentada no Explorador de Armazenamento do Azure.

  2. Execute a função novamente, envie outra solicitação e você verá uma nova mensagem na fila.

Agora, é hora de publicar novamente o aplicativo de função atualizado no Azure.

Reimplantar e verificar o aplicativo atualizado

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Publicar e escolha Publicar para publicar novamente o projeto no Azure.

  2. Após a conclusão da implantação, você pode usar novamente o navegador para testar a função reimplantada. Como antes, acrescente a cadeia de caracteres &name=<yourname> de consulta à URL.

  3. Exiba novamente a mensagem na fila de armazenamento para verificar se a ligação de saída gera novamente uma nova mensagem na fila.

Clean up resources (Limpar recursos)

Outros guias de introdução desta coleção têm por base este guia de introdução. Se você planeja trabalhar com inícios rápidos, tutoriais ou com qualquer um dos serviços criados neste início rápido, não limpe os recursos.

Os recursos no Azure referem-se a aplicações de funções, funções, contas de armazenamento e assim sucessivamente. Eles são agrupados em grupos de recursos e você pode excluir tudo em um grupo excluindo o grupo.

Você criou recursos para concluir esses inícios rápidos. Você pode ser cobrado por esses recursos, dependendo do status da sua conta e do preço do serviço. Se já não precisar dos recursos, pode eliminá-los da seguinte forma:

  1. No portal do Azure, visite a página Grupo de recursos.

    Para aceder a essa página a partir da página da aplicação de funções, selecione o separador Descrição Geral e, em seguida, selecione a ligação em Grupo de recursos.

    Captura de tela que mostra a seleção do grupo de recursos a ser excluído da página do aplicativo de função.

    Para aceder a essa página a partir do dashboard, selecione Grupos de recursos e, em seguida, selecione o grupo de recursos que utilizou para este artigo.

  2. Na página Grupo de recursos, revise a lista de recursos incluídos e verifique se eles são aqueles que você deseja excluir.

  3. Selecione Excluir grupo de recursos e siga as instruções.

    A exclusão pode levar alguns minutos. Quando terminar, é apresentada uma notificação durante alguns segundos. Também pode selecionar o ícone de sino na parte superior da página para ver a notificação.

Próximos passos

Você atualizou sua função acionada por HTTP para gravar dados em uma fila de armazenamento. Para saber mais sobre como desenvolver funções, consulte Desenvolver funções do Azure usando o Visual Studio.

Em seguida, você deve habilitar o monitoramento do Application Insights para seu aplicativo de função: