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

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 credenciais da AWS no config.json

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

  • Em um arquivo de credenciais

  • Como 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 o AWS IoT Greengrass V2 usar as credenciais da AWS do arquivo credentials, edite o arquivo config.json da seguinte forma:

{ "awsRegion": "region", "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 V2 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": "region", "auth": { "method": "environment" } }

Configurar device.json

nota

O IDT v4.9.3 oferece suporte ao teste dos atributos ml, docker e streamManagement. O IDT v4.9.4 e versões mais recentes oferecem suporte ao teste do docker. Se você não quiser testar esses atributos, defina o valor correspondente como no.

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

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

IDT v4.9.3
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "ml", "value": "dlr | tensorflowlite | dlr,tensorflowlite | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "publicKeyPath": "<public-key-path>", "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.

Todas as propriedades que contêm valores são obrigatórias, 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 workload. 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 seu dispositivo no AWS Partner Device Catalog, a SKU especificada aqui deve corresponder à SKU usada no processo de listagem.

features

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

arch

As arquiteturas de sistema operacional compatíveis que a execução do teste valida. Os valores válidos são:

  • x86_64

  • armv6l

  • armv7l

  • aarch64

ml

Valida que o dispositivo atende a todas as dependências técnicas necessárias para usar os componentes de machine learning (ML) fornecidos pela AWS.

A habilitação desse recurso também valida que o dispositivo pode realizar uma inferência de ML usando as estruturas de ML do Deep Learning Runtime e do TensorFlow Lite.

Os valores válidos são qualquer combinação de dlr e tensorflowlite ou no.

docker

Valida que o dispositivo atende a todas as dependências técnicas necessárias para usar o componente gerenciador de aplicações do Docker (aws.greengrass.DockerApplicationManager) fornecido pela AWS.

A habilitação desse recurso também valida que o dispositivo pode fazer download de uma imagem de contêiner do Docker do Amazon ECR.

Os valores válidos são qualquer combinação de yes ou no.

streamManagement

Valida que o dispositivo pode fazer download, instalar e executar o Gerenciador de fluxos do AWS IoT Greengrass.

Os valores válidos são qualquer combinação de yes ou no.

hsi

Valida que o dispositivo pode autenticar conexões com os serviços AWS IoT e AWS IoT Greengrass usando uma chave privada e um certificado armazenados em um módulo de segurança de hardware (HSM). Esse teste também verifica se o componente provedor PKCS#11 fornecido pela AWS pode estabelecer interface com o HSM usando uma biblioteca PKCS#11 de fornecedor. Para ter mais informações, consulte Integração de segurança de hardware.

Os valores válidos são hsm ou no.

nota

O teste do hsi está disponível somente no IDT v4.9.3 e versões mais recentes.

devices.id

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

devices.operatingSystem

O sistema operacional do dispositivo. Os valores compatíveis são Linux e Windows.

connectivity.protocol

O protocolo de comunicação usado para se comunicar com esse dispositivo. Para dispositivos físicos, o único valor com suporte no momento é ssh.

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.port

Opcional. O número da porta usada nas conexões SSH.

O valor padrão é 22.

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

connectivity.publicKeyPath

Opcional. O caminho completo para a chave pública usada para autenticar conexões com o dispositivo em teste.

Ao especificar o publicKeyPath, o IDT valida a chave pública do dispositivo ao estabelecer uma conexão SSH com o dispositivo em teste. Se este valor não for especificado, o IDT cria uma conexão SSH, mas não valida a chave pública do dispositivo.

É altamente recomendável especificar o caminho para a chave pública e use um método seguro para buscar essa chave pública. Para clientes SSH padrão baseados em linha de comando, a chave pública é fornecida no arquivo known_hosts. Se especificar um arquivo de chave pública separado, esse arquivo deverá usar o mesmo formato do arquivo known_hosts , ou seja, ip-address key-type public-key. Se houver várias entradas com o mesmo endereço IP, a entrada referente ao tipo de chave usado pelo IDT deverá estar antes das outras entradas no arquivo.

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.

IDT v4.9.4
[ { "id": "<pool-id>", "sku": "<sku>", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "docker", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": 22, "publicKeyPath": "<public-key-path>", "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.

Todas as propriedades que contêm valores são obrigatórias, 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 workload. 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 seu dispositivo no AWS Partner Device Catalog, a SKU especificada aqui deve corresponder à SKU usada no processo de listagem.

features

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

arch

As arquiteturas de sistema operacional compatíveis que a execução do teste valida. Os valores válidos são:

  • x86_64

  • armv6l

  • armv7l

  • aarch64

docker

Valida que o dispositivo atende a todas as dependências técnicas necessárias para usar o componente gerenciador de aplicações do Docker (aws.greengrass.DockerApplicationManager) fornecido pela AWS.

A habilitação desse recurso também valida que o dispositivo pode fazer download de uma imagem de contêiner do Docker do Amazon ECR.

Os valores válidos são qualquer combinação de yes ou no.

hsi

Valida que o dispositivo pode autenticar conexões com os serviços AWS IoT e AWS IoT Greengrass usando uma chave privada e um certificado armazenados em um módulo de segurança de hardware (HSM). Esse teste também verifica se o componente provedor PKCS#11 fornecido pela AWS pode estabelecer interface com o HSM usando uma biblioteca PKCS#11 de fornecedor. Para ter mais informações, consulte Integração de segurança de hardware.

Os valores válidos são hsm ou no.

nota

O teste do hsi está disponível somente no IDT v4.9.3 e versões mais recentes.

devices.id

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

devices.operatingSystem

O sistema operacional do dispositivo. Os valores compatíveis são Linux e Windows.

connectivity.protocol

O protocolo de comunicação usado para se comunicar com esse dispositivo. Para dispositivos físicos, o único valor com suporte no momento é ssh.

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.port

Opcional. O número da porta usada nas conexões SSH.

O valor padrão é 22.

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

connectivity.publicKeyPath

Opcional. O caminho completo para a chave pública usada para autenticar conexões com o dispositivo em teste.

Ao especificar o publicKeyPath, o IDT valida a chave pública do dispositivo ao estabelecer uma conexão SSH com o dispositivo em teste. Se este valor não for especificado, o IDT cria uma conexão SSH, mas não valida a chave pública do dispositivo.

É altamente recomendável especificar o caminho para a chave pública e use um método seguro para buscar essa chave pública. Para clientes SSH padrão baseados em linha de comando, a chave pública é fornecida no arquivo known_hosts. Se especificar um arquivo de chave pública separado, esse arquivo deverá usar o mesmo formato do arquivo known_hosts , ou seja, ip-address key-type public-key. Se houver várias entradas com o mesmo endereço IP, a entrada referente ao tipo de chave usado pelo IDT deverá estar antes das outras entradas no arquivo.

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.

Configurar o userdata.json

O IDT para AWS IoT Greengrass V2 também precisa de informações adicionais sobre a localização dos artefatos e do software de teste do AWS IoT Greengrass.

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

{ "TempResourcesDirOnDevice": "/path/to/temp/folder", "InstallationDirRootOnDevice": "/path/to/installation/folder", "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip", "PreInstalled": "yes/no", "GreengrassV2TokenExchangeRole": "custom-iam-role-name", "hsm": { "greengrassPkcsPluginJar": "/path/to/aws.greengrass.crypto.Pkcs11Provider-latest.jar", "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library", "slotId": "slot-id", "slotLabel": "slot-label", "slotUserPin": "slot-pin", "keyLabel": "key-label", "preloadedCertificateArn": "certificate-arn" "rootCA": "path/to/root-ca" } }

Todas as propriedades que contêm valores são obrigatórias, conforme descrito aqui:

TempResourcesDirOnDevice

O caminho completo para uma pasta temporária no dispositivo em teste na qual armazenar os artefatos de teste. Certifique-se de que as permissões sudo não sejam obrigatórias para gravar nesse diretório.

nota

O IDT exclui o conteúdo dessa pasta quando termina de executar um teste.

InstallationDirRootOnDevice

O caminho completo para uma pasta no dispositivo em que o AWS IoT Greengrass será instalado. Para o Greengrass pré-instalado, esse é o caminho para o diretório de instalação do Greengrass.

Você deve definir as permissões de arquivo necessárias para essa pasta. Execute o comando a seguir para cada pasta no caminho de instalação.

sudo chmod 755 folder-name
GreengrassNucleusZip

O caminho completo para o arquivo ZIP (greengrass-nucleus-latest.zip) do núcleo do Greengrass em seu computador host. Esse campo não é obrigatório para testes com o Greengrass pré-instalado.

nota

Para obter informações sobre as versões compatíveis do núcleo do Greengrass para o IDT para AWS IoT Greengrass, consulte Versão mais recente do IDT para o AWS IoT Greengrass V2. Para fazer download do software Greengrass mais recente, consulte Fazer download do software AWS IoT Greengrass.

PreInstalled

Esse recurso está disponível somente para o IDT v4.5.8 e versões mais recentes em dispositivos Linux.

(Opcional) Quando o valor é yes (sim), o IDT assume que o caminho mencionado em InstallationDirRootOnDevice é o diretório em que o Greengrass está instalado.

Para obter informações sobre como instalar o Greengrass em seu dispositivo, consulte Instale o software AWS IoT Greengrass principal com provisionamento automático de recursos. Se você estiver instalando com provisionamento manual, inclua a etapa “Adicionar o item do AWS IoT a um grupo de itens novo ou existente” ao criar um item do AWS IoT manualmente. O IDT assume que o item e o grupo de itens foram criados durante a configuração da instalação. Certifique-se de que esses valores sejam refletidos no arquivo effectiveConfig.yaml. O IDT verifica o arquivo effectiveConfig.yaml em <InstallationDirRootOnDevice>/config/effectiveConfig.yaml.

Para executar testes com o HSM, certifique-se de que o campo aws.greengrass.crypto.Pkcs11Provider esteja atualizado em effectiveConfig.yaml.

GreengrassV2TokenExchangeRole

(Opcional) O perfil do IAM personalizado que você deseja usar como perfil de troca de tokens que o dispositivo em teste adota para interagir com os recursos da AWS.

nota

O IDT usa esse perfil do IAM personalizado em vez de criar o perfil padrão de troca de tokens durante a execução do teste. Se você usar um perfil personalizado, poderá atualizar as permissões do IAM do usuário de teste para excluir a declaração iamResourcesUpdate que permite ao usuário criar e excluir perfis e políticas do IAM.

Para obter mais informações sobre como criar um perfil do IAM como perfil de troca de tokens, consulte Configurar um perfil personalizado de troca de tokens.

hsm

Esse recurso está disponível para o IDT v4.5.1 e posterior.

(Opcional) As informações de configuração para testes com um módulo de segurança de hardware (HSM) do AWS IoT Greengrass. Caso contrário, a propriedade hsm deve ser omitida. Para ter mais informações, consulte Integração de segurança de hardware.

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

Atenção

A configuração do HSM poderá ser considerada dados sigilosos se o módulo de segurança de hardware for compartilhado entre o IDT e outro sistema. Nessa situação, evite proteger esses valores de configuração em texto simples, armazenando-os em um parâmetro SecureString do AWS Parameter Store e configurando o IDT para obtê-los durante a execução do teste. Para ter mais informações, consulte Obter a configuração do Parameter Store da AWS.

hsm.greengrassPkcsPluginJar

O caminho completo para o componente provedor PKCS#11 do qual você faz download para a máquina host do IDT. O AWS IoT Greengrass fornece esse componente como arquivo JAR, que pode ser baixado para especificar como plug-in de provisionamento durante a instalação. Você pode fazer download da versão mais recente do arquivo JAR do componente pelo seguinte URL: https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar.

hsm.pkcs11ProviderLibrary

O caminho completo para a biblioteca PKCS#11 do fornecedor do módulo de segurança de hardware (HSM) para interagir com o HSM.

hsm.slotId

O ID do slot usado para identificar o slot do HSM no qual você carrega a chave e o certificado.

hsm.slotLabel

O rótulo do slot usado para identificar o slot do HSM no qual você carrega a chave e o certificado.

hsm.slotUserPin

O PIN do usuário que o IDT usa para autenticar o software de núcleo do AWS IoT Greengrass no HSM.

nota

Como prática recomendada de segurança, não use o mesmo PIN de usuário em dispositivos de produção.

hsm.keyLabel

O rótulo usado para identificar a chave no módulo de hardware. Tanto a chave quanto o certificado devem usar o mesmo rótulo de chave.

hsm.preloadedCertificateArn

O nome do recurso da Amazon (ARN) do certificado do dispositivo carregado na nuvem do AWS IoT.

Você já deve ter gerado esse certificado usando a chave no HSM, importado-o para o HSM e carregado-o na nuvem do AWS IoT. Para obter informações sobre como gerar e importar o certificado, consulte a documentação do HSM.

Você deve fazer upload do certificado para a mesma conta e região especificadas em config.json. Para obter informações sobre como fazer upload do seu certificado para o AWS IoT, consulte Registrar um certificado de cliente manualmente no Guia do desenvolvedor do AWS IoT.

hsm.rootCAPath

(Opcional) O caminho completo na máquina host do IDT para a autoridade de certificação (CA) raiz que assinou seu certificado. Ele será necessário se o certificado criado no HSM não for assinado pela CA raiz da Amazon.

Obter a configuração do Parameter Store da AWS

O AWS IoT Device Tester (IDT) inclui um recurso opcional para obter os valores de configuração do AWS Systems Manager Parameter Store. AWS O Parameter Store permite o armazenamento seguro e criptografado das configurações. Quando configurado, o IDT pode obter os parâmetros do AWS Parameter Store em vez de armazená-los em texto simples no arquivo userdata.json. Esse recurso é útil para dados sigilosos que devem ser armazenados com criptografia, como senhas, PINs e outros segredos.

  1. Para usar esse recurso, você deve atualizar as permissões definidas na criação do usuário do IDT para permitir a ação GetParameter nos parâmetros que foram configurados para o IDT utilizar. Veja abaixo um exemplo de declaração de permissão que pode ser adicionada ao usuário do IDT. Para obter mais informações, consulte o Guia do usuário do AWS Systems Manager.

    { "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }

    A permissão acima está configurada para obter todos os parâmetros que tenham um nome que começa com IDT, usando o caractere curinga *. Você deve personalizá-la de acordo com as suas necessidades para que o IDT tenha acesso para obter todos os parâmetros configurados com base na nomenclatura dos parâmetros que está sendo usada.

  2. Você precisa armazenar os valores de configuração no AWS Paramater Store. Esse procedimento pode ser feito no console da AWS ou na CLI da AWS. AWS O Parameter Store permite que você escolha entre armazenamento criptografado e não criptografado. Para armazenar valores confidenciais, como segredos, senhas e PINs, você deve usar a opção criptografada, que é um tipo de parâmetro SecureString. Para fazer upload de um parâmetro usando a CLI da AWS, você pode usar o seguinte comando:

    aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString

    Você pode verificar se um parâmetro está armazenado usando o comando a seguir. (Opcional) Use o sinalizador --with-decryption para obter um parâmetro SecureString descriptografado.

    aws ssm get-parameter --name IDT-example-name

    O uso da CLI da AWS faz upload do parâmetro na região da AWS do usuário atual da CLI, e o IDT obtém os parâmetros da região configurada em config.json. Para verificar sua região por meio da CLI da AWS, use o seguinte:

    aws configure get region
  3. Depois que você tiver um valor de configuração na Nuvem AWS, poderá atualizar qualquer valor na configuração do IDT para obter da Nuvem AWS. Para fazer isso, use um espaço reservado na configuração do IDT no formato {{AWS.Parameter.parameter_name}} para obter o parâmetro por nome do AWS Parameter Store.

    Por exemplo, suponha que você queira usar o parâmetro IDT-example-name da Etapa 2 como o keyLabel do HSM na configuração do HSM. Para fazer isso, você pode atualizar o userdata.json da seguinte forma:

    "hsm": { "keyLabel": "{{AWS.Parameter.IDT-example-name}}", [...] }

    O IDT obtém o valor desse parâmetro em runtime que foi definido como IDT-example-value na Etapa 2. Essa configuração é semelhante à "keyLabel": "IDT-example-value", com a ressalva de que o valor é armazenado com criptografia na Nuvem AWS.