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á.
Preparação de tarefas AWS IoT
O Catálogo de pacotes de software AWS IoT Device Management amplia as AWS IoT tarefas por meio de parâmetros de substituição e integração com indexação de AWS IoT frotas, grupos de objetos dinâmicas e o nome da sombra nomeada reservada AWS IoT do objeto.
nota
Para usar toda a funcionalidade que o Catálogo de pacotes de software oferece, você deve criar estes perfis e políticas AWS Identity and Access Management (do IAM): direitos de AWS IoT tarefas para implantar versões de pacotes e direitos de AWS IoT tarefas para atualizar a sombra nomeada reservada. Para obter mais informações, consulte Preparação de segurança.
Parâmetros de substituição para tarefas AWS IoT
Você pode usar parâmetros de substituição como um espaço reservado em seu documento de trabalho AWS IoT. Quando o serviço de tarefa encontra um parâmetro de substituição, ele aponta a tarefa para um atributo de versão de software nomeado para o valor do parâmetro. Você pode usar esse processo para criar um único documento de trabalho e passar os metadados para a tarefa por meio de atributos de uso geral. Por exemplo, você pode passar por um URL do Amazon Simple Storage Service (Amazon S3), um pacote de software do nome do recurso da Amazon (ARN) ou uma assinatura no documento de trabalho por meio dos atributos da versão do pacote.
Os parâmetros de substituição devem ser formatados no documento de trabalho da seguinte forma:
-
Nome do pacote de software e versão do pacote
-
A string vazia entre
package::version
representa o parâmetro de substituição do nome do pacote de software. A string vazia entreversion::attribute
representa o parâmetro de substituição da versão do pacote de software. Consulte o exemplo a seguir para usar o nome do pacote e os parâmetros de substituição da versão do pacote em um documento de trabalho:${aws:iot:package::version::attributes:
.<attributekey>
} -
O documento do trabalho preencherá automaticamente esses parâmetros de substituição usando o ARN da versão com base nos detalhes da versão do pacote. Se você estiver criando um trabalho ou um modelo de trabalho para uma implantação de pacote único usando um comando de API ou CLI, o ARN da versão para uma versão do pacote será representado pelo parâmetro
destinationPackageVersions
emCreateJob
eDescribeJob
.
-
-
Todos os atributos de uma versão do pacote de software
-
Consulte o exemplo a seguir para usar todos os atributos de um parâmetro de substituição de versão de pacote de software em um documento de trabalho:
${aws:iot:package:
<packageName>
:version:<versionName>
:attributes}
-
nota
O nome do pacote, a versão do pacote e todos os parâmetros de substituição de atributos podem ser usados juntos. Consulte o exemplo a seguir para usar todos os três parâmetros de substituição em um documento de trabalho: ${aws:iot:package::version::attributes}
No exemplo a seguir, há um pacote de software chamado samplePackage
, e ele tem uma versão de pacote chamada 2.1.5
que tem os seguintes atributos:
-
nome:
s3URL
, valor:https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile
-
Esse atributo identifica a localização do arquivo de código armazenado no Amazon S3.
-
-
nome:
signature
, valor:aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj
-
Esse atributo fornece um valor de assinatura de código que o dispositivo exige como medida de segurança. Para obter mais informações, consulte Assinatura de código para tarefas. Nota: Esse atributo é um exemplo e não é obrigatório como parte do Catálogo de pacotes de software ou das tarefas.
-
Para s3URL
, o parâmetro do documento de trabalho é escrito da seguinte forma:
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
Para signature
, o parâmetro do documento de trabalho é escrito da seguinte forma:
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
O documento de trabalho completo está escrito da seguinte forma:
{
...
"Steps": {
"uninstall": ["samplePackage"],
"download": [
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
},
],
"signature": [
"samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
]
}
}
Depois que a substituição é feita, o seguinte documento de trabalho é implantado nos dispositivos:
{
...
"Steps": {
"uninstall": ["samplePackage"],
"download": [
{
"samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
},
],
"signature": [
"samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
]
}
}
Parâmetros de substituição (visualização antes e depois)
Os parâmetros de substituição simplificam a criação de um documento de trabalho usando vários sinalizadores, como $default
para a versão padrão do pacote. Isso elimina a necessidade de inserir manualmente metadados específicos da versão do pacote para cada implantação de trabalho, pois esses sinalizadores são preenchidos de modo automático com os metadados referenciados na versão específica do pacote. Para obter mais informações sobre os atributos da versão do pacote, como $default
para a versão padrão do pacote, consulte Preparação do documento de trabalho e versão do pacote para implantação.
No AWS Management Console, ative o botão Visualizar substituição na janela do Editor do arquivo de instruções de implantação durante a implantação de um trabalho para uma versão do pacote para visualizar o documento do trabalho com e sem os parâmetros de substituição.
Usando o parâmetro “antes da substituição” nas APIs DescribeJob
e GetJobDocument
, você pode visualizar a resposta da API antes e depois da remoção dos parâmetros de substituição. Consulte os exemplos a seguir com as APIs DescribeJob
e GetJobDocument
:
-
DescribeJob
-
Visualização padrão
{ "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"] }
-
Antes da visualização de substituição
{ "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"] }
-
-
GetJobDocument
-
Visualização padrão
{ "attributes": { "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core", "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI", "streamName": "mqtt-core", "fileId": "0" }, }
-
Antes da visualização de substituição
{ "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}", }
-
Para obter mais informações sobre AWS IoT Tarefas, criar documentos de trabalho e implantar tarefas, consulte Tarefas.
Preparação do documento de trabalho e versão do pacote para implantação
Quando uma versão do pacote é criada, ela está em um estado draft
para indicar que está sendo preparada para implantação. Para preparar a versão do pacote para implantação, crie um documento de trabalho, salve-o em um local em que a tarefa possa ser acessada (como o Amazon S3) e confirme se a versão do pacote tem os valores de atributos que você deseja que o documento de trabalho use. (Nota: você pode atualizar os atributos de uma versão do pacote apenas enquanto ela estiver no estado draft
.)
Ao criar um AWS IoT Job ou um modelo de Job para uma implantação de pacote único, você tem as seguintes opções para personalizar seu documento de trabalho:
Arquivo de instruções de implantação (recipe
)
-
O arquivo de instruções de implantação de uma versão do pacote contém as instruções de implantação, incluindo um documento de trabalho embutido, para implantar uma versão do pacote em vários dispositivos. O arquivo associa instruções de implantação específicas a uma versão do pacote para uma implantação rápida e eficiente do trabalho.
No AWS Management Console, você pode criar o arquivo na janela de Visualização do arquivo de instruções de implantação na guia Configurações de implantação da versão do fluxo de trabalho de criação de pacote. Você pode aproveitar AWS IoT para gerar automaticamente um arquivo de instruções com base nos atributos da versão do pacote usando Iniciar pelo arquivo AWS IoT recomendado ou usar seu documento de trabalho armazenado em um bucket do Amazon S3 usando Usar seu próprio arquivo de instruções de implantação.
nota
Se você usar seu próprio documento de trabalho, poderá atualizá-lo diretamente na janela de Visualização do arquivo de instruções de implantação, mas ele não atualizará automaticamente seu documento de trabalho original armazenado no bucket do Amazon S3.
Ao usar o AWS CLI ou um comando de API como
CreatePackageVersion
,GetPackageVersion
ouUpdatePackageVersion
,recipe
representa o arquivo de instruções de implantação, que inclui um documento de trabalho embutido.Para obter mais informações sobre o que é um documento de trabalho, consulte Conceitos básicos.
Consulte o exemplo a seguir para o arquivo de instruções de implantação, conforme representado por
recipe
:{ "packageName": "
sample-package-name
", "versionName": "sample-package-version
", ... "recipe": "{...}" }nota
O arquivo de instrução de implantação, conforme representado por
recipe
, pode ser atualizado quando uma versão do pacote está no estado de status depublished
, pois está separada dos metadados da versão do pacote. Ele se torna imutável durante a implantação do trabalho.
Atributos de versão do Artifact
-
Usando o atributo de versão
artifact
na versão do pacote de software, você pode adicionar a localização do Amazon S3 aos artefatos da versão do pacote. Quando uma implantação de trabalho para a versão do pacote é acionada usando AWS IoT Jobs, o espaço reservado de URL pré-assinado${aws:iot:package:<
no documento de trabalho será atualizado usando o bucket do Amazon S3, a chave do bucket e a versão do arquivo armazenado no bucket do Amazon S3. O bucket do Amazon S3 que armazena os artefatos de versão do pacote deve estar na mesma região em que a versão do pacote foi criada.packageName
>:version:<versionName
>:artifact-location:s3-presigned-url
}nota
Para armazenar várias versões de objetos do mesmo arquivo em seu bucket do Amazon S3, habilite o versionamento em seu bucket. Para obter mais informações, consulte Habilitar o versionamento em buckets.
Para acessar os artefatos da versão do pacote no bucket do Amazon S3 ao usar a operação de API
CreatePackageVersion
ouUpdatePackageVersion
, você deve ter as seguintes permissões:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "arn:<partition>:s3:::<bucket>/<key>" } ] }
Para obter mais informações sobre o atributo de versão
artifact
nas operações da APICreatePackageVersion
eUpdatePackageVersion
, consulte CreatePackageVersione UpdatePackageVersion. Consulte o exemplo a seguir que mostra o atributo de versão
artifact
compatível com a localização do artefato no Amazon S3 ao criar uma nova versão do pacote:{ "packageName": "
sample package name
", "versionName": "1.0
", "artifact": { "s3Location": { "bucket": "firmware
", "key": "image.bin
", "version": "12345
" } } }nota
Quando uma versão do pacote é atualizada de um estado de status
draft
para um estado de statuspublished
, os atributos da versão do pacote e a localização dos artifícios se tornam imutáveis. Para atualizar essas informações, você precisa criar uma nova versão do pacote e realizar essas atualizações enquanto estiver no estado de statusdraft
.
Versão do pacote
-
Uma versão padrão do pacote de software pode ser indicada nas versões disponíveis do pacote de software, fornecendo uma versão de pacote segura e estável. Isso serve como a versão básica do pacote de software ao implantar a versão padrão do pacote em sua frota de dispositivos usando AWS IoT Jobs. Ao criar um trabalho para implantar a versão do pacote
$default
para um pacote de software, a versão do pacote no documento do trabalho e na nova implantação do trabalho deve corresponder a$default
. A versão do pacote na implantação do trabalho é representada pordestinationPackageVersions
para comandos de API e CLI eVersionARN
no AWS Management Console. A versão do pacote no documento de trabalho é representada pelo seguinte espaço reservado para documento de trabalho mostrado abaixo:arn:aws:iot:
<regionCode>
:111122223333
:package/<packageName>
/version/$default
Para criar um trabalho ou modelo de trabalho usando a versão padrão do pacote, use a sinalização
$default
no comando de APICreateJob
ouCreateJobTemplate
, conforme mostrado abaixo:"$ aws iot create-job \ --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default" --document file://jobdoc.json
nota
O atributo
$default
da versão do pacote que faz referência à versão padrão é um atributo opcional que só é necessário ao fazer referência à versão do pacote padrão para uma implantação de trabalho por meio de AWS IoT Jobs.
Quando você estiver satisfeito com a versão do pacote, publique-a por meio da página de detalhes do pacote de software no console de AWS IoT ou emitindo a operação de API UpdatePackageVersion. Em seguida, você pode referenciar a versão do pacote ao criar o trabalho por meio do console AWS IoT ou emitindo a operação da API CreateJob.
Nomeação dos pacotes e das versões durante a implantação
Para implantar uma versão do pacote de software em um dispositivo, confirme se o pacote de software e a versão do pacote referenciados no documento do trabalho correspondem ao pacote de software e à versão do pacote declarados no parâmetro destinationPackageVersions
na operação da API CreateJob
. Se não corresponderem, você receberá uma mensagem de erro solicitando que as duas referências correspondam. Para obter mais informações sobre mensagens de erro do Catálogo de pacotes de software, consulte Mensagens de erro de solução de problemas geral.
Além dos pacotes de software e das versões de pacotes referenciados no documento de trabalho, você pode incluir pacotes de software e versões de pacotes adicionais no parâmetro destinationPackageVersions
na operação da API CreateJob
não referenciados no documento de trabalho. Inclua as informações de instalação necessárias no documento de trabalho para que os dispositivos instalem adequadamente as versões adicionais do pacote de software. Para obter mais informações sobre a operação CreateJob
API consulte CreateJob
Segmentação de tarefas por meio de grupos de objetos dinâmicas AWS IoT
O Catálogo de pacotes de software trabalha com indexação de frota, AWS IoTtarefas e grupos de objetos AWS IoT dinâmicas para filtrar e direcionar dispositivos na frota para selecionar qual versão do pacote implantar nos dispositivos. Você pode executar uma consulta de indexação de frota com base nas informações atuais do pacote do seu dispositivo e direcionar essas objetos para uma tarefa AWS IoT. Você também pode lançar atualizações de software, mas somente para dispositivos de destino qualificados. Por exemplo, você pode especificar que deseja implantar uma configuração somente nos dispositivos que atualmente executam o iot-device-client 1.5.09
. Para obter mais informações, consulte a opção Criar um grupo de objetos dinâmicas.
Versões reservadas nomeadas de sombra e pacote
Se configurado, a opção Tarefas AWS IoT pode atualizar uma sombra nomeada reservada do objeto ($package
) quando a tarefa for concluída com êxito. Se você fizer isso, não precisará associar manualmente uma versão do pacote a uma sombra nomeada reservado do objeto.
Você pode optar por associar ou atualizar manualmente uma versão do pacote à sombra nomeada reservada do objeto nas seguintes situações:
-
Você registra um objeto em AWS IoT Core sem associar a versão do pacote instalado.
-
A opção Tarefas AWS IoT não está configurada para atualizar a sombra nomeada reservada do objeto.
-
Você usa um processo interno para enviar versões de pacotes para sua frota e esse processo não é atualizado AWS IoT Core quando concluído.
nota
Recomendamos que você use a opção Tarefas AWS IoT para atualizar a versão do pacote na sombra nomeada reservada ($package
). Atualizar o parâmetro de versão na sombra $package
por meio de outros processos (como chamadas de API manuais ou programáticas) quando a opção Tarefas AWS IoT também está configurada para atualizar a sombra, pode causar inconsistências entre a versão real no dispositivo e a versão relatada à sombra nomeada reservada.
Você pode adicionar ou atualizar uma versão de pacote para uma sombra nomeada reservada do objeto ($package
) por meio do console ou da operação da API UpdateThingShadow
. Para obter mais informações, consulte Associação de uma versão de pacote a uma AWS IoT objeto.
nota
Associar uma versão do pacote a um objeto AWS IoT não atualiza diretamente o software do dispositivo. Você deve implantar a versão do pacote no dispositivo para atualizar o software do dispositivo.
Como desinstalar um pacote de software e sua versão do pacote
$null
é um espaço reservado que solicita que o serviço Tarefas AWS IoT remova o pacote de software e a versão do pacote existentes da sombra nomeada reservada do dispositivo $package
. Para obter mais informações, consulte Sombra nomeada reservada.
Para usar esse atributo, substitua o nome da versão no final do nome do recurso da Amazon (ARN) de destinationPackageVersion com $null
. Depois disso, você deve instruir seu serviço a remover o software do dispositivo.
O ARN autorizado usa o seguinte formato:
arn:aws:iot:
<regionCode>
:111122223333
:package/<packageName>
/version/$null
Por exemplo,
$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]