

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.

# Temas MQTT de sombra de dispositivo
<a name="device-shadow-mqtt"></a>

El servicio Device Shadow utiliza temas MQTT reservados para permitir a los dispositivos y las aplicaciones obtener, actualizar o eliminar la información de estado de un dispositivo (sombra). 

La publicación y suscripción de temas de sombra requiere una autorización basada en temas. AWS IoT se reserva el derecho a añadir nuevos temas a la estructura de temas existente. Por este motivo, le recomendamos que evite las suscripciones de tipo comodín a los temas de sombra. Por ejemplo, evite suscribirse a filtros de temas, `$aws/things/thingName/shadow/#` ya que el número de temas que coinciden con este filtro podría aumentar a medida que se AWS IoT introduzcan nuevos temas ocultos. Para consultar ejemplos de mensajes publicados en estos temas vaya a [Interacción con sombras](device-shadow-data-flow.md).

Las sombras pueden ser con nombre o sin nombre (clásico). Los temas utilizados por cada uno solo difieren en el prefijo del tema. Esta tabla muestra el prefijo de tema utilizado por cada tipo de sombra.


| Valor de *ShadowTopicPrefix* | Tipo de sombra | 
| --- | --- | 
| \$1aws/things/thingName/shadow | Sombra sin nombre (clásica) | 
| \$1aws/things/thingName/shadow/name/shadowName | Sombra con nombre | 

Para crear un tema completo, seleccione el `ShadowTopicPrefix` para el tipo de sombra al que desea hacer referencia, reemplace `thingName` y `shadowName` si procede, por sus valores correspondientes y, a continuación, anéxelo al código auxiliar del tema como se muestra en las secciones siguientes.

A continuación se muestran los temas MQTT utilizados para interactuar con las sombras.

**Topics**
+ [/get](#get-pub-sub-topic)
+ [/get/accepted](#get-accepted-pub-sub-topic)
+ [/get/rejected](#get-rejected-pub-sub-topic)
+ [/update](#update-pub-sub-topic)
+ [/update/delta](#update-delta-pub-sub-topic)
+ [/update/accepted](#update-accepted-pub-sub-topic)
+ [/update/documents](#update-documents-pub-sub-topic)
+ [/update/rejected](#update-rejected-pub-sub-topic)
+ [/delete](#delete-pub-sub-topic)
+ [/delete/accepted](#delete-accepted-pub-sub-topic)
+ [/delete/rejected](#delete-rejected-pub-sub-topic)

## /get
<a name="get-pub-sub-topic"></a>

Publique un mensaje vacío en este tema para obtener la sombra de objeto:

```
ShadowTopicPrefix/get
```

AWS IoT responde publicando en uno de los dos[/get/accepted](#get-accepted-pub-sub-topic). [/get/rejected](#get-rejected-pub-sub-topic)

### Ejemplo de política de
<a name="get-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/get"
            ]
        }
    ]
}
```

## /get/accepted
<a name="get-accepted-pub-sub-topic"></a>

AWS IoT publica un documento paralelo de respuesta sobre este tema al devolver la sombra del dispositivo:

```
ShadowTopicPrefix/get/accepted
```

Para obtener más información, consulte [Documentos de estado de la respuesta](device-shadow-document.md#device-shadow-example-response-json).

### Ejemplo de política de
<a name="get-accepted-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/get/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/get/accepted"
            ]
        }
    ]
}
```

## /get/rejected
<a name="get-rejected-pub-sub-topic"></a>

AWS IoT publica un documento de respuesta a errores sobre este tema cuando no puede mostrar la sombra del dispositivo:

```
ShadowTopicPrefix/get/rejected
```

Para obtener más información, consulte [Documento de respuesta de error](device-shadow-document.md#device-shadow-example-error-json).

### Ejemplo de política de
<a name="get-rejected-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Subscribe"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/get/rejected"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/get/rejected"
      ]
    }
  ]
}
```

## /update
<a name="update-pub-sub-topic"></a>

Publique un documento de estado de solicitud en este tema para actualizar la sombra del dispositivo:

```
ShadowTopicPrefix/update
```

El cuerpo del mensaje contiene un [documento de estado de solicitud parcial](device-shadow-document.md#device-shadow-example-request-json).

Un cliente que intente actualizar el estado de un dispositivo enviaría un documento de estado de solicitud JSON con la propiedad `desired` como esta:

```
{
  "state": {
    "desired": {
      "color": "red",
      "power": "on"
    }
  }
}
```

Un dispositivo que actualice su sombra enviaría un documento de estado de solicitud JSON con la propiedad `reported`, como esta:

```
{
  "state": {
    "reported": {
      "color": "red",
      "power": "on"
    }
  }
}
```

AWS IoT responde publicando en una de las [/update/accepted](#update-accepted-pub-sub-topic) dos[/update/rejected](#update-rejected-pub-sub-topic).

### Ejemplo de política de
<a name="update-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/update"
            ]
        }
    ]
}
```

## /update/delta
<a name="update-delta-pub-sub-topic"></a>

AWS IoT publica un documento de estado de respuesta sobre este tema cuando acepta un cambio en la sombra del dispositivo, y el documento de estado de respuesta contiene valores `desired` y `reported` estados diferentes:

```
ShadowTopicPrefix/update/delta
```

El búfer del mensaje contiene un [Documento de estado de la respuesta /delta](device-shadow-document.md#device-shadow-example-response-json-delta).

### Detalles del cuerpo del mensaje
<a name="update-delta-rules"></a>
+ Un mensaje publicado en `update/delta` incluye únicamente los atributos deseados que difieren entre las secciones `desired` y `reported`. Contiene todos estos atributos, independientemente de si se encuentran en el mensaje de actualización actual o si ya estaban almacenados en AWS IoT. No se incluyen los atributos que no difieren entre las secciones `desired` y `reported`.
+ Si un atributo se encuentra en la sección `reported`, pero no tiene equivalente en la sección `desired`, no se incluye.
+ Si un atributo se encuentra en la sección `desired`, pero no tiene equivalente en la sección `reported`, se incluye.
+ Si se elimina un atributo de la sección `reported`, pero sigue existiendo en la sección `desired`, se incluye.

### Ejemplo de política de
<a name="update-delta-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/update/delta"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/update/delta"
            ]
        }
    ]
}
```

## /update/accepted
<a name="update-accepted-pub-sub-topic"></a>

AWS IoT publica un documento de estado de respuesta sobre este tema cuando acepta un cambio en la sombra del dispositivo:

```
ShadowTopicPrefix/update/accepted
```

El búfer del mensaje contiene un [Documento de estado de la respuesta /aceptado](device-shadow-document.md#device-shadow-example-response-json-accepted).

### Ejemplo de política de
<a name="update-accepted-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/update/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/update/accepted"
            ]
        }
    ]
}
```

## /update/documents
<a name="update-documents-pub-sub-topic"></a>

AWS IoT publica un documento de estado sobre este tema cada vez que se realiza correctamente una actualización de la sombra:

```
ShadowTopicPrefix/update/documents
```

El cuerpo del mensaje contiene un [Documento de estado de respuesta /documentos](device-shadow-document.md#device-shadow-example-response-json-documents).

### Ejemplo de política de
<a name="update-documents-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/update/documents"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/update/documents"
            ]
        }
    ]
}
```

## /update/rejected
<a name="update-rejected-pub-sub-topic"></a>

AWS IoT publica un documento de respuesta a errores sobre este tema cuando rechaza un cambio en la sombra del dispositivo:

```
ShadowTopicPrefix/update/rejected
```

El cuerpo del mensaje contiene un [Documento de respuesta de error](device-shadow-document.md#device-shadow-example-error-json).

### Ejemplo de política de
<a name="update-rejected-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/update/rejected"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/update/rejected"
            ]
        }
    ]
}
```

## /delete
<a name="delete-pub-sub-topic"></a>

Para eliminar la sombra de un dispositivo, publique un mensaje vacío para eliminar el tema:

```
ShadowTopicPrefix/delete
```

El contenido del mensaje no se tiene en cuenta.

Tenga en cuenta que, al eliminar una sombra, no se restablece su número de versión a 0.

AWS IoT responde publicando en una de las [/delete/accepted](#delete-accepted-pub-sub-topic) dos[/delete/rejected](#delete-rejected-pub-sub-topic).

### Ejemplo de política de
<a name="delete-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/delete"
            ]
        }
    ]
}
```

## /delete/accepted
<a name="delete-accepted-pub-sub-topic"></a>

AWS IoT publica un mensaje sobre este tema cuando se elimina la sombra de un dispositivo:

```
ShadowTopicPrefix/delete/accepted
```

### Ejemplo de política de
<a name="delete-accepted-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/delete/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/delete/accepted"
            ]
        }
    ]
}
```

## /delete/rejected
<a name="delete-rejected-pub-sub-topic"></a>

AWS IoT publica un documento de respuesta a errores sobre este tema cuando no puede eliminar la sombra del dispositivo:

```
ShadowTopicPrefix/delete/rejected
```

El cuerpo del mensaje contiene un [Documento de respuesta de error](device-shadow-document.md#device-shadow-example-error-json).

### Ejemplo de política de
<a name="delete-rejected-policy"></a>

A continuación, mostramos un ejemplo de la política requerida:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/thingName/shadow/delete/rejected"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/thingName/shadow/delete/rejected"
            ]
        }
    ]
}
```