Implementar o Armazenamento de Blobs do Azure no módulo do IoT Edge no dispositivo
Aplica-se a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.
Há várias maneiras de implantar módulos em um dispositivo IoT Edge e todas elas funcionam para o Armazenamento de Blobs do Azure em módulos do IoT Edge. Os dois métodos mais simples são usar o portal do Azure ou modelos de código do Visual Studio.
Pré-requisitos
Um hub IoT em sua assinatura do Azure.
Um dispositivo IoT Edge.
Se você não tiver um dispositivo IoT Edge configurado, poderá criar um em uma máquina virtual do Azure. Siga as etapas em um dos artigos de início rápido para Criar um dispositivo Linux virtual ou Criar um dispositivo virtual do Windows.
Extensão do Azure IoT Edge . A extensão de código das ferramentas do Azure IoT Edge para Visual Studio está no modo de manutenção.
Extensão do Hub IoT do Azure se estiver implantando a partir do Visual Studio Code.
Implantar a partir do portal do Azure
O portal do Azure orienta você na criação de um manifesto de implantação e no envio por push da implantação para um dispositivo IoT Edge.
Selecione o seu dispositivo
- Entre no portal do Azure e navegue até seu hub IoT.
- Selecione Dispositivos no menu Gerenciamento de dispositivos.
- Selecione o dispositivo IoT Edge de destino na lista.
- 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 gêmeos de módulo. O portal do Azure tem um assistente que o orienta na criação de um manifesto de implantação. Ele tem três etapas organizadas em guias: Módulos, Rotas e Revisão + Criar.
Adicionar módulos
Na seção Módulos do IoT Edge da página, selecione a lista suspensa Adicionar e selecione Módulo IoT Edge para exibir a página Adicionar Módulo IoT Edge.
Na guia Configurações, forneça um nome para o módulo e especifique o URI da imagem do contêiner:
- Nome do módulo IoT Edge:
azureblobstorageoniotedge
- URI da imagem:
mcr.microsoft.com/azure-blob-storage:latest
Não selecione Adicionar até especificar valores nas guias Configurações do módulo, Opções de criação de contêiner e Configurações do gêmeo do módulo, conforme descrito neste procedimento.
Importante
O Azure IoT Edge diferencia maiúsculas de minúsculas quando você faz chamadas para módulos, e o SDK de Armazenamento também usa como padrão minúsculas. Alterar o nome para minúsculas ajuda a garantir que suas conexões com o módulo Armazenamento de Blobs do Azure no IoT Edge não sejam interrompidas.
- Nome do módulo IoT Edge:
Abra a guia Opções de criação de contêiner.
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"}] } } }
Atualize o JSON copiado para Opções de Criação de Contêiner com as seguintes informações:
Substitua
<local storage account name>
por um nome que você possa lembrar. Os nomes das contas devem ter de 3 a 24 caracteres, com letras minúsculas e números. Sem espaços.Substitua
<local storage account key>
por uma chave base64 de 64 bytes. Você pode gerar uma chave com ferramentas como GeneratePlus. Você usa essas credenciais para acessar o armazenamento de blob 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 em seu dispositivo IoT Edge onde o módulo de blob armazena seus dados. A montagem de armazenamento mapeia um local no dispositivo que você fornece para um local definido no módulo.
Para contêineres Linux, o formato é <o caminho de armazenamento ou volume>:/blobroot. Por exemplo:
- Use a montagem de volume:
my-volume:/blobroot
- Use a montagem de ligação:
/srv/containerdata:/blobroot
. Certifique-se de seguir as etapas para conceder acesso ao diretório ao usuário do contêiner
Importante
Não altere a segunda metade do valor de montagem de armazenamento, que aponta para um local específico no módulo Armazenamento de Blob no IoT Edge. A montagem de armazenamento deve sempre terminar com :/blobroot para contêineres Linux.
O IoT Edge não remove os volumes anexados a contentores de módulos. Este comportamento é propositado, uma vez que permite dados persistentes em instâncias de contentor, tais como cenários de atualização. No entanto, se estes volumes não forem utilizados, poderá originar o esgotamento do espaço em disco e erros subsequentes do sistema. Se você usa volumes do docker em seu cenário, recomendamos que você use ferramentas do docker, como o docker volume prune e o docker volume rm para remover os volumes não utilizados, especialmente para cenários de produção.
Na guia Configurações de Gêmeo de Módulo, 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> } }
Configure cada propriedade com um valor apropriado, conforme indicado pelos espaços reservados. Se você estiver usando o simulador do IoT Edge, defina os valores para as variáveis de ambiente relacionadas para essas propriedades, conforme descrito por deviceToCloudUploadProperties e deviceAutoDeleteProperties.
Gorjeta
O nome do contêiner
target
tem restrições de nomenclatura, por exemplo, o uso de um$
prefixo não é suportado. Para ver todas as restrições, consulte Nomes de contêineres.Nota
Se o destino do contêiner não tiver nome ou for nulo no
storageContainersForUpload
, um nome padrão será atribuído ao destino. Se você quiser parar de carregar para um contêiner, ele deve ser removido completamente dostorageContainersForUpload
. Para obter mais informações, consulte adeviceToCloudUploadProperties
seção Armazenar dados na borda com o Armazenamento de Blob do Azure no IoT Edge.Para obter informações sobre como configurar deviceToCloudUploadProperties e deviceAutoDeleteProperties após a implantação do módulo, consulte Edit the Module Twin. Para obter mais informações sobre as propriedades desejadas, consulte Definir ou atualizar as propriedades desejadas.
Selecione Adicionar.
Selecione Next: Routes para continuar para a seção de rotas.
Especificar rotas
Mantenha as rotas padrão e selecione Avançar: Revisar + criar para continuar para a seção de revisão.
Revisar a implantação
A seção de revisão mostra o manifesto de implantação JSON que foi criado com base em suas seleções nas duas seções anteriores. Há também dois módulos declarados que você não adicionou: $edgeAgent e $edgeHub. Esses dois módulos compõem o tempo de execução do IoT Edge e são padrões necessários em cada implantação.
Revise suas informações de implantação e selecione Criar.
Verificar sua implantação
Depois de criar a implantação, você retorna à página Dispositivos do seu hub IoT.
- Selecione o dispositivo IoT Edge que você destinou com a implantação para abrir seus detalhes.
- Nos detalhes do dispositivo, verifique se o módulo de armazenamento de blob está listado como Especificado na implantação e Relatado por dispositivo.
Pode levar alguns momentos para que o módulo seja iniciado no dispositivo e, em seguida, reportado de volta ao Hub IoT. Atualize a página para ver um status atualizado.
Implantar a partir do Visual Studio Code
O Azure IoT Edge fornece modelos no Visual Studio Code para ajudá-lo a desenvolver soluções de borda. Use as etapas a seguir para criar uma nova solução IoT Edge com um módulo de armazenamento de blob e para configurar o manifesto de implantação.
Importante
A extensão Azure IoT Edge Visual Studio Code está no modo de manutenção.
Selecione Exibir>paleta de comandos.
Na paleta de comandos, introduza e execute o comando Azure IoT Edge: Nova solução do IoT Edge.
Siga as instruções na paleta de comandos para criar a sua solução.
Campo Value Selecionar pasta Escolha o local em sua máquina de desenvolvimento para Visual Studio Code para criar os arquivos de solução. Indicar um nome para a solução Insira um nome descritivo para sua solução ou aceite o EdgeSolution padrão. Selecionar modelo de módulo Escolha Módulo existente (Insira o URL completo da imagem). Indicar um nome para o módulo Insira um nome em minúsculas para seu módulo, como azureblobstorageoniotedge.
É importante usar um nome minúsculo para o módulo Armazenamento de Blobs do Azure no IoT Edge. O IoT Edge diferencia maiúsculas de minúsculas quando se refere a módulos, e o SDK de Armazenamento assume como padrão minúsculas.Fornecer imagem do Docker para o módulo Forneça o URI da imagem: mcr.microsoft.com/azure-blob-storage:latest O Visual Studio Code pega as informações fornecidas, cria uma solução IoT Edge e a carrega em uma nova janela. O modelo de solução cria um modelo de manifesto de implantação que inclui a imagem do módulo de armazenamento de blob, mas você precisa configurar as opções de criação do módulo.
Abra deployment.template.json em seu novo espaço de trabalho de solução e localize a seção de módulos . Faça as seguintes alterações de configuração:
Copie e cole o seguinte código no
createOptions
campo 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"}] } }
Substitua
<local storage account name>
por um nome que você possa lembrar. Os nomes das contas devem ter de 3 a 24 caracteres, com letras minúsculas e números. Sem espaços.Substitua
<local storage account key>
por uma chave base64 de 64 bytes. Você pode gerar uma chave com ferramentas como GeneratePlus. Você usa essas credenciais para acessar o armazenamento de blob 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 em seu dispositivo IoT Edge onde você deseja que o módulo de blob armazene seus dados. A montagem de armazenamento mapeia um local no dispositivo que você fornece para um local definido no módulo.Para contêineres Linux, o formato é <o caminho de armazenamento ou volume>:/blobroot. Por exemplo:
- Use a montagem de volume:
my-volume:/blobroot
- Use a montagem de ligação:
/srv/containerdata:/blobroot
. Certifique-se de seguir as etapas para conceder acesso ao diretório ao usuário do contêiner
Importante
Não altere a segunda metade do valor de montagem de armazenamento, que aponta para um local específico no módulo Armazenamento de Blob no IoT Edge. A montagem de armazenamento deve sempre terminar com :/blobroot para contêineres Linux.
O IoT Edge não remove os volumes anexados a contentores de módulos. Este comportamento é propositado, uma vez que permite dados persistentes em instâncias de contentor, tais como cenários de atualização. No entanto, se estes volumes não forem utilizados, poderá originar o esgotamento do espaço em disco e erros subsequentes do sistema. Se você usa volumes do docker em seu cenário, recomendamos que você use ferramentas do docker, como o docker volume prune e o docker volume rm para remover os volumes não utilizados, especialmente para cenários de produção.
- Use a montagem de volume:
Configure deviceToCloudUploadProperties e deviceAutoDeleteProperties para seu módulo adicionando o seguinte JSON ao arquivo deployment.template.json . Configure cada propriedade com um valor apropriado e salve o arquivo. Se você estiver usando o simulador do IoT Edge, defina os valores para as variáveis de ambiente relacionadas para 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> } } }
Para obter informações sobre como configurar deviceToCloudUploadProperties e deviceAutoDeleteProperties após a implantação do módulo, consulte Edit the Module Twin. Para obter mais informações sobre opções de criação de contêiner, política de reinicialização e status desejado, consulte Propriedades desejadas do EdgeAgent.
Guarde o ficheiro deployment.template.json.
Clique com o botão direito do mouse em deployment.template.json e selecione Gerar manifesto de implantação do IoT Edge.
O Visual Studio Code pega as informações fornecidas no deployment.template.json e as usa para criar um novo arquivo de manifesto de implantação. O manifesto de implantação é criado em uma nova pasta de configuração no espaço de trabalho da solução. Depois de ter esse arquivo, você pode seguir as etapas em 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 módulo Armazenamento de Blob do Azure no IoT Edge, você precisará fornecer um caminho de armazenamento diferente e alterar o HostPort
valor ao qual o módulo se liga. Os módulos de armazenamento de blob sempre expõem a porta 11002 no contêiner, mas você pode declarar a qual porta ela está vinculada no host.
Edite 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 HostPort
valor:
"PortBindings":{
"11002/tcp": [{"HostPort":"<port number>"}]
}
Quando você se conectar a módulos de armazenamento de blob adicionais, altere o ponto de extremidade para apontar para a porta de host atualizada.
Configurar o suporte de proxy
Se sua organização estiver usando um servidor proxy, você precisará configurar o suporte a proxy para os módulos de tempo de execução edgeAgent e edgeHub. Este processo envolve duas tarefas:
- Configure os daemons de tempo de execução e o agente do IoT Edge no dispositivo.
- Defina a variável de ambiente HTTPS_PROXY para módulos no arquivo JSON de manifesto de implantação.
Esse processo é descrito em Configurar um dispositivo IoT Edge para se comunicar por meio de um servidor proxy.
Além disso, um módulo de armazenamento de blob também requer a configuração HTTPS_PROXY no arquivo de implantação de manifesto. Você pode editar diretamente o arquivo de manifesto de implantação ou usar o portal do Azure.
Navegue até o Hub IoT no portal do Azure e selecione Dispositivos no menu Gerenciamento de dispositivos
Selecione o dispositivo com o módulo a ser configurado.
Selecione Definir Módulos.
Na seção Módulos do IoT Edge da página, selecione o módulo de armazenamento de blob.
Na página Atualizar Módulo IoT Edge, selecione a guia Variáveis de Ambiente.
Adicione
HTTPS_PROXY
o Nome e o URL do proxy para o Valor.Selecione Atualizar e, em seguida , Rever + Criar.
Veja se o proxy é adicionado ao módulo no manifesto de implantação e selecione Criar.
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.
Próximos passos
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 Compreender como os módulos do IoT Edge podem ser usados, configurados e reutilizados.