

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

Con AWS IoT Device Management Software Package Catalog, puede mantener un inventario de los paquetes de software y sus versiones. Puede asociar las versiones de los paquetes a elementos individuales y a grupos de elementos AWS IoT dinámicos e implementarlos mediante procesos o [AWS IoT trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) internos. 

El paquete de software contiene una o más versiones de paquete, que es una colección de archivos que se pueden implementar como una sola unidad. Las versiones del paquete pueden contener firmware, actualizaciones del sistema operativo, aplicaciones de dispositivos, configuraciones y parches de seguridad. A medida que el software evoluciona con el tiempo, puede crear una nueva versión del paquete e implementarla en su flota. 

El centro AWS IoT de paquetes de software se encuentra dentro AWS IoT Core. Puede utilizar el hub para registrar y mantener de forma centralizada el inventario y los metadatos de sus paquetes de software, lo que crea un catálogo de paquetes de software y sus versiones. Puede optar por agrupar los dispositivos en función de los paquetes de software y las versiones de paquetes implementadas en el dispositivo. Esta característica brinda la oportunidad de mantener el inventario de paquetes del lado del dispositivo como una sombra, asociar y agrupar los dispositivos en función de las versiones, y visualizar la distribución de las versiones de los paquetes en toda la flota mediante las métricas de la flota.

Si ha establecido un sistema interno de implementación de software, puede seguir utilizando ese proceso para implementar las versiones de sus paquetes. Si no tiene un proceso de implementación establecido o si lo prefiere, le recomendamos que utilice [trabajos de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) para usar las características del Catálogo de Paquetes de Software. Para obtener más información, consulte [Preparación AWS IoT de trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

**Topics**
+ [Preparación para utilizar el Catálogo de paquetes de software](preparing-to-use-software-package-catalog.md)
+ [Preparación de la seguridad](preparing-security.md)
+ [Preparación para la indexación de flotas](preparing-fleet-indexing.md)
+ [Preparando trabajos AWS IoT](preparing-jobs-for-service-package-catalog.md)
+ [Introducción al Catálogo de paquetes de software](getting-started-with-software-package-catalog.md)

# Preparación para utilizar el Catálogo de paquetes de software
<a name="preparing-to-use-software-package-catalog"></a>

La siguiente sección proporciona una descripción general del ciclo de vida de la versión del paquete e información para usar AWS IoT Device Management Software Package Catalog. 

## Ciclo de vida de la versión de paquete
<a name="package-version-lifecycle"></a>

La versión de un paquete puede evolucionar a través de los siguientes estados del ciclo de vida: `draft`, `published` y`deprecated`. También puede ser `deleted`.

![\[El ciclo de vida de la versión del paquete con el borrador, publicado y obsoleto. También se puede eliminar.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/package-catalog-version-lifecycle.png)

+ **Borrador**

  Cuando se crea una versión de paquete, este tiene el estado `draft`. Este estado indica que el paquete de software se está preparando o está incompleto.

  Mientras la versión del paquete tenga este estado, no se podrá implementar. Puede editar la descripción, los atributos y las etiquetas de la versión del paquete.

  Puede realizar la transición de una versión de paquete que esté en `draft` estado `published` o en estado `deleted` utilizando la consola [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)o realizando operaciones de [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Publicado** 

  Cuando la versión del paquete esté lista para implementarse, pase la versión del paquete al estado `published`. Mientras se encuentre en este estado, puede elegir identificar la versión del paquete como la versión predeterminada editando el paquete de software en la consola o mediante la operación de la [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API. En este estado, solo puede editar la descripción y las etiquetas.

  Puedes hacer la transición de una versión de paquete que esté `deleted` en ese `published` estado a `deprecated` la consola o realizando las operaciones de [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)o las mismas.
+ **Obsoleto**

  Si hay disponible una nueva versión del paquete, puede realizar la transición a una versión anterior del paquete a `deprecated`. De todos modos, puede seguir implementando trabajos con una versión de paquete obsoleta. También puede nombrar una versión de paquete obsoleta como la versión predeterminada y editar solo la descripción y las etiquetas. 

  Considere la posibilidad de hacer la transición de una versión de paquete a `deprecated` cuando la versión esté desactualizada pero todavía usa dispositivos que tienen la versión anterior o deba mantenerla debido a la dependencia del tiempo de ejecución. 

  Puedes realizar la transición de una versión de paquete que se `deleted` encuentre en ese `deprecated ` estado a `published` o a través de la consola o ejecutando las [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)operaciones de [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
+ **Eliminado**

  Si ya no quieres usar una versión de paquete, puedes eliminarla desde la consola o mediante la operación de [DeletePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackageVersion.html)API.
**nota**  
Si elimina una versión de paquete mientras hay trabajos pendientes que hacen referencia a ella, recibirá un mensaje de error cuando el trabajo finalice con éxito e intente actualizar la sombra con nombre reservado.  
 Si la versión del paquete de software que desea eliminar aparece como la versión del paquete por defecto, primero debe actualizar el paquete para nombrar otra versión como predeterminada o dejar el campo sin nombre. Puede hacerlo mediante la consola o la operación de [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. (Para eliminar cualquier versión de paquete con nombre predeterminado, defina el [unsetDefaultVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html#iot-UpdatePackage-request-unsetDefaultVersion)parámetro en true cuando ejecute la operación de [UpdatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackage.html)API).

  Si elimina un paquete de software a través de la consola, se eliminan todas las versiones del paquete asociadas a ese paquete, a menos que una de ellas se nombre como versión por defecto.

## Convenciones de nomenclatura de versiones de paquetes
<a name="package-version-naming"></a>

Al asignar nombres a las versiones de los paquetes, es importante planificar y aplicar una estrategia de nomenclatura lógica para que usted y los demás puedan identificar fácilmente la última versión del paquete y su progresión. Debe proporcionar un nombre de versión al crear la versión del paquete, pero la estrategia y el formato dependen en gran medida de su modelo de negocio.

Como práctica recomendada, recomendamos utilizar el formato de control de versiones [SemVer](https://semver.org/)semántico. Por ejemplo, `1.2.3` donde `1` es la versión principal para los cambios funcionalmente incompatibles, `2` la versión principal para los cambios compatibles desde el punto de vista funcional y `3` la versión de parche (para las correcciones de errores) Para obtener más información, consulte [Semantic Versioning 2.0.0](https://semver.org/). Para obtener más información sobre los requisitos de nombre de la versión del paquete, consulta [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax) en la guía de referencia de la AWS IoT API.

## Versión predeterminada
<a name="default-version"></a>

Establecer una versión como predeterminada es opcional. Puede agregar o eliminar versiones de paquete predeterminadas. También puede implementar una versión de paquete que no figure como la versión predeterminada.

Al crear una versión de paquete, se coloca en un estado `draft` y no se le puede asignar el nombre de versión predeterminada hasta que se haga la transición de la versión del paquete a publicada. El catálogo de paquetes de software no selecciona automáticamente una versión como predeterminada ni actualiza una versión de paquete más reciente como predeterminada. Debe asignar un nombre intencionado a la versión del paquete que elija a través de la consola o mediante la operación de [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

## Atributos de la versión
<a name="version-attributes"></a>

Los atributos de versión y sus valores contienen información importante sobre las versiones de los paquetes. Se recomienda definir los atributos de uso general para un paquete o una versión del paquete. Por ejemplo, puede crear un par nombre-valor para la plataforma, la arquitectura, el sistema operativo, la fecha de lanzamiento, el autor o la URL de Amazon S3.

 Al crear un AWS IoT trabajo con un documento de trabajo, también puede optar por utilizar una variable de sustitución (`$parameter`) que haga referencia al valor de un atributo. Para obtener más información, consulte [Preparación AWS IoT de trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html).

Los atributos de versión que se utilizan en las versiones de paquetes no se añadirán automáticamente a la sombra reservada denominada y no se podrán indexar ni consultar directamente a través de la indexación de flotas. Para indexar o consultar los atributos de la versión del paquete mediante la indexación de flotas, puede rellenar el atributo de la versión en la sombra reservada con nombre.

Se recomienda que el parámetro del atributo de versión de la reserva se llame Shadow Capture las propiedades informadas por el dispositivo, como el sistema operativo y el tiempo de instalación. También se pueden indexar y consultar mediante la indexación de flotas.

No es necesario que los atributos de la versión sigan una convención de nomenclatura específica. Puede crear pares de nombre-valor para satisfacer las necesidades de su empresa. El tamaño combinado de todos los atributos de una versión de paquete está limitado a 3 KB. Para obtener más información, consulte [Límites de paquetes de software y versiones de paquetes del Catálogo de paquetes de software](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#software_package_catalog_limits).

**Uso de todos los atributos de un documento de trabajo**

Puede hacer que todos los atributos de la versión del paquete se añadan automáticamente a la implementación de su trabajo para los dispositivos seleccionados. Para utilizar automáticamente todos los atributos de la versión del paquete mediante programación en un comando de la API o la CLI, consulte el siguiente ejemplo de documento de trabajo:

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

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

La lista de materiales de software (SBOM) proporciona un repositorio central para todos los aspectos del paquete de software. Además de almacenar los paquetes de software y las versiones de los paquetes, puede almacenar la lista de materiales del software (SBOM) asociada a cada versión del AWS IoT Device Management paquete en Software Package Catalog. El paquete de software contiene una o más versiones de paquete y cada versión de paquete consta de uno o más componentes. Cada uno de esos componentes que sirven de base para componer una versión de paquete específica se puede describir y catalogar mediante una lista de materiales de software. Los estándares del sector para la lista de materiales de software admitidos son SPDX y CyclonedX. Cuando se crea una SBOM por primera vez, se somete a validación según el formato estándar del sector SPDX y CyclonedX. Para obtener más información sobre SPDX, consulte [System Package Data Exchange](https://spdx.dev/). Para obtener más información sobre CyclonedX, consulte [CycloneDX](https://cyclonedx.org/).

La lista de materiales de software describe todos los aspectos de los componentes de una versión de paquete específica, como la información del paquete, la información del archivo y otros metadatos pertinentes. Consulte el siguiente ejemplo de la estructura de un documento de una lista de materiales de software en formato SPDX:

![\[Un ejemplo de una SBOM en formato SPDX.\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/spdx-2.3-document.png)


### Ventajas de la lista de materiales de software
<a name="spc-sbom-benefits"></a>

Una de las principales ventajas de añadir la lista de materiales de software para una versión de paquete en el Catálogo de paquetes de software es la administración de vulnerabilidades.

**Administración de vulnerabilidades**

Evaluar y mitigar su vulnerabilidad ante los aparentes riesgos de seguridad de los componentes de software sigue siendo fundamental para proteger la integridad de la flota de dispositivos. Al añadir la lista de materiales de software almacenada en el Catálogo de paquetes de software para cada versión de paquete, puede exponer de forma proactiva las brechas de seguridad al saber qué dispositivos están en riesgo en función de su versión de paquete y de la SBOM usando su propia solución interna de administración de vulnerabilidades. Puede implementar correcciones en los dispositivos afectados y proteger su flota de dispositivos.

### Almacenamiento de la lista de materiales de software
<a name="spc-sbom-storage"></a>

La lista de materiales de software (SBOM) de cada versión del paquete de software se almacena en un bucket de Amazon S3 con la característica de control de versiones de Amazon S3. El bucket de Amazon S3 que almacena la SBOM debe estar ubicado en la misma región en la que se creó la versión del paquete. El bucket de Amazon S3 que utiliza la característica de control de versiones mantiene diversas variantes de un objeto en el mismo bucket. Para obtener más información sobre el uso del control de versiones en un bucket de Amazon S3, consulte [Uso de control de versiones en buckets de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

**nota**  
Cada versión del paquete de software puede tener varios archivos SBOM asociados a él, pero los archivos SBOM deben almacenarse en un único archivo zip.

La clave de Amazon S3 y el ID de versión específicos de su bucket se utilizan para identificar de forma exclusiva cada versión de una lista de materiales de software para una versión de paquete.

**nota**  
Para una versión de paquete con un único archivo SBOM, puede almacenar ese archivo SBOM en su bucket de Amazon S3 como archivo zip.  
Para una versión de paquete con varios archivos SBOM, debe colocar todos los archivos SBOM en un único archivo zip y, a continuación, almacenar ese archivo zip en su bucket de Amazon S3.  
Todos los archivos SBOM almacenados en un único archivo zip en ambos escenarios tienen el formato de archivo .json de SPDX o CyclonedX.

**Política de permisos**

Para poder AWS IoT actuar como el principal especificado para acceder a los archivos zip de la SBOM almacenados en el bucket de Amazon S3, necesita una política de permisos basada en los recursos. Consulte el siguiente ejemplo para conocer la política de permisos basada en recursos correcta:

****  

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

Para obtener más información sobre las políticas de permisos basadas en recursos, consulte [AWS IoT políticas basadas en recursos](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies).

**Actualización de la SBOM**

Puede actualizar la lista de materiales del software tantas veces como sea necesario para proteger y mejorar su flota de dispositivos. Cada vez que se actualiza la lista de materiales de software en el bucket de Amazon S3, el ID de versión cambia y usted debe asociar la nueva URL del bucket de Amazon S3 a la versión del paquete de software correspondiente. Verá el nuevo ID de versión en la columna **ID de versión del objeto de Amazon S3** en la página de la versión del paquete en la Consola de administración de AWS. Además, puede usar la operación de la API `[GetPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_GetPackageVersion.html)` o el comando de la CLI `[get-package-version](https://docs.aws.amazon.com/cli/latest/reference/iot/get-package-version.html)` para ver el nuevo ID de versión.

**nota**  
La actualización de la lista de materiales de software, que generará un nuevo ID de versión, no provocará la creación de una nueva versión del paquete.

Para obtener más información acerca de las claves de objeto de Amazon S3, consulte [Creación de nombres de clave de objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

## AWS IoT Habilitar la indexación de la flota
<a name="enable-fleet-indexing"></a>

Habilitar AWS IoT la indexación de la flota es un requisito para utilizar AWS IoT Device Management Software Package Catalog. Para aprovechar la indexación de flotas de AWS IoT con el Catálogo de paquetes de software, establezca la sombra con nombre reservada (`$package`) como el origen de datos para cada dispositivo que desee indexar y del que recopilar métricas. Para obtener más información sobre las sombras con nombre reservadas, consulte [Sombra con nombre reservado](#reserved-named-shadow).

La indexación de flotas proporciona un soporte que permite agrupar los AWS IoT elementos mediante grupos de elementos dinámicos que se filtran por versión del paquete de software. Por ejemplo, la indexación de flotas puede identificar elementos que tienen o no una versión de paquete específica instalada, que no tienen ninguna versión de paquete instalada o que coinciden con pares de nombre y valor específicos. Por último, la indexación de la flota proporciona métricas estándar y personalizadas que puede utilizar para obtener más información sobre el estado de su flota de dispositivos. Para obtener más información, consulte [Preparación para la indexación de flotas](preparing-fleet-indexing.md).

**nota**  
Habilitar la indexación de flotas para el Catálogo de Paquetes de Software incurre en costes de servicio estándar. Para obtener más información, consulte [Precios de AWS IoT Device Management](https://aws.amazon.com/iot-device-management/pricing/). 

## Sombra con nombre reservado
<a name="reserved-named-shadow"></a>

El nombre reservado shadow, `$package`, refleja el estado de los paquetes de software y las versiones de los paquetes instalados en el dispositivo. La indexación de flotas utiliza la sombra con nombre reservado como origen de datos para crear métricas estándar y personalizadas que le permitan consultar el estado de su flota. Para más información, consulte [Preparación de la indexación de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html).

Una sombra con nombre reservado es similar a una [sombra con nombre](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html), con la excepción de que su nombre está predefinido y no se puede cambiar. Además, la sombra reservada con nombre asignado no se actualiza con los metadatos y solo usa las palabras clave `version` y `attributes`.

Las solicitudes de actualización que incluyan otras palabras clave, por ejemplo `description`, recibirán una respuesta de error en relación con el tema `rejected`. Para más información, consulte [Mensajes de error de Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-error-messages.html).

Se puede crear cuando se crea AWS IoT algo a través de la consola, cuando un AWS IoT trabajo se completa correctamente y actualiza la sombra y si se ejecuta la operación de [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 obtener más información, consulta [UpdateThingShadow](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html#API_UpdateThingShadow)la guía para AWS IoT Core desarrolladores. 

**nota**  
La indexación de la sombra con nombre reservada no cuenta para el número de sombras con nombre que la indexación de flotas puede indexar. Para más información, consulte [Límites y cuotas de indexación de flotas AWS IoT Device Management](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). Además, si decides que los AWS IoT trabajos actualicen la sombra con el nombre reservado cuando un trabajo se complete correctamente, la llamada a la API se tendrá en cuenta para tus operaciones de registro y Device Shadow, y puede suponer un coste. Para obtener más información, consulta [los límites y cuotas de los AWS IoT Device Management trabajos y](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#job-limits) el tipo de datos de la [IndexingFilter](https://docs.aws.amazon.com/iot/latest/apireference/API_IndexingFilter.html)API.

**Estructura de la sombra `$package`**

La sombra reservada con el nombre contiene lo siguiente:

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

Las propiedades de la sombra se actualizan con la siguiente información:
+  `<packageName>`: el nombre del paquete de software instalado, que se actualiza con el parámetro [packageName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html#API_CreatePackage_RequestSyntax). 
+  `version`: El nombre de la versión del paquete instalado, que se actualiza con el parámetro [versionName](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html#API_CreatePackageVersion_RequestSyntax). 
+  `attributes`: metadatos opcionales almacenados por el dispositivo e indexados mediante la indexación de flotas. Esto permite a los clientes consultar sus índices en función de los datos almacenados. 
+ `version`: El número de versión de la sombra. Se incrementa automáticamente cada vez que se actualiza la sombra y comienza en `1`. 
+ `timestamp`: Indica cuándo se actualizó por última vez la sombra y se registra en tiempo [Unix](https://en.wikipedia.org/wiki/Unix_time).

Para obtener más información sobre el formato y el comportamiento de una sombra con nombre, consulte [Orden de los mensajes Servicio de sombra de dispositivo de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html#message-ordering). 

## Eliminar un paquete de software y sus versiones
<a name="deleting-packages-and-versions"></a>

Antes de eliminar un paquete de software, haga lo siguiente:
+ Confirme que el paquete y sus versiones no se estén implementando activamente. 
+ Elimine primero todas las versiones asociadas. Si una de las versiones está designada como la **versión predeterminada**, debe eliminar la versión predeterminada nombrada del paquete. Como la designación de una versión predeterminada es opcional, no hay ningún conflicto al eliminarla. Para eliminar la versión predeterminada del paquete de software, edítelo a través de la consola o utilice la operación de [ UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API.

Mientras no haya una versión de paquete predeterminada con nombre, puede usar la consola para eliminar un paquete de software y también se eliminarán todas sus versiones del paquete. Si utiliza una llamada a la API para eliminar paquetes de software, primero debe eliminar las versiones del paquete y, a continuación, el paquete de software. 

# Preparación de la seguridad
<a name="preparing-security"></a>

En esta sección se analizan los principales requisitos de seguridad para AWS IoT Device Management Software Package Catalog.

## Autenticación basada en recursos
<a name="resource-based-authorization"></a>

El Catálogo de paquetes de software utiliza la autorización basada en recursos para proporcionar una mayor seguridad al actualizar el software de su flota. Esto significa que debe crear una política AWS Identity and Access Management (IAM) que conceda derechos de ejecución `create` `read` `update``delete`, y `list` acciones para los paquetes de software y las versiones de los paquetes, y hacer referencia a los paquetes de software y las versiones de paquetes específicos que desee implementar en la `Resources` sección. También necesita estos derechos para poder actualizar la [sombra con nombre reservado](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow). Para hacer referencia a los paquetes de software y las versiones de paquete, debe incluir un nombre de recurso de Amazon (ARN) para cada entidad.

**nota**  
Si su intención es conceder derechos para las llamadas a la API en versiones de paquetes (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)), debe incluir *tanto* el paquete de software como la versión del paquete ARNs en la política. Si pretende que la política conceda derechos para las llamadas a la API de paquetes 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), y [DeletePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_DeletePackage.html)), debe incluir únicamente el ARN del paquete de software en la política.

Estructure el paquete de software y la versión del paquete de la ARNs siguiente manera:
+ Paquete de software: `arn:aws:iot:<region>:<accountID>:package/<packageName>/package` 
+ Versión de paquete: `arn:aws:iot:<region>:<accountID>:package/<packageName>/version/<versionName>` 

**nota**  
Existen otros derechos relacionados que podría incluir en esta política. Por ejemplo, puede incluir un ARN para `job`, `thinggroup` y `jobtemplate`. Para obtener más información y una lista completa de las opciones de políticas, consulte [Proteger usuarios y dispositivos con AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs-security.html).

Por ejemplo, si tiene un paquete de software y una versión de paquete con el siguiente nombre:
+ AWS IoT cosa: `myThing`
+ Nombre del paquete: `samplePackage`
+ Versión: `1.0.0`

La política podría parecerse al siguiente ejemplo:

****  

```
{
    "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: derechos para implementar versiones de paquetes
<a name="job-rights-deploy-versions"></a>

Por motivos de seguridad, es importante que conceda derechos para desplegar paquetes y versiones de paquetes, y que nombre los paquetes y versiones de paquetes específicos que están autorizados a desplegar. Para ello, debe crear un rol y una política de IAM que concedan permiso para implementar trabajos con versiones de paquetes. La política debe especificar las versiones del paquete de destino como recurso.

**Política de IAM**

La política de IAM otorga el derecho a crear un trabajo que incluya el paquete y la versión que se indican en la sección `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**  
Si desea implementar un trabajo que desinstale un paquete de software y una versión del paquete, debe autorizar un ARN donde esté la versión del paquete `$null`, como en los siguientes casos:

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

## AWS IoT Job: derechos para actualizar la sombra reservada con nombre
<a name="job-rights-update-reserved-named-shadow"></a>

Para permitir que los trabajos actualicen la sombra del nombre reservado de la cosa cuando el trabajo se complete correctamente, debe crear un rol y una política de IAM. Hay dos formas de realizar esta operación en la consola de AWS IoT . La primera es al crear un paquete de software en la consola. Si ve el cuadro de diálogo **Habilitar las dependencias para la administración de paquetes**, puede elegir usar un rol existente o crear uno nuevo. O bien, en la consola de AWS IoT , seleccione **Configuración**, seleccione **Administrar la indexación** y, a continuación, **Administrar la indexación de los paquetes y las versiones de los dispositivos**. 

**nota**  
Si decides que el servicio AWS IoT Job actualice la sombra con el nombre reservado cuando una tarea se complete correctamente, la llamada a la API se tendrá en cuenta para tus **operaciones de Device Shadow y registro**, y puede suponer un coste. Para obtener más información, consulte [Precios de AWS IoT Core](https://aws.amazon.com/iot-core/pricing/).

Cuando se utiliza la opción **Crear rol**, el nombre del rol generado comienza por `aws-iot-role-update-shadows` y contiene las siguientes políticas:

**Configuración un rol**

**Permisos**  
La política de permisos otorga los derechos para consultar y actualizar la sombra de la cosa. El parámetro `$package` del ARN del recurso apunta a la sombra con nombre reservado.    
****  

```
{
    "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"
            ]
        }
    ]
}
```

**Relación de confianza**  
Además de la política de permisos, el rol requiere una relación de confianza con AWS IoT Core para que la entidad pueda asumir el rol y actualizar la sombra nominal reservada.    
****  

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

**Configurar una política de usuario**

**iam: permiso PassRole **  
Por último, debes tener el permiso para transferir el rol AWS IoT Core cuando llames a la operación de la [ 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 Permisos de tareas para descargar desde Amazon S3
<a name="job-rights-download-job-document"></a>

El documento de trabajo se guarda en Amazon S3. Hace referencia a este archivo cuando realiza envíos a través de AWS IoT Jobs. Debe proporcionar a AWS IoT Jobs los derechos para descargar el archivo (`s3:GetObject`). También debe establecer una relación de confianza entre Amazon S3 y AWS IoT Jobs. Para obtener instrucciones sobre cómo crear estas políticas, consulte [Presigned URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) in [Managing Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html).

## Permisos para actualizar la lista de materiales de software para una versión de paquete
<a name="job-rights-update-sbom"></a>

Para actualizar la lista de materiales del software de una versión de paquete en los `Draft` estados de `Deprecated` ciclo de vida o ciclo de vida, necesita una AWS Identity and Access Management función y políticas para localizar la nueva lista de materiales del software en Amazon S3 y actualizar la versión del paquete en AWS IoT Core. `Published`

En primer lugar, colocará la lista de materiales del software actualizada en su bucket de Amazon S3 con control de versiones y llamará a la operación de la API `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` con el parámetro `sboms` incluido. A continuación, su director autorizado asumirá la función de IAM que creó, localizará la lista de materiales de software actualizada en Amazon S3 y actualizará la versión del paquete en el Catálogo de AWS IoT Core Paquetes de Software.

Se requieren las siguientes políticas para realizar esta actualización:

**Políticas**
+ **Política de confianza**: política que establece una relación de confianza con la entidad principal autorizada que asume el rol de IAM para que pueda localizar la lista de materiales de software actualizada de su bucket con control de versiones en Amazon S3 y actualizar la versión del paquete en 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 permisos**: política para acceder al bucket con control de versiones de Amazon S3 donde se almacena la lista de materiales del software para una versión de paquete y actualizar la versión del paquete en 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>"
                ]
            }
        ]
    }
    ```
+ **Permisos de rol** de transferencia: política que otorga permisos para transferir el rol de IAM a Amazon S3 y AWS IoT Core cuando se llama a la operación de `[UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)` 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**  
No puede actualizar la lista de materiales de software en una versión de paquete que haya pasado al estado del ciclo de vida `Deleted`.

Para obtener más información sobre la creación de un rol de IAM para un AWS servicio, consulte [Crear un rol para delegar permisos a un AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) servicio.

Para obtener más información sobre la creación de un bucket de Amazon S3 y cómo cargar objetos en él, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) y [Carga de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

# Preparación para la indexación de flotas
<a name="preparing-fleet-indexing"></a>

Con la indexación de AWS IoT flotas, puede buscar y agregar datos mediante el nombre reservado shadow ()`$package`. También puede agrupar AWS IoT cosas consultando los grupos de cosas [dinámicos [Sombra con nombre reservado](preparing-to-use-software-package-catalog.md#reserved-named-shadow) y los grupos de cosas dinámicos](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html). Por ejemplo, puedes encontrar información sobre qué AWS IoT cosas usan una versión de paquete específica, qué no tienen instalada una versión de paquete específica o no tienen ninguna versión de paquete instalada. Puede obtener más información mediante la combinación de atributos. Por ejemplo, identificar cosas que tienen una versión específica y que son de un tipo de cosa específico (como la versión 1.0.0 y el tipo de cosa de pump\$1sensor). Para obtener más información, consulte [Indexación de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html).

## Establecer la sombra `$package` como origen de datos
<a name="shadow-as-data-source"></a>

Para utilizar la indexación de flotas con el Catálogo de paquetes de software, debe habilitar la indexación de flotas, establecer la sombra con nombre como origen de datos y definir `$package` como filtro de sombra con nombre. Si no ha activado la indexación de flotas, puede habilitarla en este proceso. Desde [AWS IoT Core](https://console.aws.amazon.com/iot/home) en la consola, abra **Configuración**, elija **Gestionar indexación** y, a continuación, **Añadir sombras con nombre**, **Añadir paquetes y versiones de software del dispositivo** y **Actualizar**. Para obtener más información, consulte [Gestionar la indexación de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#thing-index). 

Alternativamente, puede activar la indexación de flotas cuando cree su primer paquete. Cuando aparezca el cuadro de diálogo **Habilitar las dependencias para la gestión de paquetes**, elija la opción de añadir paquetes y versiones del software del dispositivo como fuentes de datos para la indexación de la flota. Al seleccionar esta opción, también habilita la indexación de la flota.

**nota**  
Habilitar la indexación de flotas para el Catálogo de Paquetes de Software incurre en costes de servicio estándar. Para obtener más información, consulte [Precios de AWS IoT Device Management](https://aws.amazon.com/iot-device-management/pricing/).

## Las métricas se muestran en la consola
<a name="metrics-displayed-in-console"></a>

![\[Imagen de métricas estándar\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/images/package-catalog-discovery-metrics.png)


En la página de detalles del paquete de software de la AWS IoT consola, el panel **Discovery** muestra las métricas estándar recopiladas de forma `$package` oculta.
+ El gráfico de **distribución de la versión actual** muestra el número de dispositivos y el porcentaje de las 10 versiones más recientes del paquete que están asociadas a un elemento AWS IoT de entre todos los dispositivos asociados a este paquete de software. **Nota:** Si el paquete de software tiene más versiones de paquete que las indicadas en el gráfico, puede encontrarlas agrupadas en **Otras**.
+ El **gráfico histórico** muestra la cantidad de dispositivos asociados a las versiones de paquetes seleccionadas durante un período de tiempo específico. Al principio, el gráfico está vacío hasta que seleccione hasta 5 versiones del paquete y defina el rango de fechas y el intervalo de tiempo. Para seleccionar los parámetros del gráfico, elija **Configuración**. Los datos que se muestran en el **gráfico histórico** pueden ser diferentes a los del gráfico de **distribución de la versión actual** debido a la diferencia en el número de versiones de paquetes que se muestran y también a que puede elegir qué versiones de paquetes analizar en el **gráfico histórico**. **Nota:** Cuando selecciona una versión de paquete para visualizarla, se tiene en cuenta para el número máximo de límites de las métricas de la flota. Para más información, consulte [Límites y cuotas de indexación de flotas](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits).

Para ver otro método para obtener información sobre la recopilación de la distribución de versiones de paquetes, consulte [Recopilación de la distribución de versiones de paquetes mediante `getBucketsAggregation`](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-fleet-indexing.html#package-version-distribution).

## Patrones de consulta
<a name="query-patterns"></a>

La indexación de flotas con el Catálogo de paquetes de software utiliza la mayoría de las características compatibles estándar (como, por ejemplo, términos, frases y campos de búsqueda). Sin embargo, los operadores de comparación (por ejemplo, menor que `<` y mayor que `>`) y las consultas de `range` no están disponibles para la clave `version` de sombra con nombre reservado (`$package`). Estas consultas están disponibles para la clave `attributes`. Para obtener más información, consulte [Sintaxis de consultas](https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html).

### Datos de ejemplo
<a name="query-patterns-example-data"></a>

**Nota:** para obtener información sobre la sombra con nombre reservado y su estructura, consulte [Sombra con nombre reservado](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

En este ejemplo, se nombra un primer dispositivo `AnyThing` y tiene instalados los siguientes paquetes: 
+ Paquete de software: `SamplePackage`

  Versión de paquete: `1.0.0`

  ID del paquete. `1111`

La sombra tiene el siguiente aspecto:

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

Se nombra un segundo dispositivo `AnotherThing` y tiene instalado el siguiente paquete: 
+ Paquete de software: `SamplePackage`

  Versión de paquete: `1.0.0`

  ID del paquete. `1111`
+ Paquete de software: `OtherPackage`

  Versión de paquete: `1.2.5`

  ID del paquete. `2222`

La sombra tiene el siguiente aspecto:

```
{
    "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 ejemplo
<a name="sample-queries"></a>

En la siguiente tabla se muestran ejemplos de consultas basadas en las sombras de los dispositivos de ejemplo para `AnyThing` y `AnotherThing`. Para más información, consulte [Ejemplo de consultas sobre cosas](https://docs.aws.amazon.com/iot/latest/developerguide/example-queries.html). 


**Última versión de AWS IoT Device Tester for FreeRTOS**  

| **Información solicitada** | **Query** | **Resultado** | 
| --- | --- | --- | 
|  Cosas que tienen instalada una versión de paquete específica  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0`  |  `AnyThing`, `OtherThing`  | 
|  Cosas que tienen instalada una versión de paquete específica  |  `NOT shadow.name.$package.reported.OtherPackage.version:1.2.5`  |  `AnyThing`  | 
|  Cualquier dispositivo que utilice una versión de paquete cuyo identificador de paquete sea superior a 1500  |  `shadow.name.$package.reported.*.attributes.packageID>1500"`  |  `OtherThing`  | 
|  Cosas que tienen un paquete específico instalado y tienen más de un paquete instalado  |  `shadow.name.$package.reported.SamplePackage.version:1.0.0 AND shadow.name.$package.reported.totalCount:2`  |  `OtherThing`  | 

## Recopilación de la distribución de las versiones del paquete mediante `getBucketsAggregation`
<a name="package-version-distribution"></a>

Además del panel **Discovery** de la AWS IoT consola, también puede obtener información sobre la distribución de las versiones del paquete mediante la operación de [https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetBucketsAggregation.html)API. Para obtener la información de distribución de la versión del paquete, necesita lo siguiente:
+ Defina un campo personalizado en la indexación de flotas para cada paquete de software. **Nota:** La creación de campos personalizados cuenta para las cuotas de [servicio de indexación de la flota AWS IoT](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#fleet-indexing-limits). 
+ Formatee el campo personalizado de la siguiente manera:

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

Para obtener más información, consulta la sección [Campos personalizados](https://docs.aws.amazon.com/iot/latest/developerguide/managing-fleet-index.html#custom-field) de la indexación de AWS IoT flotas.

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

AWS IoT Device Management Software Package Catalog amplía las AWS IoT tareas mediante parámetros de sustitución e integración con la indexación de AWS IoT flotas, los grupos de cosas dinámicos y la AWS IoT cosa reservada llamada shadow.

**nota**  
 Para utilizar todas las funciones que ofrece Software Package Catalog, debe crear estas funciones y políticas AWS Identity and Access Management (de IAM): [derechos de AWS IoT trabajo para implementar versiones de paquetes](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-deploy-versions) y [derechos de AWS IoT trabajo para actualizar la sombra reservada denominada](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html#job-rights-update-reserved-named-shadow). Para más información, consulte [Preparación de la seguridad](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-security.html).

## Parámetros de sustitución de trabajos AWS IoT
<a name="substitution-parameters"></a>

Puede utilizar los parámetros de sustitución como marcador de posición en el documento de AWS IoT trabajo. Cuando el servicio de trabajos encuentra un parámetro de sustitución, dirige el trabajo al atributo de una versión de software determinada para el valor del parámetro. Puede utilizar este proceso para crear un único documento de trabajo y pasar los metadatos al trabajo mediante atributos de uso general. Por ejemplo, puede pasar una URL de Amazon Simple Storage Service (Amazon S3), un paquete de Nombre de recurso de Amazon (ARN) o una firma en el documento de trabajo mediante los atributos de la versión del paquete. 

Los parámetros de sustitución debe tener el siguiente formato en el documento de trabajo:
+ **Nombre del paquete de software y versión del paquete**
  + La cadena vacía entre `package::version` representa el parámetro de sustitución del nombre del paquete de software. La cadena vacía entre `version::attribute` representa el parámetro de sustitución de la versión del paquete de software. Consulte el siguiente ejemplo para utilizar el nombre del paquete y los parámetros de sustitución de la versión de paquete en un documento de trabajo: `${aws:iot:package::version::attributes:<attributekey>}`.
  + El documento de trabajo rellenará automáticamente estos parámetros de sustitución con el *ARN de la versión* de los detalles de la versión del paquete. Si va a crear un trabajo o una plantilla de trabajo para una implementación de paquete único mediante un comando de la API o la CLI, el *ARN de la versión* de una versión de paquete se representa con el parámetro `destinationPackageVersions` en `CreateJob` y `DescribeJob`.
+ **Todos los atributos para una versión de paquete de software**
  + Consulte el siguiente ejemplo para utilizar todos los atributos de un parámetro de sustitución de la versión de un paquete de software en un documento de trabajo: `${aws:iot:package:<packageName>:version:<versionName>:attributes}`.

**nota**  
El nombre del paquete, la versión del paquete y todos los parámetros de sustitución de los atributos se pueden utilizar juntos. Consulte el siguiente ejemplo para utilizar los tres parámetros de sustitución en un documento de trabajo: `${aws:iot:package::version::attributes}`.

En el siguiente ejemplo, hay un paquete de software denominado `samplePackage` que tiene una versión de paquete denominada `2.1.5` con los siguientes atributos:
+ Nombre: `s3URL`, valor: `https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile`
  + Este atributo identifica la ubicación del archivo de código almacenado en Amazon S3.
+ Nombre: `signature`, valor: `aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj`
  + Este atributo proporciona un valor de firma de código que el dispositivo requiere como medida de seguridad. Para obtener más información, consulte [Firma de código para trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-code-signing). **Nota:** Este atributo es un ejemplo y no es obligatorio como parte del catálogo de paquetes de software ni de los trabajos.

En el caso de `s3URL`, el parámetro del documento de trabajo se escribe de la siguiente manera:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
```

En el caso de `signature`, el parámetro del documento de trabajo se escribe de la siguiente manera:

```
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
```

El documento de trabajo completo está redactado de la siguiente manera:

```
{
  ...
  "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}"
    ]
  }
}
```

Una vez realizada la sustitución, se implementa el siguiente documento de trabajo en los dispositivos:

```
{
  ...
  "Steps": {
    "uninstall": ["samplePackage"],
    "download": [ 
      { 
        "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
      },
    ],
    "signature": [
      "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
    ]
  }
}
```

**Parámetros de sustitución (vista antes y después)**

Los parámetros de sustitución simplifican la creación de un documento de trabajo con varios indicadores, como `$default` para la versión de paquete predeterminada. Esto elimina la necesidad de introducir manualmente los metadatos de la versión específica del paquete para cada implementación de trabajo, ya que esos indicadores se rellenan automáticamente con los metadatos a los que se hace referencia en la versión específica del paquete. Para obtener más información sobre los atributos de la versión del paquete, como `$default` para la versión del paquete predeterminada, consulte [Preparación del documento de trabajo y la versión del paquete para su implementación](#preparing-to-deploy).

En él Consola de administración de AWS, active el botón *Vista previa de la sustitución* de la ventana del *editor de archivos de instrucciones de despliegue* durante el despliegue de un trabajo por una versión de paquete para ver el documento de trabajo con y sin los parámetros de sustitución.

Si utiliza el parámetro «antes de la sustitución» que aparece en `DescribeJob` y `GetJobDocument` APIs, podrá ver la respuesta de la API antes y después de eliminar los parámetros de sustitución. Consulta los siguientes ejemplos con las letras y: `DescribeJob` `GetJobDocument` APIs
+ `DescribeJob`
  + Vista predeterminada

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"]
    }
    ```
  + Antes de la vista de sustitución

    ```
    {
        "jobId": "<jobId>",
        "description": "<description>",
        "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"]
    }
    ```
+ `GetJobDocument`
  + Vista predeterminada

    ```
    {
        "attributes": {
            "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core",
            "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI",
            "streamName": "mqtt-core",
            "fileId": "0"
        },
    }
    ```
  + Antes de la vista de sustitución

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

Para obtener más información sobre los AWS IoT trabajos, la creación de documentos de trabajo y la implementación de trabajos, consulte [Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html).

## Preparación del documento de trabajo y la versión del paquete para su implementación
<a name="preparing-to-deploy"></a>

Cuando se crea una versión de paquete, tiene el estado de `draft`, lo que indica que se está preparando para su implementación. Para preparar la versión del paquete para la implementación, debe crear un documento de trabajo, guardar el documento en una ubicación a la que pueda acceder el trabajo (como Amazon S3) y confirmar que la versión del paquete tiene los valores de atributo que desea que utilice el documento de trabajo. (Nota: Puede actualizar los atributos de una versión del paquete mientras tenga el estado `draft`). 

Al crear un AWS IoT trabajo o una plantilla de trabajo para una implementación de paquete único, tiene las siguientes opciones para personalizar su documento de trabajo:

**Archivo de instrucciones de implementación (`recipe`)**
+ El archivo de instrucciones de implementación de una versión de paquete contiene las instrucciones de implementación, incluido un documento de trabajo en línea, para implementar una versión de paquete en varios dispositivos. El archivo asocia instrucciones de implementación específicas a una versión de paquete para una implementación rápida y eficiente del trabajo.

  En ella Consola de administración de AWS, puede crear el archivo en la ventana de *vista previa del archivo de instrucciones de despliegue* de la pestaña *Configuraciones de despliegue de versiones* del flujo de trabajo de creación de un paquete nuevo. Puede aprovechar AWS IoT para generar automáticamente un archivo de instrucciones a partir de los atributos de la versión de su paquete mediante *Start from AWS IoT recommended file* o utilizar su documento de trabajo existente almacenado en un bucket de Amazon S3 mediante *Use your own deployment instruction file*. 
**nota**  
Si utiliza su propio documento de trabajo, puede actualizarlo directamente en la ventana de *Vista previa del archivo de instrucciones de implementación*, pero no actualizará automáticamente el documento de trabajo original almacenado en su bucket de Amazon S3.

  Cuando utilice el comando AWS CLI o un comando de la API, por ejemplo `CreatePackageVersion``GetPackageVersion`, o`UpdatePackageVersion`, `recipe` represente el archivo de instrucciones de despliegue, que incluye un documento de trabajo en línea.

  Para obtener más información sobre lo que es un documento de trabajo, consulte [Conceptos básicos](key-concepts-jobs.md#basic-concepts-jobs).

  Consulte el siguiente ejemplo para ver el archivo de instrucciones de implementación tal como lo representa `recipe`:

  ```
  {
      "packageName": "sample-package-name",
      "versionName": "sample-package-version",
      ...
      "recipe": "{...}"
  }
  ```
**nota**  
El archivo de instrucciones de implementación tal como lo representa `recipe` se puede actualizar cuando una versión de paquete tiene el estado `published`, ya que es independiente de los metadatos de la versión del paquete. Se vuelve inmutable durante la implementación del trabajo.

**Atributo de la versión de `Artifact`**
+ Con el atributo de la version de `artifact` de la versión de su paquete de software, puede añadir la ubicación de Amazon S3 para los artefactos de la versión del paquete. Cuando se desencadena la implementación de un trabajo para la versión de su paquete con AWS IoT Jobs, el marcador de posición de URL prefirmada ` ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url}` del documento de trabajo se actualizará con el bucket de Amazon S3, la clave del bucket y la versión del archivo almacenado en el bucket de Amazon S3. El bucket de Amazon S3 que almacena los artefactos de la versión de paquete debe estar ubicado en la misma región en la que se creó la versión del paquete.
**nota**  
Para almacenar varias versiones de objetos del mismo archivo en su bucket de Amazon S3, debe activar el control de versiones en su bucket. Para obtener más información, consulte [Habilitar el control de versiones en buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html).

  Para acceder a los artefactos de la versión del paquete en el bucket de Amazon S3 al utilizar la operación de la API `CreatePackageVersion` o `UpdatePackageVersion`, debe tener los siguientes permisos:  
****  

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

  Para obtener más información sobre el atributo de versión `artifact` en las operaciones de la `UpdatePackageVersion` API `CreatePackageVersion` y, consulte [CreatePackageVersion](https://amazonaws.com/iot/latest/apireference/API_CreatePackageVersion.html)y [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html).

  Consulte el siguiente ejemplo, que muestra el atributo de versión `artifact` que admite la ubicación del artefacto en Amazon S3 al crear una nueva versión del paquete:

  ```
  {
      "packageName": "sample package name",
      "versionName": "1.0",
      "artifact": {
          "s3Location": {
              "bucket": "firmware",
              "key": "image.bin",
              "version": "12345"
          }
      }
  }
  ```
**nota**  
Cuando la versión de paquete se actualiza de un estado `draft` a otro estado `published`, los atributos de la versión del paquete y la ubicación del artefacto se vuelven inmutables. Para actualizar esta información, debe crear una nueva versión del paquete y realizar esas actualizaciones mientras tenga el estado `draft`.

**Versión de paquete**
+ Se puede indicar una versión de paquete de software predeterminada en las versiones disponibles del paquete de software, lo que proporciona una versión de paquete segura y estable. Sirve como versión básica del paquete de software al implementar la versión predeterminada del paquete en su flota de dispositivos mediante AWS IoT Jobs. Al crear un trabajo para implementar la versión de paquete `$default` para un paquete de software, la versión del paquete del documento de trabajo y la de la nueva implementación del trabajo deben coincidir como `$default`. La versión del paquete en la implementación del trabajo está representada por `destinationPackageVersions` para los comandos de la API y la CLI y `VersionARN` en Consola de administración de AWS. La versión del paquete en el documento de trabajo se representa mediante el siguiente marcador de posición del documento de trabajo que se muestra a continuación:

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

  Para crear un trabajo o una plantilla de trabajo con la versión de paquete predeterminada, utilice la marca `$default` en el comando de la API `CreateJob` o `CreateJobTemplate`, tal como se muestra a continuación:

  ```
  "$ aws iot create-job \
      --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"
      --document file://jobdoc.json
  ```
**nota**  
El atributo de versión de paquete `$default` que hace referencia a la versión predeterminada es un atributo opcional que solo se requiere cuando se hace referencia a la versión del paquete predeterminada para la implementación de un trabajo mediante AWS IoT Jobs.

Cuando esté satisfecho con la versión del paquete, publíquela en la página de detalles del paquete de software de la AWS IoT consola o ejecute la operación de [UpdatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html)API. A continuación, puede hacer referencia a la versión del paquete al crear el trabajo a través de la AWS IoT consola o emitiendo la operación de [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html)API.

## Asignar un nombre a los paquetes y las versiones al desplegarlos
<a name="naming-package-versions"></a>

Para implementar una versión de paquete de software en un dispositivo, confirme que el paquete de software y la versión del paquete a los que se hace referencia en el documento de trabajo coincidan con el paquete de software y la versión del paquete indicados en el parámetro `destinationPackageVersions` de la operación de la API `CreateJob`. Si no coinciden, recibirá un mensaje de error en el que se le pedirá que haga que ambas referencias coincidan. Para obtener más información sobre los mensajes de error del Catálogo de paquetes de software, consulte [Mensajes de error de la resolución de problemas general](software-package-catalog-troubleshooting.md#spc-general-troubleshooting).

Además de los paquetes de software y las versiones de paquete a los que se hace referencia en el documento de trabajo, puede incluir paquetes de software y versiones de paquetes adicionales en el parámetro `destinationPackageVersions` de la operación de la API `CreateJob` a los que no se hace referencia en el documento de trabajo. Asegúrese de incluir la información de instalación necesaria en el documento de trabajo para que los dispositivos instalen correctamente las versiones adicionales del paquete de software. Para obtener más información sobre el funcionamiento `CreateJob ` de la API, consulte [CreateJob](https://amazonaws.com/iot/latest/apireference/API_CreateJob.html).

## Segmentar los trabajos mediante grupos de cosas AWS IoT dinámicos
<a name="jobs-and-dynamic-groups"></a>

El Catálogo de paquetes de software funciona con la [indexación de flotas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-indexing.html), los [trabajos de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) y [los grupos de objetos dinámicos de AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) para filtrar y dirigir los dispositivos de la flota para seleccionar qué versión de paquete implementar en los dispositivos. Puedes ejecutar una consulta de indexación de flotas basada en la información actual del paquete de tu dispositivo y segmentar esas cosas para un AWS IoT trabajo. También puede lanzar actualizaciones de software, pero sólo a los dispositivos de destino elegibles. Por ejemplo, puede especificar que desea implementar una configuración solo en los dispositivos en los que actualmente se ejecuta `iot-device-client 1.5.09`. Para más información, consulte [Crear un grupo de cosas dinámico](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).

## Versiones reservadas de paquetes y sombras con nombre
<a name="reserved-shadow-and-package-versions"></a>

Si está configurado, AWS IoT Jobs puede actualizar la reserva de una cosa llamada shadow (`$package`) cuando la tarea se complete correctamente. Si lo hace, no necesita asociar manualmente la versión de un paquete a la versión reservada de una cosa llamada shadow. 

Puede optar por asociar o actualizar manualmente una versión de paquete a la sombra de nombre reservado de la cosa en las siguientes situaciones:
+ Se registra algo AWS IoT Core sin asociar la versión del paquete instalado.
+ AWS IoT Jobs no está configurado para actualizar la cosa reservada llamada shadow.
+ Utilizas un proceso interno para enviar las versiones de los paquetes a tu flota y ese proceso no AWS IoT Core se actualiza cuando finaliza.

**nota**  
Te recomendamos que utilices AWS IoT Jobs para actualizar la versión del paquete en la sección reservada denominada shadow (`$package`). Si se actualiza el parámetro de versión en la `$package` sombra mediante otros procesos (por ejemplo, llamadas a la API manuales o programáticas) y AWS IoT Jobs también está configurado para actualizar la sombra, se pueden producir incoherencias entre la versión real del dispositivo y la versión reportada a la versión reservada denominada shadow.

Puede añadir o actualizar la versión de un paquete a una versión reservada llamada sombra (`$package`) mediante la consola o la operación de la 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 obtener más información, consulte [Asociar una versión de paquete a una cosa](https://docs.aws.amazon.com/iot/latest/developerguide/associating-package-version.html). AWS IoT 

**nota**  
Al asociar una versión de paquete a una AWS IoT cosa, no se actualiza directamente el software del dispositivo. Debe implementar la versión del paquete en el dispositivo para actualizar el software del dispositivo.

## Desinstalación de un paquete de software y de su versión
<a name="uninstalling-packages-and-versions"></a>

`$null`es un marcador de posición reservado que solicita al servicio AWS IoT Jobs que elimine el paquete de software y la versión del paquete existentes de la sombra reservada denominada del dispositivo. `$package` Para obtener más información, consulte [Sombra con nombre reservado](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#reserved-named-shadow).

Para utilizar esta función, sustituya el nombre de la versión al final del [destinationPackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJobTemplate.html#iot-CreateJobTemplate-request-destinationPackageVersions)Amazon Resource Name (ARN) por. `$null` Después, debe indicar a su servicio que elimine el software del dispositivo.

El ARN autorizado utiliza el siguiente formato:

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

Por ejemplo:

```
$ aws iot create-job \
    ... \
    --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]
```

# Introducción al Catálogo de paquetes de software
<a name="getting-started-with-software-package-catalog"></a>

Puede crear y mantener el catálogo de paquetes de AWS IoT Device Management software mediante Consola de administración de AWS las operaciones de AWS IoT Core API y AWS Command Line Interface (AWS CLI).

**nota**  
Habilitar AWS IoT la indexación de la flota es un requisito para utilizar Software Package Catalog. Las operaciones básicas, como la creación de una versión de un paquete de software en el comando API Consola de administración de AWS y el uso del comando `CreatePackage` API, fallarán si no está habilitada la indexación de la AWS IoT flota.  
Para obtener más información sobre el uso de la indexación de AWS IoT flotas con Software Package Catalog, consulte[Preparación para la indexación de flotas](preparing-fleet-indexing.md).

**Uso de la consola**

Para utilizarla Consola de administración de AWS, inicie sesión en su AWS cuenta y navegue hasta [AWS IoT Core](https://console.aws.amazon.com/iot/home). En el panel de navegación, seleccione **Paquetes de software**. A continuación, puede crear y gestionar los paquetes y sus versiones desde esta sección.

**Uso de operaciones de API o CLI**

Puede usar las operaciones de la AWS IoT Core API para crear y administrar las funciones del Catálogo de Paquetes de Software. Para obtener más información, consulte la [referencia [AWS SDKs y los kits de herramientas](https://aws.amazon.com/developer/tools/) de las AWS IoT API](https://docs.aws.amazon.com/iot/latest/apireference/). Los AWS CLI comandos también administran su catálogo. Para obtener más información, consulte la [Referencia de comandos de CLI AWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

**Topics**
+ [Crear un paquete de software y una versión del paquete](creating-package-and-version.md)
+ [Implementación de una versión de paquete mediante trabajos AWS IoT](deploying-package-version.md)
+ [Asociar una versión de paquete a cualquier cosa AWS IoT](associating-package-version.md)

# Crear un paquete de software y una versión del paquete
<a name="creating-package-and-version"></a>

Puede seguir los siguientes pasos para crear un paquete y una versión inicial mediante la Consola de administración de AWS.

**Para crear un paquete de software**

1. Inicie sesión en su AWS cuenta y vaya a la [AWS IoT consola](https://console.aws.amazon.com/iot/home). 

1.  En el panel de navegación, seleccione **Paquetes de software**. 

1.  En la página **del paquete de software AWS IoT **, elija **Crear paquete**. Aparece el cuadro de diálogo **Habilitar dependencias para la administración de paquetes**. 

1.  En **Indexación de flotas**, seleccione **Agregar paquetes y versiones de software del dispositivo**. Esto es obligatorio para el catálogo de paquetes de software y proporciona indexación de la flota y métricas sobre su flota. 

1. [Opcional] Si desea que los AWS IoT trabajos actualicen la sombra con el nombre reservado cuando los trabajos se completen correctamente, seleccione **Actualizar automáticamente las sombras de los trabajos**. Si no desea que los AWS IoT trabajos realicen esta actualización, deje esta casilla de verificación sin seleccionar.

1.  [Opcional] Para conceder a los AWS IoT trabajos los derechos de actualización de la sombra reservada denominada, en **Seleccionar función**, seleccione **Crear** función. Si no quieres que AWS IoT Jobs realice esta actualización, este rol no es obligatorio. 

1. Crear o seleccionar un rol.

   1. Si **no tiene un rol** para este propósito: cuando aparezca el cuadro de diálogo **Crear rol**, introduzca el **nombre del rol** y, a continuación, elija **Crear**.

   1. Si **tiene un rol para este propósito: en **Seleccionar rol, elija su rol** y, a continuación, asegúrese de que** la casilla **asociar política al rol de IAM** esté seleccionada.

1. Elija **Confirmar**. Aparece la página **Crear nuevo paquete**.

1. En **Detalles del paquete**, introduzca un **nombre de paquete**.

1. En la **Descripción del paquete**, introduzca información que le ayude a identificar y gestionar este paquete.

1. [Opcional] Puede utilizar etiquetas como ayuda para clasificar y administrar este paquete. Para añadir etiquetas, expanda **Etiquetas**, seleccione **Añadir etiqueta** e introduzca un par clave-valor. Puede añadir hasta 50 etiquetas. Para obtener más información, consulte [Etiquetar AWS IoT los recursos](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

**Para añadir una versión de paquete al crear un paquete nuevo**

1. En **Versión inicial**, introduzca un **Nombre de la versión**.

   Recomendamos utilizar el [SemVer formato](https://semver.org/) (por ejemplo,`1.0.0.0`) para identificar de forma exclusiva la versión del paquete. También puede utilizar una estrategia de formato diferente que se adapte mejor a su caso de uso. Para obtener más información, consulte [Ciclo de vida de la versión de paquete](preparing-to-use-software-package-catalog.md#package-version-lifecycle). 

1. En la **Descripción del paquete**, introduzca información que le ayude a identificar y gestionar esta versión del paquete.
**nota**  
La casilla de verificación **Versión predeterminada** está desactivada porque las versiones de los paquetes se crean en un estado `draft`. Puede asignar un nombre a la versión predeterminada después de crear la versión del paquete y al cambiar el estado a `published`. Para obtener más información, consulte [Ciclo de vida de la versión de paquete](preparing-to-use-software-package-catalog.md#package-version-lifecycle).

1. [Opcional] Para ayudarle a gestionar esta versión o para comunicar información a sus dispositivos, introduzca uno o más pares nombre-valor para los **atributos de Versión**. Seleccione **Añadir atributo** para cada par de nombre-valor que introduzca. Para obtener más información, consulte [Atributos de la versión](preparing-to-use-software-package-catalog.md#version-attributes).

1. [Opcional] Puede utilizar etiquetas como ayuda para clasificar y administrar este paquete. Para añadir etiquetas, expanda **Etiquetas**, seleccione **Añadir etiqueta** e introduzca un par clave-valor. Puede añadir hasta 50 etiquetas. Para obtener más información, consulte [Etiquetar AWS IoT los recursos](https://docs.aws.amazon.com/iot/latest/developerguide/tagging-iot.html).

1. Elija **Siguiente**.

**Asociación de la lista de materiales de software con una versión de paquete (opcional)**

1. En el **paso 3: Versión SBOMs (opcional)** de la ventana de **configuraciones de la SBOM**, elija el formato de archivo de la SBOM y el modo de validación predeterminados que se utilizan para validar la lista de materiales del software antes de asociarla a la versión del paquete.

1. En la ventana **Agregar archivo SBOM**, introduzca el nombre de recurso de Amazon (ARN) que representa su bucket de Amazon S3 con control de versiones y el formato de archivo SBOM preferido si el tipo predeterminado no funciona.
**nota**  
Puede añadir un único archivo SBOM o un único archivo zip que contenga varios SBOMs si tiene más de una lista de materiales de software para la versión del paquete. 

1. En la ventana del archivo **Archivo SBOM agregado**, puede ver el archivo SBOM que ha agregado para la versión del paquete.

1. Seleccione **Crear paquete y versión**. Aparece la página de la versión del paquete donde puede ver el estado de validación del archivo SBOM en la ventana **Archivo SBOM agregado**. El estado inicial será `In progress` cuando el archivo SBOM se someta a validación. 
**nota**  
Los estados de validación del archivo SBOM son `Invalid file`, `Not started`, `In progress`, `Validated (SPDX)`, `Validated (CycloneDX)` y los motivos del error de validación.

# Implementación de una versión de paquete mediante trabajos AWS IoT
<a name="deploying-package-version"></a>

Puede utilizar los siguientes pasos para desplegar una versión del paquete a través de la Consola de administración de AWS.

**Requisitos previos**:

Antes de comenzar, haga lo siguiente:
+ Registra AWS IoT cosas con AWS IoT Core. Para obtener instrucciones sobre cómo añadir tus dispositivos AWS IoT Core, consulta [Crear un objeto objeto](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing).
+ [Opcional] Cree un grupo de AWS IoT cosas o un grupo de cosas dinámico para dirigirse a los dispositivos en los que va a implementar la versión del paquete. Para obtener instrucciones sobre cómo crear un grupo de cosas, consulte [Crear un grupo de cosas estático](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html#create-thing-group). Para obtener instrucciones sobre cómo crear un grupo de cosas dinámico, consulte [Crear un grupo de cosas dinámico](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html#create-dynamic-thing-group).
+ Cree un paquete de software y una versión del paquete. Para obtener más información, consulte [Crear un paquete de software y una versión del paquete](creating-package-and-version.md).
+ Creación de un documento de trabajo Para más información, consulte [Preparar el documento de trabajo y la versión del paquete para su implementación](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#preparing-to-deploy).

**Para implementar un AWS IoT trabajo**

1. En la [consola de AWS IoT](https://console.aws.amazon.com/iot/home), elija **Paquetes de software**.

1. Elija el paquete de software que desee implementar. Aparecerá la **página de detalles del paquete de software**.

1. Elija la versión del paquete que desea implementar, en **Versiones**, y elija **Implementar la versión del trabajo**.

1. Si es la primera vez que implementa un trabajo a través de este portal, aparecerá un cuadro de diálogo en el que se describen los requisitos. Revise la información y seleccione **Reconocer**.

1. Introduzca un nombre para la implementación o deje el nombre generado automáticamente en el campo **Nombre**.

1. [Opcional] En el campo **Descripción**, introduzca una descripción que identifique el propósito o el contenido de la implementación, o deje la información generada automáticamente. 

   **Nota:** Le recomendamos que no utilice información personal identificable en los campos Nombre del puesto y Descripción.

1. [Opcional] Añada las etiquetas que desee asociar a este trabajo.

1. Elija **Siguiente**.

1. En **Objetivos del trabajo**, elija las cosas o grupos de cosas que deben recibir el trabajo.

1. En el campo **Archivo de trabajo**, especifique el archivo JSON del documento de trabajo.

1. Integración de **Open Jobs con el servicio Catálogo de paquetes**.

1. Seleccione los paquetes y las versiones que se especifican en su documento de trabajo.
**nota**  
Debe elegir los mismos paquetes y versiones de paquetes que se especifican en el documento de trabajo. Puede incluir más, pero el trabajo solo emitirá instrucciones para los paquetes y las versiones incluidos en el documento de trabajo. Para obtener más información, consulte [Asignar un nombre a los paquetes y las versiones al implementarlos](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-jobs-for-service-package-catalog.html#naming-package-versions).

1. Elija **Siguiente**.

1. En la página Configuración del trabajo, seleccione uno de los siguientes tipos de trabajo en el cuadro de diálogo Configuración del trabajo:
   + **Trabajo de instantánea**: un trabajo de instantánea está completo cuando termina de ejecutarse en los dispositivos y grupos de destino.
   + **Trabajo continuo**: un trabajo continuo se aplica a grupos de objetos y se ejecuta en cualquier dispositivo que luego se añada a un grupo de destino específico.

1. En el cuadro de diálogo **Configuraciones adicionales (opcional)**, revise las siguientes configuraciones de trabajo opcionales y seleccione las opciones correspondientes: Para obtener más información, consulte Configuraciones de [despliegue, programación y cancelación de trabajos y Configuraciones](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-rollout-abort-scheduling) de [tiempo de espera y reintento de ejecución de trabajos](https://docs.aws.amazon.com/iot/latest/developerguide/jobs-configurations-details.html#job-timeout-retry).
   + Configuración de despliegue
   + Configuración de programación
   + Configuración del tiempo de espera de ejecuciones de trabajo
   + Configuración de reintento de ejecución de trabajos
   + Configuración de anulación

1. Revise las selecciones de trabajos y, a continuación, elija **Enviar**.

Después de crear el trabajo, la consola genera una firma JSON y la coloca en su documento del trabajo. Puede usar la AWS IoT consola para ver el estado de un trabajo o cancelar o eliminar un trabajo. Para gestionar los trabajos, vaya al [Centro de trabajos de la consola](https://console.aws.amazon.com/iot/home#/jobhub).

# Asociar una versión de paquete a cualquier cosa AWS IoT
<a name="associating-package-version"></a>

Después de instalar el software en el dispositivo, puedes asociar una versión de paquete a una AWS IoT cosa reservada llamada shadow. Si se ha configurado AWS IoT jobs para actualizar el objeto reservado denominado shadow después de que el trabajo se haya desplegado y finalizado correctamente, no es necesario que complete este procedimiento. Para obtener más información, consulte [Sombra con nombre reservado](preparing-to-use-software-package-catalog.md#reserved-named-shadow). 

**Requisitos previos**:

Antes de comenzar, haga lo siguiente:
+ Cree una o AWS IoT varias cosas y establezca la telemetría mediante ella. AWS IoT Core Para obtener más información, consulte [Cómo empezar](https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html) con. AWS IoT Core
+  Cree un paquete de software y una versión del paquete. Para obtener más información, consulte [Crear un paquete de software y una versión del paquete](creating-package-and-version.md). 
+  Instale el software de la versión empaquetada en el dispositivo. 

**nota**  
Al asociar una versión de paquete a AWS IoT algo, no se actualiza ni instala el software en el dispositivo físico. La versión del paquete debe implementarse en el dispositivo. 

**Para asociar una versión de paquete a algo AWS IoT**

1. En el panel de navegación de la [consola de AWS IoT](https://console.aws.amazon.com/iot/home), expanda el menú **Todos los dispositivos** y seleccione **Cosas**.

1. Identifique AWS IoT el elemento que desea actualizar en la lista y elija el nombre del elemento para mostrar su página de detalles.

1. En la sección **Detalles**, seleccione **Paquetes y versiones**.

1.  Seleccione **Añadir al paquete y a la versión**. 

1.  En **Elegir un paquete de dispositivos**, elija el paquete de software que desee. 

1.  En **Elija una versión**, elija la versión de software que desee. 

1.  Seleccione **Añadir paquete de dispositivo**. 

    El paquete y la versión aparecen en la lista de **paquetes y versiones seleccionados**. 

1.  Repita estos pasos para cada paquete y versión que desee asociar a esta cosa. 

1.  Cuando haya terminado, elija **Agregar detalles del paquete y la versión**. Se abre la página de **detalles de la cosa** y podrá ver el nuevo paquete y la nueva versión en la lista. 