

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

# AWS IoT Device Management Catálogo de pacotes de software
<a name="software-package-catalog"></a>

Com o AWS IoT Device Management Software Package Catalog, você pode manter um inventário dos pacotes de software e suas versões. Você pode associar versões de pacotes a itens individuais e grupos AWS IoT dinâmicos de itens e implantá-los por meio de processos ou [AWS IoT trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) internos. 

O pacote de software contém uma ou mais versões de pacote, que é uma coleção de arquivos que podem ser implantados como uma única unidade. As versões do pacote podem conter firmware, atualizações do sistema operacional, aplicativos de dispositivos, configurações e patches de segurança. À medida que o software evolui com o tempo, você pode criar uma nova versão do pacote e implantá-la em sua frota. 

O hub do pacote de AWS IoT software está localizado em AWS IoT Core. Você pode usar o hub para registrar e manter centralmente seu inventário e metadados de pacotes de software, o que cria um catálogo de pacotes de software e suas versões. Você pode optar por agrupar dispositivos com base em pacotes de software e versões de pacotes implantados no dispositivo. Esse atributo oferece a oportunidade de manter o inventário de pacotes do lado do dispositivo como uma sombra nomeada, associar e agrupar dispositivos com base nas versões e visualizar a distribuição da versão do pacote em toda a frota usando métricas da frota.

Se você tiver um sistema interno de implantação de software estabelecido, poderá continuar usando esse processo para implantar suas versões de pacotes. Se você não tiver um processo de implantação estabelecido ou se preferir, recomendamos o uso de [trabalhos da AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) para usar os atributos do Catálogo de pacotes de software. Para obter mais informações, consulte [Preparando AWS IoT trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Preparação para uso do Catálogo de pacotes de software](preparing-to-use-software-package-catalog.md)
+ [Preparação de segurança](preparing-security.md)
+ [Preparação da indexação de frota](preparing-fleet-indexing.md)
+ [Preparando AWS IoT trabalhos](preparing-jobs-for-service-package-catalog.md)
+ [Conceitos básicos do Catálogo de pacotes de software](getting-started-with-software-package-catalog.md)

# Preparação para uso do Catálogo de pacotes de software
<a name="preparing-to-use-software-package-catalog"></a>

A seção a seguir fornece uma visão geral do ciclo de vida da versão do pacote e informações para usar o Software AWS IoT Device Management Package Catalog. 

## Ciclo de vida da versão do pacote
<a name="package-version-lifecycle"></a>

Uma versão de pacote pode evoluir nos seguintes estados do ciclo de vida:`draft`, `published` e `deprecated`. Ele também pode ser `deleted`.

![\[O ciclo de vida da versão do pacote com o rascunho, publicado e preterido. Ele também pode ser excluído.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Rascunho**

  Quando você cria uma versão do pacote, ela está em um estado `draft`. Esse estado indica que o pacote de software está sendo preparado ou está incompleto.

  Enquanto a versão do pacote estiver nesse estado, você não pode implantá-la. Você pode editar a descrição, os atributos e as tags da versão do pacote.

  Você pode fazer a transição de uma versão do pacote que está no `draft` estado para `published` ou está `deleted` usando o console ou emitindo as operações [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou a [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Publicado**

  Quando a versão do pacote estiver pronta para implantação, faça a transição da versão do pacote para um estado `published`. Nesse estado, você pode escolher identificar a versão do pacote como a versão padrão editando o pacote de software no console ou por meio da operação da [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API. Nesse estado, você pode editar apenas a descrição e as tags.

  Você pode fazer a transição de uma versão do pacote que está no `published` estado para `deprecated` ou está `deleted` usando o console ou emitindo as operações [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou a [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Preterido**

  Se uma nova versão do pacote estiver disponível, você poderá fazer a transição de versões anteriores do pacote para `deprecated`. Você ainda pode implantar tarefas com uma versão de pacote preterida. Você também pode nomear uma versão obsoleta do pacote como a versão padrão e editar apenas a descrição e as tags. 

  Considere fazer a transição de uma versão do pacote para `deprecated` quando a versão estiver desatualizada, mas você ainda tiver dispositivos em campo usando a versão mais antiga ou precisar mantê-la devido à dependência do tempo de execução. 

  Você pode fazer a transição de uma versão do pacote que está no `deprecated ` estado para `published` ou está `deleted` usando o console ou emitindo as operações [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)ou a [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Excluído**

  Quando você não pretende mais usar uma versão do pacote, pode excluí-la usando o console ou emitindo a operação da [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
**nota**  
Se você excluir uma versão do pacote enquanto houver tarefas pendentes que fazem referência a ela, você receberá uma mensagem de erro quando a tarefa for concluída com êxito e tentar atualizar a sombra nomeada reservada.  
 Se a versão do pacote de software que você deseja excluir for nomeada como a versão padrão do pacote, você deverá primeiro atualizar o pacote para nomear outra versão como padrão ou deixar o campo sem nome. Você pode fazer isso usando o console ou a operação [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)da API. (Para remover qualquer versão de pacote nomeada como padrão, defina o [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)parâmetro como true ao emitir a operação da [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API).

  Se você excluir um pacote de software pelo console, ele excluirá todas as versões do pacote associadas a esse pacote, a menos que uma seja nomeada como a versão padrão.

## Convenções de nomenclatura de versões de pacotes
<a name="package-version-naming"></a>

Ao nomear as versões do pacote, é importante planejar e aplicar uma estratégia de nomenclatura lógica para que você e outras pessoas possam identificar facilmente a versão mais recente do pacote e a progressão da versão. Você deve fornecer um nome de versão ao criar a versão do pacote, mas a estratégia e o formato dependem muito do seu caso de negócios.

Como prática recomendada, recomendamos usar o formato de controle de versão [SemVer](https://semver.org/)semântico. Por exemplo, `1.2.3` onde `1` está a versão principal para alterações funcionalmente incompatíveis, `2` a versão principal para alterações funcionalmente compatíveis e `3` é a versão do patch (para correções de erros). Para obter mais informações, consulte [Versionamento semântico 2.0.0](https://semver.org/). Para obter mais informações sobre os requisitos do nome da versão do pacote, consulte [VersionName no guia](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) de referência da AWS IoT API.

## Versão padrão
<a name="default-version"></a>

Definir uma versão como padrão é opcional. É possível adicionar ou remover versões de pacote padrão. Você também pode implantar uma versão do pacote que não seja nomeada como a versão padrão.

Quando você cria uma versão do pacote, ela é colocada em um estado `draft` e não pode ser nomeada como a versão padrão até que você faça a transição da versão do pacote para “publicada”. O Catálogo de pacotes de software não seleciona automaticamente uma versão como padrão nem atualiza uma versão mais recente do pacote como padrão. Você deve nomear intencionalmente a versão do pacote escolhida por meio do console ou emitindo a operação da [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

## Atributos de versão
<a name="version-attributes"></a>

Os atributos de versão e seus valores contêm informações importantes sobre as versões do seu pacote. Recomendamos que você defina atributos de uso geral para um pacote ou versão do pacote. Por exemplo, você pode criar um par nome-valor para plataforma, arquitetura, sistema operacional, data de lançamento, autor ou URL do Amazon S3.

 Ao criar um AWS IoT trabalho com um documento de trabalho, você também pode optar por usar uma variável de substituição (`$parameter`) que se refere ao valor de um atributo. Para obter mais informações, consulte [Preparando AWS IoT trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

Os atributos de versão usados nas versões do pacote não serão adicionados automaticamente à sombra nomeada reservada e não poderão ser indexados ou consultados diretamente por meio da indexação de frota. Para indexar ou consultar os atributos da versão do pacote por meio da indexação de frota, você pode preencher o atributo da versão na sombra nomeada reservada.

Recomendamos que o parâmetro de atributo de versão na sombra nomeada reservada capture as propriedades relatadas pelo dispositivo, como sistema operacional e horário de instalação. Elas também podem ser indexadas e consultadas por meio da indexação de frota.

Os atributos da versão não precisam seguir uma convenção de nomenclatura específica. Você pode criar pares de nome e valor para atender às necessidades da sua empresa. O tamanho combinado de todos os atributos em uma versão do pacote é limitado a 3 KB. Para obter mais informações, consulte os limites do pacote de software e das versões do pacote do [Catálogo de Pacotes de Software](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Usar todos os atributos em um documento de trabalho**

Você pode adicionar todos os atributos da versão do pacote automaticamente à implantação do seu trabalho para dispositivos selecionados. Para usar automaticamente todos os atributos de versão do pacote de maneira programática em um comando da API ou CLI, consulte o seguinte exemplo de documento de trabalho:

```
"TestPackage": "${aws:iot:package:TestPackage:version:PackageVersion:attributes}"
```

## Lista de materiais de software
<a name="software-bill-of-materials"></a>

A lista de materiais de software (SBOM) fornece um repositório central para todos os aspectos do seu pacote de software. Além de armazenar pacotes e versões de pacotes de software, você pode armazenar a lista de materiais de software (SBOM) associada a cada versão do pacote no Catálogo de Pacotes de AWS IoT Device Management Software. O pacote de software contém uma ou mais versões de pacote e cada versão de pacote consiste em um ou mais componentes. Cada um desses componentes que aceitam a composição de uma versão específica do pacote pode ser descrito e catalogado usando uma lista de materiais de software. Os padrões do setor para a lista de materiais de software compatíveis são SPDX e CycloneDX. Quando uma SBOM é criada, ela passa por validação no formato padrão do setor SPDX e CycloneDX. Para obter mais informações sobre o SPDX, consulte [Troca de dados de pacote do sistema](https://spdx.dev/). Para obter mais informações sobre o CycloneDX, consulte [CycloneDX](https://cyclonedx.org/).

A lista de materiais de software descreve todos os aspectos dos componentes de uma versão específica do pacote, como informações do pacote, informações do arquivo e outros metadados pertinentes. Veja o exemplo abaixo de uma estrutura de documento de lista de materiais de software no formato SPDX:

![\[Um exemplo de SBOM no formato SPDX.\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/spdx-2.3-document.png)


### Benefícios da lista de materiais de software
<a name="spc-sbom-benefits"></a>

Um dos principais benefícios de adicionar sua lista de materiais de software para uma versão de pacote no Catálogo de Pacotes de Software é o gerenciamento de vulnerabilidades.

**Gerenciamento de vulnerabilidade**

Avaliar e mitigar sua vulnerabilidade a riscos aparentes de segurança em componentes de software continua sendo fundamental para proteger a integridade da frota de dispositivos. Ao adicionar a lista de materiais de software armazenada no Catálogo de Pacotes de Software para cada versão do pacote, você pode expor proativamente as lacunas na segurança sabendo quais dispositivos estão em risco com base na versão do pacote e na SBOM usando sua própria solução interna de gerenciamento de vulnerabilidades. Você pode implantar correções nos dispositivos afetados e proteger sua frota de dispositivos.

### Armazenamento da lista de materiais de software
<a name="spc-sbom-storage"></a>

A lista de materiais de software (SBOM) de cada versão do pacote de software é armazenada em um bucket do Amazon S3 usando o atributo de versionamento do Amazon S3. O bucket do Amazon S3 que armazena a SBOM deve estar na mesma região em que a versão do pacote foi criada. O bucket do Amazon S3 usando o atributo de versionamento mantém diversas variantes de um objeto no mesmo bucket. Para obter mais informações sobre como usar versionamento em um bucket do Amazon S3, consulte [Usar versionamento em buckets do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

**nota**  
Cada versão do pacote de software pode ter vários arquivos SBOM anexados, mas os arquivos SBOM devem ser armazenados em um único arquivo zip.

A chave e o ID de versão específicos do Amazon S3 para seu bucket são usados para identificar de maneira exclusiva cada versão de uma lista de materiais de software para uma versão de pacote.

**nota**  
Para uma versão de pacote com um único arquivo SBOM, você pode armazenar esse arquivo SBOM em seu bucket do Amazon S3 como um arquivo zip.  
Para uma versão de pacote com vários arquivos SBOM, você deve colocar todos os arquivos SBOM em um só arquivo zip e depois armazenar esse arquivo zip em seu bucket do Amazon S3.  
Todos os arquivos SBOM armazenados em um só arquivo zip em ambos os cenários são formatados como arquivos SPDX ou CycloneDX .json.

**Política de permissões**

Para AWS IoT atuar como principal especificado para acessar os arquivos zip do SBOM armazenados no bucket do Amazon S3, você precisa de uma política de permissões baseada em recursos. Consulte o exemplo a seguir para ver a política correta de permissões com base em recursos:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "iot.amazonaws.com"
                ]
        },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucketName/*"
        }
    ]
}
```

Para obter mais informações sobre políticas baseadas em recursos, consulte [AWS IoT políticas baseadas em recursos](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies)

**Atualizar o SBOM**

Você pode atualizar a lista de materiais do software sempre que necessário para proteger e aprimorar sua frota de dispositivos. Sempre que a lista de materiais de software é atualizada em seu bucket do Amazon S3, o ID da versão muda, e você deve associar o novo URL do bucket do Amazon S3 à versão apropriada do pacote de software. Você verá o novo ID da versão na coluna **ID da versão do objeto do Amazon S3** na página da versão do pacote no Console de gerenciamento da AWS. Além disso, você pode usar a operação da API `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` ou o comando da CLI `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` para visualizar o novo ID da versão.

**nota**  
Atualizar sua lista de materiais de software, o que causará um novo ID de versão, não levará à criação de uma nova versão do pacote.

Para obter mais informações sobre chaves de objeto do Amazon S3, consulte [Criar nomes de chave de objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## Habilitando a indexação de AWS IoT frotas
<a name="enable-fleet-indexing"></a>

Habilitar a indexação de AWS IoT frotas é um requisito para usar o AWS IoT Device Management Software Package Catalog. Para aproveitar a indexação de AWS IoT frotas com o Catálogo de pacotes de software, defina a sombra nomeada reservada (`$package`) como a fonte de dados para cada dispositivo no qual você deseja indexar e coletar métricas. Para obter mais informações sobre sombras nomeadas reservadas, consulte [Sombra nomeada reservada](#reserved-named-shadow).

A indexação de frotas fornece suporte que permite que AWS IoT as coisas sejam agrupadas por meio de grupos dinâmicos que são filtrados por versão do pacote de software. Por exemplo, a indexação de frota pode identificar objetos que têm ou não uma versão de pacote específica instalada, não têm nenhuma versão de pacote instalada ou correspondem a pares de nome/valor específicos. Por fim, a indexação da frota fornece métricas padrão e personalizadas que você pode usar para obter informações sobre o estado da sua frota de dispositivos. Para obter mais informações, consulte [Preparação da indexação de frota](preparing-fleet-indexing.md).

**nota**  
Habilitar a indexação de frota para o Catálogo de pacotes de software gera custos de serviço padrão. Para obter mais informações, consulte a opção [AWS IoT Device Management, Preços](https://aws.amazon.com/iot-device-management/pricing/). 

## Sombra nomeada reservada
<a name="reserved-named-shadow"></a>

A sombra nomeada reservada, `$package`, reflete o estado dos pacotes de software e das versões dos pacotes instalados no dispositivo. A indexação de frota usa a sombra nomeada reservada como fonte de dados para criar métricas padrão e personalizadas para que você possa consultar o estado da sua frota. Para obter mais informações, consulte [Preparação de indexação de frota](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html).

Uma sombra nomeada reservada é semelhante a uma [sombra nomeada](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html), com a exceção de que seu nome é predefinido e você não pode alterá-lo. Além disso, a sombra nomeada reservada não é atualizada com metadados e usa somente as palavras-chave `version` e `attributes`.

Solicitações de atualização que incluam outras palavras-chave, como `description`, receberão uma resposta de erro no tópico `rejected`. Para obter mais informações, consulte as mensagens de erro da opção [Sombra do dispositivo](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Ele pode ser criado quando você cria AWS IoT algo por meio do console, quando um AWS IoT trabalho conclui e atualiza a sombra com êxito e se você executa a operação da [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html)API. Para obter mais informações, consulte [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)o guia do AWS IoT Core desenvolvedor. 

**nota**  
A indexação da sombra nomeada reservada não conta para o número de sombras nomeadas que a indexação da frota pode indexar. Para obter mais informações, consulte [AWS IoT Device Management Cotas e limites de indexação de frota](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). Além disso, se você optar por fazer com que os AWS IoT trabalhos atualizem a sombra nomeada reservada quando um trabalho for concluído com êxito, a chamada de API será contabilizada nas operações de Device Shadow e de registro e poderá ter um custo. Para obter mais informações, consulte [limites e cotas de AWS IoT Device Management trabalhos](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) e o tipo de dados [IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)da API.

**Estrutura da sombra `$package`**

A sombra nomeada reservada contém o seguinte:

```
{
    "state": {
        "reported": {
            "<packageName>": {
                "version": "",
                "attributes": {
                }
            }
        }
    },
    "version" : 1
    "timestamp" : 1672531201
}
```

As propriedades da sombra são atualizadas com as seguintes informações:
+  `<packageName>`: o nome do pacote de software instalado, que é atualizado com o parâmetro [packageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax). 
+  `version`: o nome da versão do pacote instalado, que é atualizado com o parâmetro [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax). 
+  `attributes`: metadados opcionais armazenados pelo dispositivo e indexados pela indexação da frota. Isso permite que os clientes consultem seus índices com base nos dados armazenados. 
+ `version`: o número da versão da sombra. É incrementado automaticamente toda vez que a sombra é atualizada e começa em `1`. 
+ `timestamp`: indica quando a sombra foi atualizada pela última vez e foi gravada no [horário Unix](https://en.wikipedia.org/wiki/Unix_time).

Para obter mais informações sobre o formato e o comportamento de uma sombra nomeada, consulte a opção [Serviço AWS IoT Device Shadow Ordem das mensagens](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Exclusão de um pacote de software e suas versões
<a name="deleting-packages-and-versions"></a>

Antes de excluir um pacote de software, você deve fazer o seguinte:
+ Confirme se o pacote e suas versões não estão sendo implantados ativamente. 
+ Exclua todas as versões associadas primeiro. Se uma das versões for designada como a **versão padrão**, você deverá remover a versão padrão nomeada do pacote. Como a designação de uma versão padrão é opcional, não há conflito em removê-la. Para remover a versão padrão do pacote de software, edite o pacote por meio do console ou use a operação da [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

Desde que não haja uma versão de pacote padrão nomeada, você pode usar o console para excluir um pacote de software e todas as versões do pacote também serão excluídas. Se você usar uma chamada de API para excluir pacotes de software, deverá excluir primeiro as versões do pacote e depois o pacote de software. 

# Preparação de segurança
<a name="preparing-security"></a>

Esta seção discute os principais requisitos de segurança do AWS IoT Device Management Software Package Catalog.

## Autenticação baseada em recurso
<a name="resource-based-authorization"></a>

O Catálogo de pacotes de software usa autorização baseada em recursos para fornecer segurança adicional ao atualizar o software em sua frota. Isso significa que você deve criar uma política AWS Identity and Access Management (IAM) que conceda direitos de execução`create`,`read`, `update``delete`, e `list` ações para pacotes e versões de pacotes de software e referenciar os pacotes de software e as versões de pacotes específicos que você deseja implantar na `Resources` seção. Você também precisa desses direitos para poder atualizar a [sombra nomeada reservada](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow). Você faz referência aos pacotes de software e às versões dos pacotes incluindo o nome do recurso da Amazon (ARN) para cada entidade.

**nota**  
*Se você pretende que a política conceda direitos para chamadas de API da versão do pacote (como [CreatePackageVersion[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html),, [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)), é necessário incluir o pacote de software e a versão do pacote ARNs na política.* Se você pretende que a política conceda direitos para chamadas de API de pacotes de software (como [CreatePackage[UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html), e [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)), você deve incluir somente o ARN do pacote de software na política.

Estruture o pacote de software e a versão do pacote da ARNs seguinte forma:
+ Pacote de software: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Versão do pacote: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**nota**  
Há outros direitos relacionados que você pode incluir nesta política. Por exemplo, você pode incluir um ARN para o `job`, `thinggroup`, e `jobtemplate`. Para obter mais informações e uma lista completa das opções de política, consulte [Protegendo usuários e dispositivos com AWS IoT trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Por exemplo, se você tiver um pacote de software e uma versão do pacote com o seguinte nome:
+ AWS IoT coisa: `myThing`
+ Nome do pacote: `samplePackage`
+ Versão `1.0.0`

A política pode ser igual a este exemplo:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:createPackage",
                "iot:createPackageVersion",
                "iot:updatePackage",
                "iot:updatePackageVersion"
            ],
            "Resource": [
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage",
               "arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
        }
    ]
}
```

## AWS IoT Job rights para implantar versões de pacotes
<a name="job-rights-deploy-versions"></a>

Para fins de segurança, é importante conceder direitos para implantar pacotes e versões de pacotes e nomear os pacotes e versões de pacotes específicos que eles podem implantar. Para fazer isso, você cria uma política e um perfil do IAM que concedem permissão para implantar tarefas com versões de pacotes. A política deve especificar as versões do pacote de destino como um recurso.

**Política do IAM**

A política do IAM concede o direito de criar uma tarefa que inclua o pacote e a versão nomeados na seção `Resource`.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:CreateJob",
                "iot:CreateJobTemplate"
            ],
            "Resource":[
                "arn:aws:iot:*:111122223333:job/<jobId>",
                "arn:aws:iot:*:111122223333:thing/<thingName>/$package",
                "arn:aws:iot:*:111122223333:thinggroup/<thingGroupName>",
                "arn:aws:iot:*:111122223333:jobtemplate/<jobTemplateName>",
                "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
            ]
        }
    ]
}
```

**nota**  
Se você quiser implantar uma tarefa que desinstale um pacote de software e uma versão do pacote, você deve autorizar um ARN em que a versão do pacote seja `$null`, como mostrado a seguir:

```
arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null
```

## AWS IoT Job rights para atualizar a sombra nomeada reservada
<a name="job-rights-update-reserved-named-shadow"></a>

Para permitir que as tarefas atualizem a sombra de nome reservada do objeto quando a tarefa for concluída com êxito, você deve criar um perfil e uma política do IAM. Você pode fazer isso de duas maneiras no console AWS IoT . A primeira é quando você cria um pacote de software no console. Se você vir a caixa de diálogo **Habilitar dependências para gerenciamento de pacotes**, poderá optar por usar uma função existente ou criar uma nova função. Ou, no console AWS IoT , escolha **Configurações**, em seguida **Gerenciar indexação** e, então, **Gerenciar indexação para pacotes e versões de dispositivos**. 

**nota**  
Se você optar por fazer com que o serviço AWS IoT Job atualize a sombra nomeada reservada quando um trabalho for concluído com êxito, a chamada da API será contabilizada nas **operações de Device Shadow e de registro** e poderá ter um custo. Para obter mais informações, consulte [Preços do AWS IoT Core](https://aws.amazon.com/iot-core/pricing/).

Quando você usa a opção **Criar função**, o nome da função gerada começa com `aws-iot-role-update-shadows` e contém as seguintes políticas:

**Configuração de um perfil**

**Permissões**  
A política de permissões concede os direitos de consultar e atualizar a sombra do objeto. O parâmetro `$package` no ARN do recurso tem como alvo a sombra nomeada reservada.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:DescribeEndpoint",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetThingShadow",
                "iot:UpdateThingShadow"
            ],
            "Resource": [
            "arn:aws:iot:us-east-1:111122223333:thing/<thingName>/$package"
            ]
        }
    ]
}
```

**Relação de confiança**  
Além da política de permissões, a função exige uma relação de confiança com AWS IoT Core para que a entidade possa assumir a função e atualizar a sombra nomeada reservada.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "iot.amazonaws.com"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**Configuração de uma política de usuário**

**objetivo: PassRole permissão**  
Por fim, você deve ter a permissão para passar a função AWS IoT Core ao chamar a operação da [ UpdatePackageConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageConfiguration.html)API.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "iot:UpdatePackageConfiguration"
            ],
            "Resource": "arn:aws:iam::111122223333:role/<roleName>"
        }
    ]
}
```

## AWS IoT Permissões de trabalho para baixar do Amazon S3
<a name="job-rights-download-job-document"></a>

O documento de trabalho é salvo no Amazon S3. Você se refere a esse arquivo ao enviar por meio de AWS IoT Jobs. Você deve fornecer a AWS IoT Jobs os direitos de baixar o arquivo (`s3:GetObject`). Você também deve estabelecer uma relação de confiança entre o Amazon S3 e AWS IoT Jobs. Para obter instruções sobre como criar essas políticas, consulte [Pré-assinado URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) em [Gerenciando trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html).

## Permissões para atualizar a lista de materiais de software para uma versão do pacote
<a name="job-rights-update-sbom"></a>

Para atualizar a lista de materiais de software para uma versão de pacote nos estados de `Draft``Published`, ou `Deprecated` ciclo de vida, você precisa de uma AWS Identity and Access Management função e políticas para localizar a nova lista de materiais de software no Amazon S3 e atualizar a versão do pacote em. AWS IoT Core

Primeiro, você colocará a lista de materiais de software atualizada em seu bucket com versionamento do Amazon S3 e chamará a operação `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` da API com o parâmetro `sboms` incluído. Em seguida, seu diretor autorizado assumirá a função do IAM que você criou, localizará a lista de materiais de software atualizada no Amazon S3 e atualizará a versão do pacote no AWS IoT Core Software Package Catalog.

As seguintes políticas são necessárias para realizar essa atualização:

**Políticas**
+ **Política de confiança**: política que estabelece uma relação de confiança com a entidade principal autorizada, assumindo o perfil do IAM, para que ela possa localizar a lista de materiais de software atualizada do seu bucket com versionamento no Amazon S3 e atualizar a versão do pacote em AWS IoT Core.
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "s3.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "iot.amazonaws.com"
            },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    ```
+ **Política de permissões**: política para acessar o bucket com versionamento do Amazon S3 em que a lista de materiais do software é armazenada para uma versão do pacote e atualizá-la no AWS IoT Core.
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::awsexamplebucket1"
                ]
            }
        ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iot:UpdatePackageVersion"
                ],
                "Resource": [
                    "arn:aws:iot:*:111122223333:package/<packageName>/version/<versionName>"
                ]
            }
        ]
    }
    ```
+ **Transmitir permissões de função**: política que concede permissão para passar a função do IAM para o Amazon S3 AWS IoT Core e quando você chama `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` a operação da API.
  +   
****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole",
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::awsexamplebucket1"
          ]
        }
      ]
    }
    ```
  +   
****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:PassRole",
                    "iot:UpdatePackageVersion"
                ],
                "Resource": "arn:aws:iam::111122223333:role/<roleName>"
            }
        ]
    }
    ```

**nota**  
Você não pode atualizar a lista de materiais do software em uma versão do pacote que tenha passado para o estado de ciclo de vida `Deleted`.

Para obter mais informações sobre como criar uma função do IAM para um AWS serviço, consulte [Criação de uma função para delegar permissão a um AWS serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

Para obter mais informações sobre a criação de um bucket do Amazon S3 e o upload de objetos nele, consulte [Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) e [Fazer upload de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

# Preparação da indexação de frota
<a name="preparing-fleet-indexing"></a>

Com a indexação de AWS IoT frotas, você pode pesquisar e agregar dados usando o nome reservado shadow ()`$package`. Você também pode agrupar AWS IoT coisas consultando os [grupos [Sombra nomeada reservada](preparing-to-use-software-package-catalog.md#reserved-named-shadow) de coisas dinâmicas](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html). Por exemplo, você pode encontrar informações sobre quais AWS IoT itens usam uma versão de pacote específica, não têm uma versão de pacote específica instalada ou não têm nenhuma versão de pacote instalada. Você pode obter mais informações combinando atributos. Por exemplo, identificar objetos que têm uma versão específica e são de um tipo específico (como a versão 1.0.0 e o tipo de objeto pump\$1sensor). Para obter mais informações, consulte [Indexação de frota](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Definição da `$package` sombra como fonte de dados
<a name="shadow-as-data-source"></a>

Para usar a indexação de frota com o Catálogo de pacotes de software, você deve habilitar a indexação de frota, definir a sombra nomeada como a fonte de dados e definir `$package` como o filtro de sombra nomeado. Se você não ativou a indexação de frota, poderá ativá-la nesse processo. Em [AWS IoT Core](https://console.aws.amazon.com/iot/home) no console, abra **Configurações**, selecione **Gerenciar indexação**, em seguida **Adicionar sombras nomeadas**, **Adicionar pacotes de software do dispositivo e versões**, e **Atualizar**. Para obter mais informações, consulte [Como gerenciar indexação de objetos](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index). 

Como alternativa, você pode ativar a indexação da frota ao criar seu primeiro pacote. Quando a caixa de diálogo **Habilitar dependências para gerenciamento de pacotes** for exibida, escolha a opção de adicionar pacotes e versões de software do dispositivo como fontes de dados à indexação da frota. Ao selecionar essa opção, você também ativa a indexação da frota.

**nota**  
Habilitar a indexação de frota para o Catálogo de pacotes de software gera custos de serviço padrão. Para obter mais informações, consulte a opção [AWS IoT Device Management, Preços](https://aws.amazon.com/iot-device-management/pricing/).

## Métricas serão exibidos no console
<a name="metrics-displayed-in-console"></a>

![\[Imagem de métricas padrão\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


Na página de detalhes do pacote de software do AWS IoT console, o painel **Discovery** exibe métricas padrão ingeridas pela `$package` sombra.
+ O gráfico de **distribuição da versão atual** mostra o número de dispositivos e a porcentagem das 10 versões mais recentes do pacote que estão associadas a AWS IoT alguma coisa de todos os dispositivos associados a esse pacote de software. **Nota:** Se o pacote de software tiver mais versões do pacote do que as identificadas no gráfico, você poderá encontrá-las agrupadas em **Outros**.
+ O gráfico **Histórico** mostra o número de dispositivos associados às versões selecionadas do pacote em um período de tempo especificado. O gráfico fica inicialmente vazio até que você selecione até cinco versões do pacote e defina o intervalo de datas e o intervalo de tempo. Para selecionar os parâmetros do gráfico, escolha **Configurações**. Os dados exibidos no gráfico **Histórico** podem ser diferentes do gráfico de **distribuição da versão atual** devido à diferença no número de versões do pacote que eles exibem e também porque você pode escolher quais versões do pacote analisar no gráfico **Histórico**. **Nota:** quando você seleciona uma versão do pacote para visualizar, ela conta para o número máximo de limites de métricas da frota. Para obter mais informações, consulte [Cotas e limites de indexação de frota](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Para outro método para obter informações sobre como coletar a distribuição da versão do pacote, consulte [Como coletar a distribuição da versão do pacote por meio de `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Padrões de consulta
<a name="query-patterns"></a>

A indexação de frota com o Catálogo de pacotes de software usa a maioria dos atributos aceitos (por exemplo, termos, frases e campos de pesquisa). No entanto, operadores de comparação (por exemplo, menor que `<` e maior que `>`) e consultas `range` não estão disponíveis para a chave `version` de sombra reservada nomeada (`$package`). Essas consultas estão disponíveis para a chave `attributes`. Para obter mais informações, consulte [Sintaxe de consulta](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Exemplo de dados
<a name="query-patterns-example-data"></a>

**Nota:** para obter informações sobre a sombra nomeada reservada e sua estrutura, consulte [Sombra nomeada reservada](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Neste exemplo, um primeiro dispositivo é nomeado `AnyThing` e tem os seguintes pacotes instalados: 
+ Pacote de software: `SamplePackage`

  Versão do pacote: `1.0.0`

  ID de pacote: `1111`

A sombra se parece com esta a seguir:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                    }
            }
        }
    }
}
```

Um segundo dispositivo tem um nome `AnotherThing` e tem o seguinte pacote instalado: 
+ Pacote de software: `SamplePackage`

  Versão do pacote: `1.0.0`

  ID de pacote: `1111`
+ Pacote de software: `OtherPackage`

  Versão do pacote: `1.2.5`

  ID de pacote: `2222`

A sombra se parece com esta a seguir:

```
{
    "state": {
        "reported": {
            "SamplePackage": {
                "version": "1.0.0",
                "attributes": {
                    "s3UrlForSamplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile1",
                    "packageID": "1111"
                }
            },
            "OtherPackage": {
                "version": "1.2.5",
                "attributes": {
                    "s3UrlForOtherPackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile2",
                    "packageID": "2222"
                    }
            },
        }
    }
}
```

### Consultas de exemplo
<a name="sample-queries"></a>

A tabela a seguir lista exemplos de consultas com base nos exemplos de sombras de dispositivos para `AnyThing` e `AnotherThing`. Para obter mais informações, consulte a opção [Consultas de exemplo do objeto](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Versão mais recente do AWS IoT Device Tester for FreeRTOS**  

| **Informações solicitadas** | **Consulta** | **Resultado** | 
| --- | --- | --- | 
|  objetos que têm uma versão de pacote específica instalada  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  objetos que não têm uma versão específica do pacote instalada  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Qualquer dispositivo usando uma versão de pacote cujo ID do pacote seja maior que 1.500  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Objetos que têm um pacote específico instalado e com mais de um pacote instalado  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Coleta da distribuição da versão do pacote por meio de `getBucketsAggregation`
<a name="package-version-distribution"></a>

Além do painel **Discovery** no AWS IoT console, você também pode obter informações sobre a distribuição da versão do pacote usando a operação da [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API. Para obter as informações de distribuição da versão do pacote, você precisa fazer o seguinte:
+ Defina um campo personalizado na indexação da frota para cada pacote de software. **Nota:** Criação dos campos personalizados conta para [AWS IoT service quotas para indexação de frota](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). 
+ Formate o campo personalizado da seguinte forma:

  `shadow.name.$package.reported.<packageName>.version`

Para obter mais informações, consulte a seção [Campos personalizados](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) na indexação de AWS IoT frotas.

# Preparando AWS IoT trabalhos
<a name="preparing-jobs-for-service-package-catalog"></a>

AWS IoT Device Management O Software Package Catalog estende os AWS IoT trabalhos por meio de parâmetros de substituição e integração com indexação de AWS IoT frotas, grupos dinâmicos de coisas e o item AWS IoT reservado chamado shadow.

**nota**  
 Para usar toda a funcionalidade que o Software Package Catalog oferece, você deve criar estas funções e políticas AWS Identity and Access Management (IAM): [direitos de AWS IoT trabalhos para implantar versões de pacotes](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) e [direitos de AWS IoT trabalhos para atualizar a sombra nomeada reservada](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Para obter mais informações, consulte [Preparação de segurança](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html).

## Parâmetros de substituição para trabalhos AWS IoT
<a name="substitution-parameters"></a>

Você pode usar parâmetros de substituição como um espaço reservado em seu documento de AWS IoT trabalho. 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 entre `version::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` em `CreateJob` e `DescribeJob`.
+ **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](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **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](#preparing-to-deploy).

No Console de gerenciamento da AWS, 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” em `DescribeJob` e `GetJobDocument` APIs, 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 o `DescribeJob` e `GetJobDocument` APIs:
+ `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 trabalhos, criação de documentos de trabalho e implantação de trabalhos, consulte [Trabalhos](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html).

## Preparação do documento de trabalho e versão do pacote para implantação
<a name="preparing-to-deploy"></a>

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 Console de gerenciamento da AWS, 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 novo pacote. Você pode aproveitar AWS IoT para gerar automaticamente um arquivo de instruções a partir dos atributos da versão do pacote usando *Iniciar a partir do arquivo AWS IoT recomendado* ou usar seu documento de trabalho existente armazenado em um bucket do Amazon S3 usando *Use 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`CreatePackageVersion`, como, ou `GetPackageVersion``UpdatePackageVersion`, `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](key-concepts-jobs.md#basic-concepts-jobs).

  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 de `published`, 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:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` 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.
**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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html).

  Para acessar os artefatos da versão do pacote no bucket do Amazon S3 ao usar a operação de API `CreatePackageVersion` ou `UpdatePackageVersion`, você deve ter as seguintes permissões:  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:GetObjectVersion",
              "Resource": "arn:aws:s3:::bucket-name/key-name"
          }
      ]
  }
  ```

  Para obter mais informações sobre o atributo de versão `artifact` nas operações `UpdatePackageVersion` da API `CreatePackageVersion` [CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)e, consulte [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)e.

  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 status `published`, 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 status `draft`.

**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 por `destinationPackageVersions` para comandos de API e CLI e `VersionARN` no Console de gerenciamento da AWS. 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 API `CreateJob` ou `CreateJobTemplate`, 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 estiver satisfeito com a versão do pacote, publique-a por meio da página de detalhes do pacote de software no AWS IoT console ou emitindo a operação da [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. Em seguida, você pode referenciar a versão do pacote ao criar o trabalho por meio do AWS IoT console ou emitindo a operação da [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API.

## Nomeação dos pacotes e das versões durante a implantação
<a name="naming-package-versions"></a>

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](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

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 ` da API, consulte [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Segmentação de empregos por meio de AWS IoT grupos dinâmicos
<a name="jobs-and-dynamic-groups"></a>

O Catálogo de pacotes de software trabalha com [indexação de frota](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), [trabalhos da AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) e [grupos de coisas dinâmicas da AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) para filtrar e direcionar dispositivos na frota a fim de 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 coisas para um AWS IoT trabalho. 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](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Versões reservadas nomeadas de sombra e pacote
<a name="reserved-shadow-and-package-versions"></a>

Se configurado, o AWS IoT Jobs pode atualizar uma coisa reservada chamada shadow (`$package`) quando o trabalho for concluído 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 algo AWS IoT Core sem associar a versão do pacote instalado.
+ AWS IoT Jobs não está configurado para atualizar a coisa reservada chamada shadow.
+ 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 AWS IoT Jobs para atualizar a versão do pacote no reservado chamado shadow (`$package`). Atualizar o parâmetro de versão na `$package` sombra por meio de outros processos (como chamadas de API manuais ou programáticas) quando o AWS IoT Jobs também está configurado 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 [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_UpdateThingShadow.html). Para obter mais informações, consulte [Associando uma versão de pacote a uma AWS IoT coisa](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html).

**nota**  
Associar uma versão do pacote a AWS IoT algo 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
<a name="uninstalling-packages-and-versions"></a>

`$null`é um espaço reservado que solicita que o serviço AWS IoT Jobs remova o pacote de software e a versão do pacote existentes do dispositivo chamado shadow. `$package` Para obter mais informações, consulte [Sombra nomeada reservada.](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow)

Para usar esse recurso, substitua o nome da versão no final do [destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon Resource Name (ARN) por. `$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"]
```

# Conceitos básicos do Catálogo de pacotes de software
<a name="getting-started-with-software-package-catalog"></a>

Você pode criar e manter o Catálogo AWS IoT Device Management de Pacotes de Software por meio das Console de gerenciamento da AWS operações de AWS IoT Core API e AWS Command Line Interface (AWS CLI).

**nota**  
Habilitar a indexação de AWS IoT frotas é um requisito para usar o Software Package Catalog. Operações básicas, como criar uma versão de pacote de software no Console de gerenciamento da AWS e usar o comando da `CreatePackage` API, falharão sem a indexação de AWS IoT frota ativada.  
Para obter mais informações sobre como usar a indexação de AWS IoT frotas com o Software Package Catalog, consulte[Preparação da indexação de frota](preparing-fleet-indexing.md).

**Como usar o console**

Para usar o Console de gerenciamento da AWS, faça login em sua AWS conta e navegue até [AWS IoT Core](https://console.aws.amazon.com/iot/home). No painel de navegação, escolha a opção **Pacotes do software**. Você pode criar e gerenciar pacotes e suas versões nesta seção.

**Uso de operações de API ou CLI**

Você pode usar as operações de AWS IoT Core API para criar e gerenciar recursos do Software Package Catalog. Para obter mais informações, consulte [Referência [AWS SDKs e kits de ferramentas de AWS IoT](https://aws.amazon.com/developer/tools/) API](https://docs.aws.amazon.com/iot/latest/apireference/). Os AWS CLI comandos também gerenciam seu catálogo. Para obter mais informações, consulte a opção [AWS IoT Referência de comandos da CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Criação de um pacote de software e uma versão do pacote](creating-package-and-version.md)
+ [Implantando uma versão do pacote por meio de trabalhos AWS IoT](deploying-package-version.md)
+ [Associando uma versão de pacote a qualquer coisa AWS IoT](associating-package-version.md)

# Criação de um pacote de software e uma versão do pacote
<a name="creating-package-and-version"></a>

Você pode usar as etapas a seguir para criar um pacote e uma versão inicial por meio do Console de gerenciamento da AWS.

**Para criar um pacote de software**

1. Faça login na sua AWS conta e navegue até o [AWS IoT console](https://console.aws.amazon.com/iot/home). 

1.  No painel de navegação lateral, selecione **Pacotes do software**. 

1.  Na página do **AWS IoT pacote de software**, selecione **Criar pacote**. A caixa de diálogo **Habilitar dependências para gerenciamento de pacotes** é exibida. 

1.  Em **indexação de frota**, selecione **Adicionar pacotes de software e versão do dispositivo**. Isso é necessário para o Catálogo de pacotes de software e fornece indexação de frota e métricas sobre sua frota. 

1. [Opcional] Se você quiser que os AWS IoT trabalhos atualizem a sombra nomeada reservada quando os trabalhos forem concluídos com êxito, selecione **Atualizar automaticamente as sombras dos trabalhos**. Se você não quiser que os AWS IoT trabalhos façam essa atualização, deixe essa caixa de seleção desmarcada.

1.  [Opcional] Para conceder aos AWS IoT trabalhos o direito de atualizar a sombra nomeada reservada, em **Selecionar função**, escolha **Criar função**. Se você não quiser que os AWS IoT trabalhos façam essa atualização, essa função não é necessária. 

1. Crie ou selecione uma função.

   1. Se você **não tiver uma função** para essa finalidade: Quando a caixa de diálogo **Criar função** for exibida, insira um **Nome de função** e escolha **Criar**.

   1. Se **você tiver uma função** para essa finalidade: em **Selecionar função**, escolha sua função e, em seguida, certifique-se de que a caixa de seleção **Anexar política ao perfil do IAM** esteja marcada.

1. Selecione a opção **Confirmar**. A página **Criar novo pacote** é exibida.

1. Em **Detalhes do pacote**, insira um **Nome do pacote**.

1. Em **Descrição do pacote**, insira as informações para ajudá-lo a identificar e gerenciar esse pacote.

1. [Opcional] Você pode usar tags para ajudar a categorizar e gerenciar esse pacote. Para adicionar tags, expanda **Tags**, escolha **Adicionar** tag e insira um par de valores-chave. É possível inserir até 50 tags. Para obter mais informações, consulte Como [marcar seus AWS IoT recursos](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Para adicionar uma versão do pacote ao criar um novo pacote**

1. Em **Versão inicial**, insira o **Nome da versão**.

   Recomendamos usar o [SemVer formato](https://semver.org/) (por exemplo,`1.0.0.0`) para identificar de forma exclusiva a versão do seu pacote. Você também pode usar uma estratégia de formatação diferente que melhor se adapte ao seu caso de uso. Para obter mais informações, consulte [Ciclo de vida da versão do pacote](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. Em **Descrição da versão**, insira as informações que ajudarão você a identificar e gerenciar essa versão do pacote.
**nota**  
A caixa de seleção **Versão padrão** está desativada porque as versões do pacote são criadas em um estado `draft`. Você pode nomear a versão padrão após criar a versão do pacote e quando você altera o estado para `published`. Para obter mais informações, consulte [Ciclo de vida da versão do pacote](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Opcional] Para ajudá-lo a gerenciar essa versão ou comunicar informações aos seus dispositivos, insira um ou mais pares de nome-valor para os **atributos da versão**. Escolha a opção **Adicionar atributo** para cada par nome-valor inserido. Para obter mais informações, consulte [Atributos de versão](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Opcional] Você pode usar tags para ajudar a categorizar e gerenciar esse pacote. Para adicionar tags, expanda **Tags**, escolha **Adicionar** tag e insira um par de valores-chave. É possível inserir até 50 tags. Para obter mais informações, consulte Como [marcar seus AWS IoT recursos](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Escolha **Próximo**.

**Associar a lista de materiais de software a uma versão do pacote (opcional)**

1. Na **Etapa 3: Versão SBOMs (opcional)** na janela de **configurações do SBOM**, escolha o formato de arquivo SBOM padrão e o modo de validação usados para validar sua lista de materiais de software antes que ela seja associada à versão do pacote.

1. Na janela **Adicionar arquivo da SBOM**, insira o nome do recurso da Amazon (ARN) representando seu bucket do Amazon S3 com versionamento e o formato de arquivo da SBOM preferido se o tipo padrão não funcionar.
**nota**  
Você pode adicionar um único arquivo SBOM ou um único arquivo zip contendo vários SBOMs se tiver mais de uma lista de materiais de software para a versão do seu pacote. 

1. Na janela **Arquivo da SBOM adicionado**, você pode visualizar o arquivo SBOM adicionado para a versão do pacote.

1. Escolha **Criar pacote e versão**. A página da versão do pacote é exibida e você pode ver o status de validação do arquivo da SBOM na janela **Arquivo da SBOM adicionado**. O status inicial será `In progress` quando o arquivo da SBOM for validado. 
**nota**  
Os status de validação do arquivo da SBOM são `Invalid file`, `Not started`, `In progress`, `Validated (SPDX)`, `Validated (CycloneDX)` e os motivos da falha de validação.

# Implantando uma versão do pacote por meio de trabalhos AWS IoT
<a name="deploying-package-version"></a>

Você pode usar as etapas a seguir para implantar uma versão do pacote por meio do Console de gerenciamento da AWS.

**Pré-requisitos:**

Antes de começar, faça o seguinte:
+ Registre AWS IoT coisas com AWS IoT Core. Para obter instruções sobre como adicionar seus dispositivos AWS IoT Core, consulte [Criar um objeto](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Opcional] Crie um grupo de AWS IoT coisas ou grupo dinâmico para atingir os dispositivos nos quais você implantará a versão do pacote. Para obter instruções sobre como criar um grupo de objetos, consulte [Criar um grupo de objetos estático](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Para obter instruções sobre como criar um grupo de objetos dinâmicas, consulte [Criar um grupo de objetos dinâmicas](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Crie um pacote de software e uma versão do pacote. Para obter mais informações, consulte [Criação de um pacote de software e uma versão do pacote](creating-package-and-version.md).
+ Criar um documento de trabalho. Para obter mais informações, consulte [Preparação do documento de trabalho e a versão do pacote para implantação](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Para implantar um AWS IoT trabalho**

1. No [AWS IoT console](https://console.aws.amazon.com/iot/home), escolha **Pacotes de software**.

1. Escolha o pacote de software que você deseja implantar. A página de **detalhes do pacote de software** é exibida.

1. Escolha a versão do pacote que você deseja implantar, em **Versões**, e escolha **Implantar versão do trabalho**.

1. Se esta for sua primeira vez implantando um trabalho por meio deste portal, uma caixa de diálogo que descreve os requisitos será exibida. Revise as informações e selecione **Confirmar**.

1. Insira um nome para a implantação ou deixe o nome gerado automaticamente no campo **Nome**.

1. [Opcional] No campo **Descrição**, insira uma descrição que identifique a finalidade ou o conteúdo da implantação ou deixe as informações geradas automaticamente. 

   **Nota:** recomendamos que você não use informações de identificação pessoal nos campos Nome e descrição do trabalho.

1. [Opcional] Adicione qualquer tag para associar a essa tarefa.

1. Escolha **Próximo**.

1. Em **Objetivos da tarefa**, escolha as objetos ou grupos de objetos que devem receber a tarefa.

1. No campo **Arquivo de tarefa**, especifique o arquivo JSON do documento de trabalho.

1. **Integração do Open Jobs com o serviço Catálogo de pacotes**.

1. Selecione os pacotes e as versões especificados em seu documento de trabalho.
**nota**  
É necessário escolher os mesmos pacotes e versões de pacotes especificados no documento de trabalho. Você pode incluir mais, mas a tarefa emitirá instruções somente para os pacotes e versões incluídos no documento de trabalho. Para obter mais informações, consulte [Nomeando os pacotes e as versões durante a implantação](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Escolha **Próximo**.

1. Na página Configuração da tarefa, selecione um dos seguintes tipos de tarefa na caixa de diálogo Configuração da tarefa:
   + **Trabalho de snapshot**: um trabalho de instantâneo é concluído quando termina sua execução nos dispositivos e grupos de destino.
   + **Trabalho contínuo:** um trabalho contínuo se aplica a grupos de objetos e é executado em qualquer dispositivo que você adicione posteriormente a um grupo-alvo especificado.

1. Na caixa de diálogo **Configurações adicionais - opcionais**, revise as seguintes configurações de Trabalho opcionais e faça suas seleções. Para obter mais informações, consulte [Configurações de implantação, agendamento e cancelamento de tarefas ](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) e [Tempo limite de execução do trabalho e novas configurações](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry).
   + Configuração de distribuição
   + Configuração de agendamento
   + Configuração de tempo limite de execução de trabalhos
   + Configuração de repetição de execuções de tarefas
   + Configuração de anulação

1. Revise as seleções de tarefas e escolha **Enviar**.

Depois de criar a tarefa, o console gera uma assinatura JSON e a coloca no seu documento de trabalho. Você pode usar o AWS IoT console para ver o status de um trabalho, cancelar ou excluir um trabalho. Para gerenciar trabalhos, acesse o [Hub de trabalhos do console.](https://console.aws.amazon.com/iot/home#/jobhub)

# Associando uma versão de pacote a qualquer coisa AWS IoT
<a name="associating-package-version"></a>

Depois de instalar o software em seu dispositivo, você pode associar uma versão do pacote a uma AWS IoT coisa reservada chamada shadow. Se os AWS IoT trabalhos tiverem sido configurados para atualizar o item chamado shadow reservado após a implantação e conclusão bem-sucedida do trabalho, você não precisará concluir esse procedimento. Para obter mais informações, consulte [Sombra nomeada reservada](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Pré-requisitos:**

Antes de começar, faça o seguinte:
+ Crie qualquer AWS IoT coisa, ou coisas, e estabeleça a telemetria por meio de. AWS IoT Core Para obter mais informações, consulte [Introdução ao AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html). 
+  Crie um pacote de software e uma versão do pacote. Para obter mais informações, consulte [Criação de um pacote de software e uma versão do pacote](creating-package-and-version.md). 
+  Instale o software da versão do pacote no dispositivo. 

**nota**  
Associar uma versão do pacote a AWS IoT algo não atualiza nem instala o software no dispositivo físico. A versão do pacote deve ser implantada no dispositivo. 

**Para associar uma versão de pacote a qualquer AWS IoT coisa**

1. No painel de navegação do [AWS IoT console](https://console.aws.amazon.com/iot/home), expanda o menu **Todos os dispositivos** e escolho objeto**s**.

1. Identifique o AWS IoT item que você deseja atualizar na lista e escolha o nome do item para exibir sua página de detalhes.

1. Na seção **Detalhes**, escolha **Pacotes e versões**.

1.  Escolha **Adicionar ao pacote e à versão**. 

1.  Em **Escolher um pacote de dispositivo**, escolha o pacote de software desejado. 

1.  Em **Escolher uma versão**, escolha a versão do software que você deseja. 

1.  Escolha **Adicionar pacote do dispositivo**. 

    O pacote e a versão aparecem na lista **Pacotes e versões selecionados**. 

1.  Repita essas etapas para cada pacote e versão que você quer associar a esse objeto. 

1.  Ao terminar, escolha **Adicionar detalhes do pacote e da versão**. A página **Detalhes do objeto** é aberta e você pode ver o novo pacote e a nova versão na lista. 