Defina as configurações de IDT para executar o pacote de AWS IoT Greengrass qualificação - 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 de IDT para executar o pacote de AWS IoT Greengrass qualificação

Antes de executar os testes, você deve definir as configurações de AWS credenciais e dispositivos no computador host.

Configurar AWS credenciais em 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 IDT for AWS IoT Greengrass V2 criado em. Crie e configure um Conta da AWS 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 AWS credenciais ao credentials arquivo 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 V2 para usar AWS as credenciais do seu credentials arquivo, edite o arquivo da seguinte config.json forma:

{ "awsRegion": "region", "auth": { "method": "file", "credentials": { "profile": "default" } } }
nota

Se você não usar o default AWS perfil, não se esqueça de alterar o nome do perfil no seu config.json arquivo. 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 AWS_SECRET_ACCESS_KEY ambiente AWS_ACCESS_KEY_ID e para armazenar suas AWS credenciais.

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 recursosml, e. docker streamManagement O IDT v4.9.4 e versões posteriores oferecem suporte a testes. docker Se você não quiser testar esses recursos, defina o valor correspondente comono.

Além das AWS credenciais, o IDT for AWS IoT Greengrass V2 precisa de informações sobre os dispositivos nos quais os testes são executados. As informações de exemplo seriam 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 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ê quiser listar seu dispositivo no Catálogo de AWS Partner dispositivos, o SKU especificado aqui deverá corresponder ao SKU que você usa 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 suportadas que a execução do teste valida. Os valores válidos são:

  • x86_64

  • armv6l

  • armv7l

  • aarch64

ml

Valida se o dispositivo atende a todas as dependências técnicas necessárias para usar os componentes de aprendizado AWS de máquina (ML) fornecidos.

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

Os valores válidos são qualquer combinação de dlr etensorflowlite, ouno.

docker

Valida se o dispositivo atende a todas as dependências técnicas necessárias para usar o componente Docker application manager () AWS fornecido. aws.greengrass.DockerApplicationManager

A ativação desse recurso também valida que o dispositivo possa baixar uma imagem de contêiner Docker do Amazon ECR.

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

streamManagement

Valida se o dispositivo pode baixar, instalar e executar o gerenciador de AWS IoT Greengrass streaming.

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

hsi

Valida se o dispositivo pode autenticar conexões com os AWS IoT Greengrass serviços AWS IoT e 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 AWS fornecido pode interagir com o HSM usando uma biblioteca PKCS #11 fornecida pelo 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 com o IDT v4.9.3 e versões posteriores.

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. Atualmente, o único valor suportado é ssh para dispositivos físicos.

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 para o 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 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ê quiser listar seu dispositivo no Catálogo de AWS Partner dispositivos, o SKU especificado aqui deverá corresponder ao SKU que você usa 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 suportadas que a execução do teste valida. Os valores válidos são:

  • x86_64

  • armv6l

  • armv7l

  • aarch64

docker

Valida se o dispositivo atende a todas as dependências técnicas necessárias para usar o componente Docker application manager () AWS fornecido. aws.greengrass.DockerApplicationManager

A ativação desse recurso também valida que o dispositivo possa baixar uma imagem de contêiner Docker do Amazon ECR.

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

hsi

Valida se o dispositivo pode autenticar conexões com os AWS IoT Greengrass serviços AWS IoT e 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 AWS fornecido pode interagir com o HSM usando uma biblioteca PKCS #11 fornecida pelo 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 com o IDT v4.9.3 e versões posteriores.

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. Atualmente, o único valor suportado é ssh para dispositivos físicos.

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 para o 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 userdata.json

O IDT for AWS IoT Greengrass V2 também precisa de informações adicionais sobre a localização dos artefatos e do software de teste. 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 artefatos de teste. Certifique-se de que as permissões sudo não sejam necessá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 no qual instalar AWS IoT Greengrass. Para o PreInstalled Greengrass, 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 Greengrass nucleus em seu computador host. Esse campo não é obrigatório para testes com o PreInstalled Greengrass.

nota

Para obter informações sobre as versões suportadas do núcleo Greengrass para IDT for, consulte. AWS IoT GreengrassVersão mais recente do IDT para AWS IoT Greengrass V2 Para baixar o software Greengrass mais recente, consulte Baixar o AWS IoT Greengrass software.

PreInstalled

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

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

Para obter mais 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 estiver instalando com provisionamento manual, inclua a etapa “Adicionar a AWS IoT coisa a um grupo de coisas novo ou existente” ao criar uma AWS IoT coisa manualmente. O IDT pressupõe que a coisa e o grupo de coisas sejam criados durante a configuração da instalação. Certifique-se de que esses valores sejam refletidos no effectiveConfig.yaml arquivo. O IDT verifica o arquivo effectiveConfig.yaml abaixo<InstallationDirRootOnDevice>/config/effectiveConfig.yaml.

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

GreengrassV2TokenExchangeRole

(Opcional) A função personalizada do IAM que você deseja usar como a função de troca de tokens que o dispositivo em teste presume interagir com os AWS recursos.

nota

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

Para obter mais informações sobre como criar uma função personalizada do IAM como sua função de troca de tokens, consulteConfigurar uma função personalizada de troca de tokens.

hsm

Esse recurso está disponível para o IDT v4.5.1 e versões posteriores.

(Opcional) As informações de configuração para testes com um módulo de segurança de AWS IoT Greengrass hardware (HSM). 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 pode ser considerada um dado confidencial se o módulo de segurança de hardware for compartilhado entre o IDT e outro sistema. Nessa situação, você pode evitar proteger esses valores de configuração em texto simples armazenando-os em um AWS parâmetro do Parameter Store SecureString e configurando o IDT para buscá-los durante a execução do teste. Para mais informações, consulte Obter configuração do AWS Parameter Store.

hsm.greengrassPkcsPluginJar

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

hsm.pkcs11ProviderLibrary

O caminho completo para a biblioteca PKCS #11 fornecida pelo 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 HSM no qual você carrega a chave e o certificado.

hsm.slotLabel

A etiqueta do slot usada para identificar o slot 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 AWS IoT Greengrass Core 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 Amazon Resource Name (ARN) do certificado de dispositivo carregado na AWS IoT nuvem.

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

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

hsm.rootCAPath

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

Obter configuração do AWS Parameter Store

AWS IoT O Device Tester (IDT) inclui um recurso opcional para buscar 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 buscar AWS parâmetros do Parameter Store em vez de armazenar parâmetros em texto simples dentro do arquivo. userdata.json Isso é útil para qualquer dado confidencial que deva ser armazenado criptografado, como: senhas, pinos e outros segredos.

  1. Para usar esse recurso, você deve atualizar as permissões usadas na criação do usuário do IDT para permitir a GetParameter ação nos parâmetros que o IDT está configurado para usar. Abaixo está um exemplo de uma declaração de permissão que pode ser adicionada ao usuário do IDT. Para obter mais informações, consulte o AWS Systems Manager guia do usuário.

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

    A permissão acima está configurada para permitir a busca de todos os parâmetros com um nome começando comIDT, usando o caractere curinga. * Você deve personalizá-lo de acordo com suas necessidades para que o IDT tenha acesso para buscar quaisquer parâmetros configurados com base na nomenclatura dos parâmetros que você está usando.

  2. Você precisa armazenar seus valores de configuração dentro do AWS Paramater Store. Isso pode ser feito no AWS console ou na AWS CLI. AWS O Parameter Store permite que você escolha armazenamento criptografado ou não criptografado. Para armazenar valores confidenciais, como segredos, senhas e pinos, você deve usar a opção criptografada, que é um tipo de parâmetro de SecureString. Para carregar um parâmetro usando a AWS CLI, 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 --with-decryption sinalizador para buscar um parâmetro descriptografadoSecureString .

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

    O uso da AWS CLI carregará o parâmetro na AWS região do usuário atual da CLI e o IDT buscará os parâmetros da região configurada em. config.json Para verificar sua região na AWS CLI, use o seguinte:

    aws configure get region
  3. Depois de ter um valor de configuração na AWS nuvem, você pode atualizar qualquer valor dentro da configuração do IDT para buscá-lo na AWS nuvem. Para fazer isso, use um espaço reservado na configuração do IDT do formulário {{AWS.Parameter.parameter_name}} para buscar o parâmetro com esse nome no Parameter Store. AWS

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

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

    O IDT buscará o valor desse parâmetro no tempo de execução definido IDT-example-value na Etapa 2. Essa configuração é semelhante à configuração, "keyLabel": "IDT-example-value" mas, em vez disso, esse valor é armazenado como criptografado na AWS nuvem.