Laboratório 07: Acesse segredos de recursos com mais segurança em todos os serviços

Interface de usuário do Microsoft Azure

Dada a natureza dinâmica das ferramentas de nuvem da Microsoft, você pode se deparar com alterações na IU do Azure que ocorram após o desenvolvimento deste conteúdo do treinamento. Como resultado, as instruções do laboratório e as etapas do laboratório podem não estar alinhadas corretamente.

A Microsoft atualiza este curso de treinamento quando a comunidade chama a nossa atenção para alterações necessárias. No entanto, como as atualizações na nuvem ocorrem com frequência, você pode encontrar alterações na interface de usuário antes que esse conteúdo de treinamento seja atualizado. Se isso ocorrer, adapte-se às alterações e trabalhe com elas nos laboratórios, conforme necessário.

Instruções

Antes de começar

Entrar no ambiente de laboratório

Entre na máquina virtual (VM) do Windows 11 usando as seguintes credenciais:

  • Nome de usuário: Admin
  • Senha: Pa55w.rd

Observação: Seu instrutor fornecerá instruções para se conectar ao ambiente de laboratório virtual.

Examinar os aplicativos instalados

Localize a barra de tarefas na área de trabalho do Windows 11. A barra de tarefas contém os ícones dos aplicativos que você usará neste laboratório, incluindo:

  • Microsoft Edge
  • Explorador de Arquivos
  • Terminal
  • Visual Studio Code

Cenário do laboratório

Neste laboratório, você criará uma conta de armazenamento e um aplicativo de funções do Azure que acessará a conta de armazenamento. Para demonstrar o armazenamento seguro de informações de cadeia de conexão, você provisionará um recurso do Key Vault e gerenciará os segredos apropriados para armazenar as informações da cadeia de conexão. Você também gerenciará a identidade do serviço para obter acesso seguro às informações da cadeia de conexão da conta de armazenamento.

Diagrama de arquitetura

Diagrama de arquitetura que mostra um usuário acessando segredos de recursos com mais segurança entre os serviços.

Exercício 1: Criar recursos do Azure

Tarefa 1: Abrir o portal do Azure

  1. Na barra de tarefas, selecione o ícone Microsoft Edge.

  2. Na janela aberta do navegador, navegue até o portal do Azure em https://portal.azure.com e entre com a conta que você usará para este laboratório.

    Observação: Se esta for a primeira vez que entra no portal do Azure, você receberá um tour pelo portal. Selecione Introdução para ignorar o tour e começar a usar o portal.

Tarefa 2: Criar uma conta de armazenamento

  1. No portal do Azure, use a caixa de texto Pesquisar recursos, serviços e documentos para procurar por Contas de armazenamento e, na lista de resultados, selecione Contas de armazenamento.

  2. Na folha Contas de armazenamento , selecione + Criar.

  3. Na folha Criar uma conta de armazenamento, na guia Básico, realize as ações a seguir e selecione Examinar:

    Configuração Ação
    Lista suspensa Assinatura Manter o valor padrão
    Seção Grupo de recursos Selecionar Criar novo, inserir ConfidentialStack e selecionar OK
    Caixa de texto Nome da conta de armazenamento  Inserir securestor[yourname]
    Lista suspensa Região Selecione (EUA) Leste dos EUA
    Seção Desempenho Selecione a opção Padrão
    Lista suspensa Redundância Selecione LRS (Armazenamento com redundância local)

    A captura de tela a seguir exibe as configurações definidas na folha Criar uma conta de armazenamento.

    Captura de tela exibindo as configurações definidas na folha Criar uma conta de armazenamento

  4. Na guia Revisão, revise as opções selecionadas nas etapas anteriores.

  5. Selecione Criar para criar a conta de armazenamento usando a configuração especificada.

    Observação: Aguarde a conclusão da tarefa de criação antes de avançar neste laboratório.

  6. Na folha Visão Geral de implantação, selecione Ir para o recurso.

  7. Na folha Conta de armazenamento , na seção  Segurança + rede , selecione o link Chaves de acesso .

  8. Na seção Chaves de acesso , selecione Mostrar chaves.

  9. Na folha Chaves de acesso , examine qualquer uma das Cadeias de conexão (usando o botão Mostrar) e registre o valor de qualquer uma das caixas de Cadeia de conexão no Bloco de Notas. As Chaves são chaves de criptografia gerenciadas por plataforma e não são usadas para este laboratório.

    Observação: Não importa qual cadeia de conexão você escolher. Eles são intercambiáveis.

Tarefa 3: Criar um Azure Key Vault

  1. No portal do Azure, use a caixa de texto Pesquisar recursos, serviços e documentos para procurar por Cofres de chaves e, na lista de resultados, selecione Cofres de chaves.

  2. Na folha Cofres de chaves, selecione Criar.

  3. Na folha Criar cofre de chaves, na guia Informações básicas, realize as seguintes ações e selecione Próximo para acessar a guia Configuração de Acesso:

    Configuração Ação
    Lista suspensa Assinatura Manter o valor padrão
    Lista suspensa Grupo de recursos Selecionar ConfidentialStack na lista
    Caixa de texto Nome do cofre de chaves  Inserir securevault[yourname]
    Lista suspensa Região Selecione Leste dos EUA
    Lista suspensa Tipo de preço Selecione Standard

    A captura de tela a seguir exibe as configurações definidas na folha Criar cofre de chaves.

    Captura de tela exibindo as configurações definidas na folha Criar cofre de chaves

  4. Na guia Configuração de Acesso, altere o modelo de permissão para Política de acesso ao cofre e selecione Examinar + criar.

  5. Na guia Revisar + criar, revise as opções selecionadas nas etapas anteriores.

  6. Selecione Criar para criar o cofre de chaves usando a configuração especificada.

    Observação: Aguarde a conclusão da tarefa de criação antes de avançar neste laboratório.

tarefa 4: Criar um aplicativo de funções

  1. No portal do Azure, use a caixa de texto Pesquisar recursos, serviços e documentos para procurar por Aplicativo de funções e, na lista de resultados, selecione Aplicativo de funções.

  2. Na folha Aplicativo de funções, selecione Criar.

  3. Na página Selecionar uma opção de hospedagem, verifique se Consumo está selecionado e clique em Selecionar.

  4. Na folha Criar um Aplicativo de Funções (Consumo), na guia Básico, realize as seguintes ações e selecione Avançar: Armazenamento:

    Configuração Ação
    Lista suspensa Assinatura Manter o valor padrão
    Lista suspensa Grupo de recursos Selecionar ConfidentialStack
    Caixa de texto Nome do aplicativo de funções  Inserir securefunc[yourname]
    Lista suspensaPilha de runtime Selecionar .NET
    Lista suspensa Versão Selecione 8 (LTS), modelo de trabalho isolado
    Lista suspensa Região Selecionar a região Leste dos EUA
    Seção Sistema operacional Selecione Linux

    A captura de tela a seguir exibe as configurações definidas na folha Criar aplicativo de funções.

    Captura de tela exibindo as configurações definidas na folha Criar aplicativo de funções

  5. Na guia Armazenamento, realize as seguintes ações e selecione Revisar + criar:

    Configuração Ação
    Lista suspensa Conta de armazenamento Selecionar a conta de armazenamento securestor[yourname]
  6. Na guia Revisar + criar, revise as opções selecionadas nas etapas anteriores.

  7. Selecione Criar para criar o aplicativo de funções usando a configuração especificada.

    Observação: Aguarde a conclusão da tarefa de criação antes de avançar neste laboratório.

Revisão

Neste exercício, você criou todos os recursos que usará neste laboratório.

Exercício 2: Configurar segredos e identidades

tarefa 1: Configurar uma identidade de serviço gerenciada atribuída pelo sistema

  1. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  2. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  3. Na folha ConfidentialStack, selecione o aplicativo de funções securefunc[yourname].

    Observação: Haverá dois recursos, um aplicativo de funções e um recurso de insights de aplicativo, com o mesmo nome. Certifique-se de selecionar o recurso de aplicativo de funções.

  4. Na folha Aplicativo de funções, selecione a opção Identidade da seção Configurações.

  5. No painel Identidade, na guia Atribuída pelo sistema, defina o Status como Ativado e selecione Salvar.

  6. Selecione Sim para confirmar a configuração.

    Observação: aguarde a identidade gerenciada atribuída pelo sistema ser criada antes de avançar neste laboratório.

Tarefa 2: Criar um segredo do Key Vault

  1. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  2. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  3. Na folha ConfidentialStack, selecione o cofre de chaves securevault[yourname].

  4. Na folha Key Vault, selecione o link segredos na seção Objetos.

  5. No painel Segredos, selecione + Gerar/Importar.

  6. Na folha Criar um segredo, realize as seguintes ações e selecione Criar:

    Configuração Ação
    Lista suspensa Opções de upload Selecione Manual
    Caixa de texto Nome Inserir storagecredentials
    Caixa de texto Valor secreto Insira a cadeia de conexão da conta de armazenamento salva anteriormente neste laboratório.
    Caixa de texto Tipo de conteúdo Deixar em branco
    Caixa de seleção Definir data de ativação Não selecionado
    Caixa de seleção Definir data de validade Não selecionado
    Opção Habilitado Selecione Sim

    A captura de tela a seguir exibe as configurações definidas na folha Criar um segredo.

    Captura de tela exibindo as configurações definidas na folha Criar um segredo

    Observação: Aguarde o segredo ser criado antes de avançar neste laboratório.

  7. Retorne ao painel Segredos e selecione o item storagecredentials na lista.

  8. No painel Versões, selecione a última versão do segredo storagecredentials.

  9. No painel Versão do segredo, realize as seguintes ações:

    1. Selecione Mostrar valor secreto para encontrar o valor do segredo.

    2. Registre o valor da caixa de texto Identificador do segredo, porque você o usará mais adiante no laboratório.

    Observação: Você está registrando o valor da caixa de texto Identificador do segredo, e não da caixa de texto Valor secreto.

Tarefa 3: Configurar uma política de acesso do Key Vault

  1. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  2. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  3. Na folha ConfidentialStack, selecione o cofre de chaves securevault[yourname].

  4. Na folha Key Vault, selecione o link Políticas de acesso na seção Visão Geral.

  5. No painel Políticas de acesso, selecione + Criar.

  6. Na folha Criar uma política de acesso, na seção Permissões, faça as seguintes seleções:

    Configuração Ação
    Lista suspensa Configurar com base em um modelo Deixar em branco
    Caixas de seleção Permissões de chave 0 selecionado
    Caixas de seleção Permissões de segredo Selecionar a permissão GET
    Caixas de seleção Permissões de certificado 0 selecionado
  7. Selecione a seção Entidade de segurança e faça as seleções a seguir:

    Configuração Ação
    Link Selecionar entidade de segurança Localize e selecione a entidade de serviço chamada securefunc[yourname]. A identidade gerenciada atribuída pelo sistema criada anteriormente neste laboratório terá o mesmo nome que o recurso do Azure Functions
  8. Selecione Revisar + criar e, então, selecione Criar.

    Observação: Aguarde as suas alterações nas políticas de acesso serem salvas antes de avançar neste laboratório.

Tarefa 4: Criar uma configuração de aplicativo derivado do Key Vault

  1. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  2. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  3. Na folha ConfidentialStack, selecione o aplicativo de funções securefunc[yourname].

  4. Na folha Aplicativo de Funções, na seção Configurações, selecione o link Variáveis de ambiente.

  5. Na guia Configurações de aplicativo, escolha + Adicionar. Insira as seguintes informações na caixa de diálogo pop-up Adicionar/Editar configuração de aplicativo:

    Configuração Ação
    Caixa de texto Nome Insira StorageConnectionString
    Caixa de texto Valor Construa um valor usando a seguinte sintaxe: @Microsoft.KeyVault(SecretUri=<Secret Identifier>), em que o espaço reservado <Secret Identifier> representa o identificador secreto que você anotou anteriormente neste exercício.
    Caixa de seleção Configuração do slot de implantação Manter o valor padrão

    Observação: Por exemplo, se o seu identificador de segredo for https://securevaultstudent.vault.azure.net/secrets/storagecredentials/17b41386df3e4191b92f089f5efb4cbf, o valor resultante será @Microsoft.KeyVault(SecretUri=https://securevaultstudent.vault.azure.net/secrets/storagecredentials/17b41386df3e4191b92f089f5efb4cbf).

  6. Escolha Aplicar para fechar a caixa de diálogo pop-up e retornar à seção Configurações de aplicativo.

  7. Na parte inferior da seção Configurações de aplicativo, selecione Aplicar.

    Observação: Você poderá receber um aviso de que o seu aplicativo pode ser reiniciado ao atualizar as configurações do aplicativo. Selecione Confirmar. Aguarde até que as configurações do aplicativo sejam salvas antes de avançar neste laboratório.

Revisão

Neste exercício, você criou uma identidade de serviço gerenciada atribuída pelo sistema para o seu aplicativo de funções e, em seguida, concedeu a essa identidade as permissões apropriadas para obter o valor de um segredo no cofre de chaves. Por fim, você criou um segredo referenciado dentro das definições de configuração do seu aplicativo de funções.

Exercício 3: Criar um aplicativo do Azure Functions

Tarefa 1: Inicializar um projeto de função

  1. Na barra de tarefas, selecione o ícone de Terminal.

  2. Execute o seguinte comando para alterar o diretório atual para o diretório vazio Allfiles (F):\Allfiles\Labs\07\Starter\func:

    cd F:\Allfiles\Labs\07\Starter\func
    

    Observação: No Windows Explorer, remova o atributo Somente leitura do arquivo gitignore F:\Allfiles\Labs\07\Starter\func..

  3. Execute o seguinte comando para usar Azure Functions Core Tools para criar um novo projeto local do Functions no diretório atual usando o runtime dotnet:

    func init --worker-runtime dotnet-isolated --target-framework net8.0 --force
    

    Observação: Você pode examinar a documentação para [create a new project][azure-functions-core-tools-new-project] usando Azure Functions Core Tools.

  4. Execute o seguinte comando para compilação do projeto do .NET 8:

    dotnet build
    

Tarefa 2: Criar uma função disparada por HTTP

  1. Execute o comando a seguir para usar Azure Functions Core Tools para criar uma nova função chamada FileParser usando o modelo de gatilho de HTTP:

    func new --template "HTTP trigger" --name "FileParser"
    

    Observação: você pode examinar a documentação para [create a new function][azure-functions-core-tools-new-function] usando Azure Functions Core Tools.

  2. Feche o aplicativo de Terminal em execução no momento.

Tarefa 3: Configurar e ler uma configuração de aplicativo

  1. Na tela inicial, selecione o bloco Visual Studio Code.

  2. No menu Arquivo, selecione Abrir Pasta.

  3. Na janela Explorador de Arquivos que se abre, navegue até Allfiles (F):\Allfiles\Labs\07\Starter\func e selecione Selecionar Pasta.

  4. No painel Explorer da janela do Visual Studio Code, abra o arquivo local.settings.json.

  5. Observe o valor atual do objeto Valores:

    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
    }
    
  6. Atualize o valor do objeto Valores, adicionando uma nova configuração chamada StorageConnectionString e, em seguida, atribuindo-lhe um valor de cadeia de caracteres de [TEST VALUE]:

    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "StorageConnectionString": "[TEST VALUE]"
    }
    
  7. O arquivo local.settings.json agora deve incluir:

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "StorageConnectionString": "[TEST VALUE]"
      }
    }
    
  8. Selecione Salvar para salvar as alterações no arquivo local.settings.json.

  9. No painel Explorer da janela do Visual Studio Code, abra o arquivo FileParser.cs.

  10. No editor de código, substitua o conteúdo do código gerado automaticamente da função FileParser começando pela linha 18 pelo seguinte código:

            [Function("FileParser")]
             public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
             {
                 _logger.LogInformation("C# HTTP trigger function processed a request.");
    
                 var response = req.CreateResponse(HttpStatusCode.OK);
                 response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
    
                 string connectionString = Environment.GetEnvironmentVariable("StorageConnectionString");
                 response.WriteString(connectionString);
    
                 return response;
             }
    
  11. Ignore os avisos sobre valores nulos.

  12. Revise o código resultante, que deve consistir no seguinte conteúdo (esse código retorna o valor da variável de ambiente StorageConnectionString):

    using System.Net;
    using Microsoft.Azure.Functions.Worker;
    using Microsoft.Azure.Functions.Worker.Http;
    using Microsoft.Extensions.Logging;
    
    namespace func
    {
        public class FileParser
        {
            private readonly ILogger _logger;
    
            public FileParser(ILoggerFactory loggerFactory)
            {
                _logger = loggerFactory.CreateLogger<FileParser>();
            }
    
            [Function("FileParser")]
            public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
            {
                _logger.LogInformation("C# HTTP trigger function processed a request.");
    
                var response = req.CreateResponse(HttpStatusCode.OK);
                response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
    
                string connectionString = Environment.GetEnvironmentVariable("StorageConnectionString");
                response.WriteString(connectionString);
    
                return response;
            }
        }
    }
    
  13. Selecione Salvar para salvar as alterações no arquivo FileParser.cs.

Tarefa 4: Validar a função local

  1. Na barra de tarefas, selecione o ícone de Terminal.

  2. Execute o seguinte comando para alterar o diretório atual para o diretório vazio Allfiles (F):\Allfiles\Labs\07\Starter\func:

    cd F:\Allfiles\Labs\07\Starter\func
    
  3. Execute o seguinte comando para executar o projeto de aplicativo de funções:

    func start --build
    

    Observação: Você pode examinar a documentação para [start the function app project locally][azure-functions-core-tools-start-function] usando Azure Functions Core Tools.

  4. No computador do laboratório, inicie um Prompt de comando.

  5. Execute o seguinte comando para executar o teste da chamada da API REST do GET em http://localhost:7071/api/FileParser:

    curl -X GET -i http://localhost:7071/api/FileParser
    
  6. Observe o valor [TEST VALUE] de StorageConnectionString devolvido como resultado da solicitação HTTP:

    HTTP/1.1 200 OK
    Content-Type: text/plain; charset=utf-8
    Date: Tue, 01 Sep 2020 23:35:39 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    [TEST VALUE]
    
  7. Feche todas as instâncias em execução no momento do aplicativo Terminal e o aplicativo Prompt de comando.

Tarefa 5: Implantar a função usando Azure Functions Core Tools

  1. Na barra de tarefas, selecione o ícone de Terminal.

  2. Execute o seguinte comando para alterar o diretório atual para o diretório vazio Allfiles (F):\Allfiles\Labs\07\Starter\func:

    cd F:\Allfiles\Labs\07\Starter\func
    
  3. Execute o seguinte comando para entrar na interface de linha de comando (CLI) do Azure:

    az login
    
  4. Na janela do navegador Microsoft Edge, insira as credenciais da conta que você usa para acessar sua assinatura do Azure e selecione Entrar.

  5. Retorne à janela do Terminal aberta no momento. Aguarde a conclusão do processo de credenciais.

  6. Execute o seguinte comando para publicar o projeto de aplicativo de funções (mude o espaço reservado <function-app-name> para o nome do aplicativo de funções criado anteriormente neste laboratório):

    func azure functionapp publish <function-app-name> --dotnet-version 8.0
    

    Observação: Por exemplo, se o nome do aplicativo de funções for securefuncstudent, o comando será func azure functionapp publish securefuncstudent --force. Você pode examinar a documentação para [publish the local function app project][azure-functions-core-tools-publish-azure] usando Azure Functions Core Tools.

  7. Aguarde o término da implantação antes de avançar neste laboratório.

  8. Feche o aplicativo de Terminal em execução no momento.

Tarefa 6: Testar a configuração de aplicativo derivado do Key Vault

  1. Na barra de tarefas, selecione o ícone Microsoft Edge e, em seguida, selecione a guia que contém o portal do Azure.

  2. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  3. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  4. Na folha ConfidentialStack, selecione o aplicativo de funções securefunc[yourname].

  5. Na folha Aplicativo de funções, selecione a opção Visão Geral.

  6. Na guia Funçõesna parte inferior da página de visão geral, selecione a função FileParser.

  7. Na folha Função, selecione a opção Codificar + Testar da seção Desenvolvedor.

  8. No editor de funções, selecione Testar/Executar.

  9. No painel exibido automaticamente, na listaMétodo HTTP, selecione GET.

  10. Selecione Executar para testar a função.

  11. Examine os resultados do teste executado. O resultado deve ser sua cadeia de conexão de armazenamento do Azure.

Revisão

Neste exercício, você usou uma identidade de serviço para ler o valor de um segredo armazenado no Key Vault e devolveu esse valor como o resultado de um aplicativo de funções.

Exercício 4: Acessar dados de Armazenamento de Blobs do Azure

Tarefa 1: carregar uma amostra de blob de armazenamento

  1. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  2. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  3. Na folha ConfidentialStack, selecione a conta de armazenamento securestor[yourname].

  4. Na folha Conta de armazenamento, selecione o link Contêineres na seção Armazenamento de dados.

  5. Na seção Contêineres, selecione + Contêiner.

  6. Na janela pop-up Novo contêiner, realize as seguintes ações e selecione Criar:

    Configuração Ação
    Caixa de texto Nome Insirasoltar
  7. Retorne à seção Contêineres e navegue até o contêiner remover recém-criado.

  8. Na folha Contêiner, selecione Carregar.

  9. Na janela Carregar blob, realize as seguintes ações e selecione Carregar:

    Configuração Ação
    Seção Arquivos Selecionar Procurar arquivos ou usar o recurso de arrastar e soltar
    Janela Explorador de Arquivos Navegue até Allfiles (F):\Allfiles\Labs\07\Starter, selecione o arquivo records.json e, então, selecione Abrir
    Caixa de seleção Substituir se arquivos já existirem Verificar se essa caixa de seleção está marcada

    Observação: aguarde o carregamento do blob antes de continuar com este laboratório.

  10. Retorne à folha Contêiner e selecione o blob records.json na lista de blobs.

  11. Na folha Blob, localize os metadados do blob e copie a URL para o blob.

  12. Na barra de tarefas, ative o menu de atalho para o ícone do Microsoft Edge e selecione Nova janela.

  13. Na nova janela do navegador, consulte a URL que você copiou para o blob.

  14. Uma mensagem de erro indicando que o acesso público não é permitido agora será exibida.

    Observação: Isso é esperado porque o acesso anônimo para nossos blobs não está habilitado.

Tarefa 2: Transferir e configurar o SDK do Azure para .NET

  1. Na barra de tarefas, selecione o ícone de Terminal.

  2. Execute o seguinte comando para alterar o diretório atual para o diretório vazio Allfiles (F):\Allfiles\Labs\07\Starter\func:

    cd F:\Allfiles\Labs\07\Starter\func
    
  3. Execute o seguinte comando para adicionar a versão 12.18.0 do pacote Azure.Storage.Blobs do NuGet:

    dotnet add package Azure.Storage.Blobs --version 12.18.0
    

    Observação: O pacote Azure.Storage.Blobs do NuGet referencia o subconjunto do SDK do Azure para .NET necessário para gravar código para Armazenamento de Blobs do Azure.

  4. Feche o aplicativo de Terminal em execução no momento.

  5. Na tela inicial, selecione o bloco Visual Studio Code.

  6. No menu Arquivo, selecione Abrir Pasta.

  7. Na janela Explorador de Arquivos que se abre, navegue até Allfiles (F):\Allfiles\Labs\07\Starter\func e selecione Selecionar Pasta.

  8. No painel Explorer da janela do Visual Studio Code, abra o arquivo FileParser.cs.

  9. Adicione usando diretivas para os namespaces Azure.Storage.Blobs e Azure.Storage.Blobs.Models:

    using Azure.Storage.Blobs;
    using Azure.Storage.Blobs.Models;
    
  10. Substitua o conteúdo do método FileParser atual começando pela linha 19 pelo seguinte código:

             [Function("FileParser")]
             public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
             {
                 _logger.LogInformation("C# HTTP trigger function processed a request.");
    
                 var response = req.CreateResponse(HttpStatusCode.OK);
    
                 string connectionString = Environment.GetEnvironmentVariable("StorageConnectionString");
    
                 /* Create a new instance of the BlobClient class by passing in your
                    connectionString variable, a  "drop" string value, and a
                    "records.json" string value to the constructor */
                 BlobClient blob = new BlobClient(connectionString, "drop", "records.json");
    
                 // Download the content of the referenced blob 
                 BlobDownloadResult downloadResult = blob.DownloadContent();
    
                  // Retrieve the value of the downloaded blob and convert it to string
                 response.WriteString(downloadResult.Content.ToString());
                
                 //return the response
                 return response;
             }
    
  11. Ignore o aviso sobre valores nulos.

  12. Revise o código resultante, que deve consistir no seguinte conteúdo (esse código retorna o conteúdo do blob baixado da conta de armazenamento designada pela variável de ambiente StorageConnectionString):

    namespace func
    {
        public class FileParser
        {
            private readonly ILogger _logger;
    
            public FileParser(ILoggerFactory loggerFactory)
            {
                _logger = loggerFactory.CreateLogger<FileParser>();
            }
    
            [Function("FileParser")]
            public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
            {
                _logger.LogInformation("C# HTTP trigger function processed a request.");
    
                var response = req.CreateResponse(HttpStatusCode.OK);
    
                string connectionString = Environment.GetEnvironmentVariable("StorageConnectionString");
    
                /* Create a new instance of the BlobClient class by passing in your
                   connectionString variable, a  "drop" string value, and a
                   "records.json" string value to the constructor */
                BlobClient blob = new BlobClient(connectionString, "drop", "records.json");
    
                // Download the content of the referenced blob 
                BlobDownloadResult downloadResult = blob.DownloadContent();
    
                 // Retrieve the value of the downloaded blob and convert it to string
                response.WriteString(downloadResult.Content.ToString());
                
                //return the response
                return response;
            }
        }
    }
    
  13. Selecione Salvar para salvar as alterações no arquivo FileParser.cs.

Tarefa 3: Implantar e validar o aplicativo do Azure Functions

  1. Na barra de tarefas, selecione o ícone de Terminal.

  2. Execute o seguinte comando para alterar o diretório atual para o diretório vazio Allfiles (F):\Allfiles\Labs\07\Starter\func:

    cd F:\Allfiles\Labs\07\Starter\func
    
  3. Execute o seguinte comando para entrar na CLI do Azure:

    az login
    
  4. Na janela do navegador do Microsoft Edge, insira o endereço de email e a senha da sua conta Microsoft e selecione Entrar.

  5. Retorne à janela do Terminal aberta no momento. Aguarde a conclusão do processo de credenciais.

  6. Execute o seguinte comando para publicar o projeto de aplicativo de funções (mude o espaço reservado <function-app-name> para o nome do aplicativo de funções usado anteriormente neste laboratório):

    func azure functionapp publish <function-app-name> --dotnet-version 8.0
    

    Observação: Por exemplo, se o nome do aplicativo de funções for securefuncstudent, o comando será func azure functionapp publish securefuncstudent. Você pode examinar a documentação para [publish the local function app project][azure-functions-core-tools-publish-azure] usando Azure Functions Core Tools.

  7. Aguarde o término da implantação antes de avançar neste laboratório.

  8. Feche o aplicativo de Terminal em execução no momento.

  9. Na barra de tarefas, selecione o ícone do Microsoft Edge e, em seguida, consulte o portal do Azure.

  10. No painel de navegação do portal do Azure, selecione o link Grupos de recursos.

  11. Na folha Grupos de recursos, selecione o grupo de recursos ConfidentialStack.

  12. Na folha ConfidentialStack, selecione o aplicativo de funções securefunc[yourname].

  13. Na folha Aplicativo de funções, selecione a opção Visão Geral.

  14. Na guia Funções da página de visão geral, selecione a função FileParser existente.

  15. Na folha Função, selecione a opção Codificar + Testar da seção Desenvolvedor.

  16. No editor de funções, selecione Testar/Executar.

  17. No painel exibido automaticamente, na listaMétodo HTTP, selecione GET.

  18. Selecione Executar para testar a função.

  19. Examine os resultados do teste executado. A saída conterá o conteúdo do blob $/drop/records.json armazenado em sua conta de armazenamento do Azure.

Revisão

Neste exercício, você usou o código # C para acessar uma conta de armazenamento e, em seguida, baixou o conteúdo de um blob.