Defina as configurações do IDT para executar o pacote de qualificação AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Defina as configurações do IDT para executar o pacote de qualificação AWS IoT Greengrass

Antes de executar os testes, você terá de definir as configurações para as credenciais da AWS e os dispositivos em seu computador host.

Configurar as credenciais da AWS

Você deve configurar suas credenciais de usuário do IAM no arquivo <device-tester-extract-location> /configs/config.json. Use as credenciais para do IDT para o usuário do AWS IoT Greengrass criado em Crie e configure um Conta da AWS. Você pode especificar suas credenciais de uma das seguintes formas:

  • Arquivo de credenciais

  • Variáveis de ambiente

O IDT usa o mesmo arquivo de credenciais que a AWS CLI. Para obter mais informações, consulte Arquivos de configuração e credenciais.

O local do arquivo de credenciais varia de acordo com o sistema operacional que você está usando:

  • macOS, Linux: ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

Adicione suas credenciais da AWS ao arquivo credentials no seguinte formato:

[default] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>

Para configurar o IDT para AWS IoT Greengrass para que use credenciais da AWS do arquivo credentials, edite o arquivo config.json da seguinte forma:

{ "awsRegion": "us-west-2", "auth": { "method": "file", "credentials": { "profile": "default" } } }
nota

Se você não usar o perfil default da AWS, mude o nome de perfil no arquivo config.json. Para obter mais informações, consulte Perfis nomeados.

As variáveis de ambiente são variáveis mantidas pelo sistema operacional e usadas pelos comandos do sistema. Elas não serão salvas se você fechar a sessão SSH. O IDT para AWS IoT Greengrass pode usar as variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY para armazenar suas credenciais da AWS.

Para definir essas variáveis no Linux, macOS ou Unix, use export:

export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Para definir essas variáveis no Windows, use set:

set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Para configurar o IDT para usar as variáveis de ambiente, edite a seção auth no seu arquivo config.json. Exemplo:

{ "awsRegion": "us-west-2", "auth": { "method": "environment" } }

Configurar device.json

Além de credenciais da AWS, o IDT para AWS IoT Greengrass precisa de informações sobre os dispositivos em que os testes são executados (por exemplo, endereço IP, informações de login, sistema operacional e arquitetura de CPU).

Você deve fornecer essas informações usando o modelo device.json localizado em <device_tester_extract_location>/configs/device.json:

Physical device
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "container", "value": "yes | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "yes | no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "container | process | both" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for HSI *************** "hsm": { "p11Provider": "/path/to/pkcs11ProviderLibrary", "slotLabel": "<slot_label>", "slotUserPin": "<slot_pin>", "privateKeyLabel": "<key_label>", "openSSLEngine": "/path/to/openssl/engine" }, ******************************************************************************************** *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]
nota

Especifique privKeyPath somente se method estiver definido como pki.

Especifique password somente se method estiver definido como password.

Docker container
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "os", "value": "linux | ubuntu | openwrt" }, { "name": "arch", "value": "x86_64" }, { "name": "container", "value": "no" }, { "name": "docker", "value": "no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "no" }, { "name": "ml", "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no" }, *********** Remove the section below if the device is not qualifying for ML **************, { "name": "mlLambdaContainerizationMode", "value": "process" }, { "name": "processor", "value": "cpu | gpu" }, ****************************************************************************************** ], *********** Remove the section below if the device is not qualifying for ML **************** "machineLearning": { "dlrModelPath": "/path/to/compiled/dlr/model", "environmentVariables": [ { "key": "<environment-variable-name>", "value": "<Path:$PATH>" } ], "deviceResources": [ { "name": "<resource-name>", "path": "<resource-path>", "type": "device | volume" } ] }, ****************************************************************************************** "kernelConfigLocation": "", "greengrassLocation": "", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "docker", "containerId": "<container-name | container-id>", "containerUser": "<user>" } } ] } ]

Todos os campos que contêm valores são necessários, conforme descrito aqui:

id

Um ID alfanumérico definido pelo usuário que identifica uma coleção de dispositivos chamada de grupo de dispositivos. Os dispositivos que pertencem a um grupo devem ter hardware idêntico. Quando um conjunto de testes é executado, os dispositivos do grupo são usados para paralelizar a carga de trabalho. Vários dispositivos são usados para executar testes diferentes.

sku

Um valor alfanumérico que identifica exclusivamente o dispositivo em teste. A SKU é usada para rastrear as placas qualificadas.

nota

Se você deseja listar sua placa no AWS Partner Device Catalog, a SKU especificada aqui deve corresponder à SKU que você usa no processo de oferta.

features

Uma matriz que contém atributos compatíveis com o dispositivo. Todos os atributos são obrigatórios.

os e arch

Combinações de sistema operacional (SO) e arquitetura compatíveis:

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

nota

Se você usa o IDT para testar a AWS IoT Greengrass em execução em um contêiner do docker, só há suporte para a arquitetura x86_64 do docker.

container

Verifica se o dispositivo atende a todos os requisitos de software e hardware para executar as funções do Lambda no modo de contêiner em um núcleo do Greengrass.

O valor válido é yes ou no.

docker

Valida que o dispositivo atende a todas as dependências técnicas necessárias para usar o conector de implantação do aplicativo Docker do Greengrass a fim de executar contêineres.

O valor válido é yes ou no.

streamManagement

Valida que o dispositivo atende a todas as dependências técnicas necessárias para executar o gerenciador de fluxos do AWS IoT Greengrass.

O valor válido é yes ou no.

hsi

Verifica se a biblioteca compartilhada HSI fornecida pode interagir com o módulo de segurança de hardware (HSM) e implementa as APIs PKCS#11 necessárias corretamente. A biblioteca do HSM e compartilhada deve assinar uma CSR, executar operações TLS e fornecer os tamanhos de chaves e o algoritmo de chave pública corretos.

O valor válido é yes ou no.

ml

Valida que o dispositivo atende a todas as dependências técnicas necessárias para executar a inferência de ML localmente.

O valor válido pode ser qualquer combinação de mxnet, tensorflow, dlr e no (por exemplo, mxnet, mxnet,tensorflow, mxnet,tensorflow,dlr ou no).

mlLambdaContainerizationMode

Verifica se o dispositivo atende a todas as dependências técnicas necessárias para executar a inferência de ML em modo contêiner em um dispositivo do Greengrass.

O valor válido é container, process ou both.

processor

Verifica se o dispositivo atende a todos os requisitos de hardware do tipo de processador especificado.

O valor válido é cpu ou gpu.

nota

Se você não quiser usar o atributo container, docker, streamManager, hsi ou ml, você pode definir o correspondente value a no.

O Docker só oferece suporte à qualificação de atributos para streamManagement e ml.

machineLearning

Opcional. Informações de configuração para testes de qualificação de ML. Para obter mais informações, consulte Configurar device.json para qualificação de ML.

hsm

Opcional. Informações de configuração para testes com um AWS IoT Greengrass Hardware Security Module (HSM – Módulo de segurança de hardware). Caso contrário, a propriedade hsm deve ser omitida. Para obter mais informações, consulte Integração de segurança de hardware.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

hsm.p11Provider

O caminho absoluto para a biblioteca carregável libdl da implementação PKCS#11.

hsm.slotLabel

O rótulo de slot usado para identificar o módulo de hardware.

hsm.slotUserPin

O PIN de usuário usado para autenticar o núcleo AWS IoT Greengrass para o módulo.

hsm.privateKeyLabel

O rótulo usado para identificar a chave no módulo de hardware.

hsm.openSSLEngine

O caminho absoluto para o arquivo .so do mecanismo OpenSSL para habilitar o suporte ao PKCS#11 no OpenSSL. Usado pelo atendente de atualização OTA do AWS IoT Greengrass.

devices.id

Um identificador exclusivo, definido pelo usuário, para o dispositivo que está sendo testado.

connectivity.protocol

O protocolo de comunicação usado para se comunicar com esse dispositivo. No momento, os únicos valores compatíveis são ssh para dispositivos físicos e docker para contêineres do Docker.

connectivity.ip

O endereço IP do dispositivo que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.containerId

O ID do contêiner ou o nome do contêiner do Docker que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como docker.

connectivity.auth

Informações de autenticação da conexão.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.auth.method

O método de autenticação usado para acessar um dispositivo pelo protocolo de conectividade indicado.

Os valores compatíveis são:

  • pki

  • password

connectivity.auth.credentials

As credenciais usadas para autenticação.

connectivity.auth.credentials.password

A senha usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como password.

connectivity.auth.credentials.privKeyPath

O caminho completo para a chave privada usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como pki.

connectivity.auth.credentials.user

O nome de usuário para fazer login no dispositivo que está sendo testado.

connectivity.auth.credentials.privKeyPath

O caminho completo para a chave privada usada para fazer login no dispositivo que está sendo testado.

connectivity.port

Opcional. O número da porta a ser usada para as conexões SSH.

O valor padrão é 22.

Essa propriedade só se aplica se connectivity.protocol estiver definido como ssh.

greengrassLocation

O local do software do núcleo do AWS IoT Greengrass em seus dispositivos.

Para dispositivos físicos, esse valor é usado apenas quando você usa uma instalação existente do AWS IoT Greengrass. Use esse atributo para instruir o IDT a usar a versão do software do núcleo do AWS IoT Greengrass instalada nos dispositivos.

Ao executar testes em um contêiner do Docker pela imagem do Docker ou do arquivo do Docker fornecido pelo AWS IoT Greengrass, defina esse valor como /greengrass.

kernelConfigLocation

Opcional. O caminho para o arquivo de configuração do kernel. AWS IoT O Device Tester usa esse arquivo para verificar se os dispositivos têm atributos do kernel habilitados. Se não for especificado, o IDT usa os seguintes caminhos para procurar o arquivo de configuração do kernel: /proc/config.gz e /boot/config-<kernel-version>. AWS IoT O Device Tester usará o primeiro caminho que encontrar.

Configurar device.json para qualificação de ML

Esta seção descreve as propriedades opcionais no arquivo de configuração do dispositivo que se aplicam à qualificação de ML. Se você planeja executar testes para qualificação de ML, é necessário definir as propriedades que se aplicam ao caso de uso.

Você pode usar o modelo device-ml.json para definir as configurações do dispositivo. Este modelo contém as propriedades de ML opcionais. Você também pode usar device.json e adicionar as propriedades de qualificação de ML. Esses arquivos estão localizados em <device-tester-extract-location>/configs e incluem propriedades de qualificação de ML. Se usar device-ml.json, você deve renomear o arquivo como device.json antes de executar testes do IDT.

Para obter informações sobre propriedades de configuração de dispositivo que não se aplicam à qualificação de ML, consulte Configurar device.json.

 

ml na matriz features

As estruturas de ML compatíveis com a sua placa. Esta propriedade requer a versão 3.1.0 ou posterior do IDT.

  • Caso a sua placa seja compatível com uma estrutura somente, especifique a estrutura. Por exemplo:

    { "name": "ml", "value": "mxnet" }
  • Caso a sua placa seja compatível com várias estruturas, especifique as estruturas como uma lista separada por vírgulas. Por exemplo:

    { "name": "ml", "value": "mxnet,tensorflow" }
mlLambdaContainerizationMode na matriz features

O modo de conteinerização com o qual você deseja testar. Esta propriedade requer a versão 3.1.0 ou posterior do IDT.

  • Selecione process para executar o código de inferência de ML com uma função do Lambda sem contêineres. Esta opção requer a versão 1.10.x ou posterior do AWS IoT Greengrass.

  • Selecione container para executar o código de inferência de ML com uma função do Lambda em contêineres.

  • Selecione both para executar o código de inferência de ML com ambos os modos. Esta opção requer a versão 1.10.x ou posterior do AWS IoT Greengrass.

processor na matriz features

Indica o acelerador de hardware compatível com a placa. Esta propriedade requer a versão 3.1.0 ou posterior do IDT.

  • Selecione cpu se sua placa usa uma CPU como processador.

  • Selecione gpu se a sua placa usa uma GPU como processador.

machineLearning

Opcional. Informações de configuração para testes de qualificação de ML. Esta propriedade requer a versão 3.1.0 ou posterior do IDT.

dlrModelPath

É necessário usar a estrutura do dlr. O caminho absoluto para o diretório de modelo compilado do DLR, que deve ser chamado de resnet18. Para obter mais informações, consulte Compilar o modelo de DLR.

nota

Veja a seguir um exemplo de caminho no macOS: /Users/<user>/Downloads/resnet18.

environmentVariables

Uma matriz de pares de chave/valor que pode passar dinamicamente configurações para testes de inferência de ML. Opcional para dispositivos de CPU. Você pode usar esta seção para adicionar variáveis de ambiente específicas da estrutura exigidas pelo tipo de dispositivo. Para obter informações sobre esses requisitos, consulte o site oficial da estrutura ou do dispositivo. Por exemplo, para executar testes de inferência do MXNet em alguns dispositivos, as seguintes variáveis de ambiente podem ser necessárias.

"environmentVariables": [ ... { "key": "PYTHONPATH", "value": "$MXNET_HOME/python:$PYTHONPATH" }, { "key": "MXNET_HOME", "value": "$HOME/mxnet/" }, ... ]
nota

O campo value pode variar com base na instalação do MXNet.

Se você estiver testando funções do Lambda executadas com conteinerização em dispositivos de GPU, adicione variáveis de ambiente para a biblioteca de GPU. Isso possibilita a realização de cálculos pela GPU. Para usar bibliotecas de GPU diferentes, consulte a documentação oficial da biblioteca ou do dispositivo.

nota

Configure as chaves a seguir se o atributo mlLambdaContainerizationMode estiver definido como container ou both.

"environmentVariables": [ { "key": "PATH", "value": "<path/to/software/bin>:$PATH" }, { "key": "LD_LIBRARY_PATH", "value": "<path/to/ld/lib>" }, ... ]
deviceResources

Obrigatório para dispositivos de GPU. Contém recursos locais que podem ser acessados por funções do Lambda. Use esta seção para adicionar recursos de dispositivo e de volume locais.

  • Para recursos de dispositivo, especifique "type": "device". Para dispositivos GPU, os recursos do dispositivo devem ser arquivos de dispositivo relacionados à GPU em /dev.

    nota

    O diretório /dev/shm é uma exceção. Ele pode ser configurado apenas como um recursos de volume.

  • Para recursos de volume, especifique "type": "volume".