The AWS IoT Core Device Shadow Service solves the problem of communicating to a device, even if the device is offline. The Device Shadow enables you as a programmer to retrieve the last known state of the IoT device or even configure a desired future state of the IoT device using the AWS IoT Core API or rules engine. [1]
As a web or application programmer, I can now interact with the IoT device using a REST API that will always be available to me 24x7, even if the device itself is offline. When the state of an IoT device changes, an IoT device running AWS IoT Core will be able to push / publish the current state of the device to the "shadow". The following URI format can be used for updating state information: https://endpoint/things/thingName/shadow The endpoint URL will be specific to your AWS account and can be retrieved using the AWS CLI describe-endpoint command using the format as follows: identifier.iot.region.amazonaws.com [2]
The shadow RESTful API has three commands: GetThingShadow, UpdateThingShadow and DeleteThingShadow
*** More to come - initial draft of AWS IoT Device Shadow Service blogpost
[1] https://aws.amazon.com/iot-core/features/
[2] https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html