Implantar o armazenamento de Blobs do Azure no módulo IoT Edge para seu dispositivo

Aplica-se a:marca de seleção do IoT Edge 1.4 IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

Existem várias maneiras de implantar módulos em um dispositivo do IoT Edge, sendo que todas elas funcionam para o Armazenamento de Blobs do Azure nos módulos do IoT Edge. Os dois métodos mais simples são utilizar o portal do Azure ou os modelos do Visual Studio Code.

Pré-requisitos

Implantar por meio do portal do Azure

O portal do Azure guia você para a criação de um manifesto de implantação e impulsiona a implantação em um dispositivo do IoT Edge.

Selecionar o dispositivo

  1. Entre no Portal do Azure e navegue até o Hub IoT.
  2. Selecione Dispositivos, no menu Gerenciamento de dispositivos.
  3. Selecione o dispositivo IoT Edge de destino na lista.
  4. Selecione Definir Módulos.

Configurar um manifesto de implantação

Um manifesto de implantação é um documento JSON que descreve quais módulos implantar, como os dados fluem entre os módulos e as propriedades desejadas dos módulos gêmeos. O portal do Azure tem um assistente que ajuda você na criação de um manifesto de implantação. Ele tem três etapas organizadas em guias: Módulos, Rotas e Examinar + Criar.

Adicionar módulos

  1. Na seção Módulos IoT Edge da página, selecione o menu suspenso Adicionar e selecione Módulo IoT Edge para exibir a página Adicionar Módulo IoT Edge.

  2. Na guia Configurações, forneça um nome para o módulo e especifique o URI da imagem do contêiner:

    Exemplos:

    • Nome do Módulo do IoT Edge: azureblobstorageoniotedge
    • URI da imagem: mcr.microsoft.com/azure-blob-storage:latest

    Captura de tela que mostra a guia Configurações do Módulo da página Adicionar Módulo do IoT Edge. .

    Não selecione Adicionar antes de especificar os valores das guias Configurações do Módulo, Opções de Criação de Contêiner e Configurações de Módulo Gêmeo conforme descrito neste procedimento.

    Importante

    O Azure IoT Edge diferencia maiúsculas de minúsculas quando você faz chamadas aos módulos e o SDK de Armazenamento também usa minúsculas por padrão. Embora o nome do módulo no Azure Marketplace seja AzureBlobStorageonIoTEdge, alterar o nome para minúsculas ajuda a garantir que suas conexões com o Armazenamento de Blobs do Azure no módulo IoT Edge não sejam interrompidas.

  3. Abra a guia Opções de Criação de Contêiner.

  4. Copie e cole o JSON a seguir na caixa para fornecer informações da conta de armazenamento e uma montagem para o armazenamento no seu dispositivo.

    {
      "Env":[
        "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>",
        "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>"
      ],
      "HostConfig":{
        "Binds":[
            "<mount>"
        ],
        "PortBindings":{
          "11002/tcp":[{"HostPort":"11002"}]
        }
      }
    }
    

    Captura de tela que mostra a guia Opções de Criação de Contêiner da página Adicionar Módulo do IoT Edge.

  5. Atualize o JSON que você copiou nas Opções de Criação de Contêiner com as seguintes informações:

    • Substitua <local storage account name> por um nome de que você possa se lembrar. Os nomes da conta devem ter de três a 24 caracteres, com letras minúsculas e números. Não são permitidos espaços.

    • Substitua <local storage account key> por uma chave base64 de 64 bytes. É possível gerar uma chave com ferramentas como GeneratePlus. Você usa essas credenciais para acessar o armazenamento de blobs de outros módulos.

    • Substitua <mount> de acordo com o sistema operacional do contêiner. Forneça o nome de um volume ou o caminho absoluto para um diretório existente no seu dispositivo IoT Edge onde o módulo blob armazena os seus dados. A montagem de armazenamento mapeia um local em seu dispositivo que você fornece para um local definido no módulo.

    Para contêineres do Linux, o formato é < o seu caminho de armazenamento ou volume > :/blobroot. Por exemplo:

    Importante

    • Não altere a segunda metade do valor da montagem de armazenamento, que aponta para um local específico no Armazenamento de Blobs no Módulo do IoT Edge. A montagem de armazenamento deve sempre terminar com :/blobroot para contêineres do Linux.

    • O IoT Edge não remove volumes anexados a contêineres de módulo. Esse comportamento é intencional, pois permite persistir os dados em instâncias de contêiner, como cenários de atualização. No entanto, se esses volumes forem deixados sem uso, isso poderá levar ao esgotamento do espaço em disco e a erros subsequentes do sistema. Se você usa volumes de Docker no seu cenário, procure usar ferramentas para Docker, como docker volume prune e docker volume rm para remover os volumes não utilizados, especialmente dos cenários de produção.

  6. Na guia Configurações do Módulo Gêmeo, copie o JSON a seguir e cole-o na caixa.

    {
      "deviceAutoDeleteProperties": {
        "deleteOn": <true, false>,
        "deleteAfterMinutes": <timeToLiveInMinutes>,
        "retainWhileUploading": <true,false>
      },
      "deviceToCloudUploadProperties": {
        "uploadOn": <true, false>,
        "uploadOrder": "<NewestFirst, OldestFirst>",
        "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>; EndpointSuffix=<your end point suffix>",
        "storageContainersForUpload": {
          "<source container name1>": {
            "target": "<your-target-container-name>"
          }
        },
        "deleteAfterUpload": <true,false>
      }
    }
    
  7. Configure cada propriedade com um valor apropriado, conforme indicado pelos espaços reservados. Se você estiver usando o simulador IoT Edge, defina os valores para as variáveis de ambiente relacionadas a essas propriedades, conforme descrito por deviceToCloudUploadProperties e deviceAutoDeleteProperties.

    Dica

    O nome do contêiner target tem restrições de nomenclatura, por exemplo, o uso de um prefixo $ não tem suporte. Para ver todas as restrições, confira Nomes de Contêiner.

    Observação

    Se o destino do contêiner não for nomeado ou nulo storageContainersForUpload, um nome padrão será atribuído ao destino. Se você quiser parar de carregar em um contêiner, ele deverá ser removido completamente de storageContainersForUpload. Para obter mais informações, consulte a deviceToCloudUploadProperties seção de Armazenar dados na borda com o Armazenamento de Blobs do Azure no IoT Edge.

    Captura de tela que mostra a guia Configurações do Módulo Gêmeo da página Adicionar Módulo do IoT Edge.

    Para obter informações sobre como configurar deviceToCloudUploadProperties e deviceAutoDeleteProperties depois que o módulo estiver implantado, confira Editar o Módulo Gêmeo. Para obter mais informações sobre as propriedades desejadas, confira Definir ou atualizar as propriedades desejadas.

  8. Selecione Adicionar.

  9. Selecione Avançar: rotas a fim de prosseguir para a seção de rotas.

Especificar Rotas

Mantenha as rotas padrão e selecione Avançar: examinar + criar a fim de prosseguir para a seção Examinar.

Rever implantação

A seção de revisão mostra o manifesto de implantação JSON que foi criado baseado nas suas seleções nas duas seções anteriores. Há também dois módulos declarados que você não adicionou: $edgeAgent e $edgeHub. Estes dois módulos enganam o runtime do IoT Edge e são padrões requeridos em toda implantação.

Examine as informações da sua implantação e selecione Criar.

Verificar a implantação

Após criar a implantação, retornar à página Dispositivos do hub IoT.

  1. Selecione o dispositivo do IoT Edge ao qual você direcionou a implantação para abrir os detalhes.
  2. Nos detalhes do dispositivo, verifique se o módulo de armazenamento de blob é listado como Especificado na implantação e Relatado por dispositivo.

Pode levar alguns instantes para que os módulos sejam iniciados no dispositivo e relatados de volta para o Hub IoT. Atualize a página para ver o status atualizado.

Implantar por meio do Visual Studio Code

O Azure IoT Edge disponibiliza modelos no Visual Studio Code para ajudar você a desenvolver soluções de borda. Execute as etapas a seguir para criar uma solução do IoT Edge com um módulo de armazenamento de blobs e configurar um manifesto de implantação.

Importante

A extensão do Azure IoT Edge Visual Studio Code está em modo de manutenção.

  1. Selecione Exibir>Paleta de Comandos.

  2. Na paleta de comandos, digite e execute o comando Azure IoT Edge: Nova solução do IoT Edge.

    Captura de tela mostrando como executar a Nova Solução do IoT Edge.

    Siga os prompts na paleta de comandos para criar sua solução.

    Campo Valor
    Selecionar pasta Escolha o local em seu computador de desenvolvimento para o Visual Studio Code criar os arquivos da solução.
    Fornecer um nome para a solução Insira um nome descritivo para a solução ou aceite o padrão EdgeSolution.
    Selecionar modelo do módulo Escolha Módulo Existente (Inserir a URL de imagem completa).
    Fornecer um nome de módulo Insira um nome de módulo com todas as letras em minúsculo, como azureblobstorageoniotedge.

    É importante usar um nome em minúsculas para o Armazenamento de Blobs do Azure no módulo do IoT Edge. O IoT Edge diferencia maiúsculas de minúsculas ao se referir a chamadas para módulos e o SDK de Armazenamento usa minúsculas por padrão.
    Fornecer a imagem do Docker para o módulo Forneça o URI da imagem: mcr.microsoft.com/azure-blob-storage:latest

    O Visual Studio Code usa as informações fornecidas, cria uma solução do IoT Edge e, em seguida, a carrega em uma nova janela. O modelo da solução cria um modelo do manifesto de implantação que inclui a imagem do módulo do armazenamento de blobs, mas é necessário configurar as opções de criação do módulo.

  3. Abra deployment.template.json no workspace da nova solução e encontre a seção módulos. Faça as seguintes alterações de configuração:

    1. Copie e cole o seguinte código no campo createOptions do módulo de armazenamento de blob:

      
      ```json
      "Env":[
       "LOCAL_STORAGE_ACCOUNT_NAME=<local storage account name>",
       "LOCAL_STORAGE_ACCOUNT_KEY=<local storage account key>"
      ],
      "HostConfig":{
        "Binds": ["<mount>"],
        "PortBindings":{
          "11002/tcp": [{"HostPort":"11002"}]
        }
      }
      

      Captura de tela mostrando como atualizar createOptions do módulo no Visual Studio Code.

  4. Substitua <local storage account name> por um nome de que você possa se lembrar. Os nomes da conta devem ter de três a 24 caracteres, com letras minúsculas e números. Não são permitidos espaços.

  5. Substitua <local storage account key> por uma chave base64 de 64 bytes. É possível gerar uma chave com ferramentas como GeneratePlus. Você usa essas credenciais para acessar o armazenamento de blobs de outros módulos.

  6. Substitua <mount> de acordo com o sistema operacional do contêiner. Forneça o nome de um volume ou o caminho absoluto para um diretório no dispositivo do IoT Edge no qual você quer que o módulo do blob armazene os dados. A montagem de armazenamento mapeia um local em seu dispositivo que você fornece para um local definido no módulo.

    Para contêineres do Linux, o formato é < o seu caminho de armazenamento ou volume > :/blobroot. Por exemplo:

    Importante

    • Não altere a segunda metade do valor da montagem de armazenamento, que aponta para um local específico no Armazenamento de Blobs no Módulo do IoT Edge. A montagem de armazenamento deve sempre terminar com :/blobroot para contêineres do Linux.

    • O IoT Edge não remove volumes anexados a contêineres de módulo. Esse comportamento é intencional, pois permite persistir os dados em instâncias de contêiner, como cenários de atualização. No entanto, se esses volumes forem deixados sem uso, isso poderá levar ao esgotamento do espaço em disco e a erros subsequentes do sistema. Se você usa volumes de Docker no seu cenário, procure usar ferramentas para Docker, como docker volume prune e docker volume rm para remover os volumes não utilizados, especialmente dos cenários de produção.

  7. Configure as propriedades deviceToCloudUploadProperties e deviceAutoDeleteProperties para o seu módulo adicionando o JSON a seguir ao arquivo deployment.template.json. Configure cada propriedade com um valor apropriado e salve o arquivo. Se você estiver usando o simulador IoT Edge, defina os valores para as variáveis de ambiente relacionadas a essas propriedades, que você pode encontrar na seção de explicação de deviceToCloudUploadProperties e deviceAutoDeleteProperties

    "<your azureblobstorageoniotedge module name>":{
      "properties.desired": {
        "deviceAutoDeleteProperties": {
          "deleteOn": <true, false>,
          "deleteAfterMinutes": <timeToLiveInMinutes>,
          "retainWhileUploading": <true, false>
        },
        "deviceToCloudUploadProperties": {
          "uploadOn": <true, false>,
          "uploadOrder": "<NewestFirst, OldestFirst>",
          "cloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>",
          "storageContainersForUpload": {
            "<source container name1>": {
              "target": "<target container name1>"
            }
          },
          "deleteAfterUpload": <true, false>
        }
      }
    }
    

    Captura de tela mostrando como definir as propriedades desejadas para azureblobstorageoniotedge no Visual Studio Code.

    Para obter informações sobre como configurar deviceToCloudUploadProperties e deviceAutoDeleteProperties depois que o módulo estiver implantado, confira Editar o Módulo Gêmeo. Para obter mais informações sobre as opções de criação de contêiner, as políticas de reinicialização e os status desejados, confira as propriedades desejadas do EdgeAgent.

  8. Salve o arquivo deployment.template.json.

  9. Clique com o botão direito do mouse em deployment.template.json e selecione Gerar manifesto de implantação do IoT Edge.

  10. O Visual Studio Code coleta as informações fornecidas no deployment.template.json e as usa para criar um arquivo de manifesto de implantação. O manifesto de implantação é criado em uma nova pasta config no workspace da solução. Ao obter esse arquivo, você pode seguir as etapas em Implantar módulos do Azure IoT Edge a partir do Visual Studio Code ou Implantar módulos do Azure IoT Edge com a CLI 2.0 do Azure.

Implantar várias instâncias de módulo

Se quiser implantar várias instâncias do Armazenamento de Blobs do Azure no módulo do IoT Edge, você precisará fornecer um caminho de armazenamento diferente e alterar o valor HostPort ao qual o módulo é associado. Os módulos do armazenamento de blobs sempre expõem a porta 11002 no contêiner, mas é possível declarar a qual porta ele está associado no host.

Edite as Opções de Criação de Contêiner (no portal do Azure) ou o campo createOptions (no arquivo deployment.template.json no Visual Studio Code) para alterar o valor HostPort:

"PortBindings":{
  "11002/tcp": [{"HostPort":"<port number>"}]
}

Ao conectar-se a módulos de armazenamento de blobs adicionais, altere o ponto de extremidade para indicar a porta do host atualizada.

Configurar suporte para proxy

Se sua organização estiver usando um servidor proxy, será necessário configurar o suporte de proxy para os módulos de tempo de execução edgeAgent e edgeHub. Esse processo envolve duas tarefas:

  • Configure os daemons de runtime e o agente do IoT Edge no dispositivo.
  • Definir a variável de ambiente HTTPS_PROXY para os módulos no arquivo JSON do manifesto de implantação.

Esse processo é descrito em Configurar um dispositivo do IoT Edge para se comunicar por meio de um servidor proxy.

Além disso, um módulo de armazenamento de blobs também requer a configuração HTTPS_PROXY no arquivo do manifesto de implantação. Você pode editar o arquivo de manifesto de implantação diretamente ou usar o portal do Azure.

  1. Navegue até o Hub IoT no portal do Azure e selecione Dispositivos no menu Gerenciamento de dispositivos

  2. Selecione o dispositivo com o módulo a ser configurado.

  3. Selecione Definir Módulos.

  4. Na seção Módulos do IoT Edge da página, selecione o módulo armazenamento de blobs.

  5. Na página Atualizar Módulo do IoT Edge, selecione a guia Variáveis de Ambiente.

  6. Adicione HTTPS_PROXY como Nome e a URL do proxy com Valor.

    Captura de tela que mostra o painel Atualizar Módulo do IoT Edge, no qual você pode inserir os valores especificados.

  7. Selecione Atualizar, então Revisar + Criar.

  8. Veja que o proxy é adicionado ao módulo no manifesto de implantação e selecione Criar.

  9. Verifique a configuração selecionando o módulo na página de detalhes do dispositivo e, na parte inferior da página Detalhes dos Módulos do IoT Edge, selecione a guia Variáveis de Ambiente.

    Captura de tela mostrando a guia de Variáveis de Ambiente.

Próximas etapas

Saiba mais sobre o Armazenamento de Blobs do Azure no IoT Edge.

Para obter mais informações sobre como os manifestos de implantação funcionam e como criá-los, consulte Entender como os módulos do IoT Edge podem ser utilizados, configurados e reutilizados.