AWS IOT Борясь с получением вещи shodow

Я знаю, что у меня отсутствует кое-что основное, но я действительно застреваю, пытаясь получить доступ к теневой теневой системе на платформе AWS IOT.

Я использую следующий код для создания новой вещи:

use Aws\Iot\IotClient;
$thingName = '<string uuid="">';
$awsIoTClient = new IotClient([
 'version' => 'latest',
 'region' => <region>,
 'credentials' => [
 'key' => <aws_access_key>,
 'secret' => <aws_secret_key>,
 ]
]);
$policyName = 'Global_Hub_Policy';
// # !---------------------------
// # !- Implementation
// # !---------------------------
$result = $awsIoTClient->createThing([
 'thingName' => $thingName,
]);
$result = $awsIoTClient->createKeysAndCertificate([
 'setAsActive' => TRUE,
]);
$certArn = $result['certificateArn'];
$certId = $result['certificateId'];
$certPem = $result['certificatePem'];
$privateKey = $result['keyPair']['PrivateKey'];
$awsIoTClient->attachPrincipalPolicy([
 'policyName' => $policyName,
 'principal' => $certArn
]);
$awsIoTClient->attachThingPrincipal([
 'principal' => $certArn,
 'thingName' => $thingName
]);
</aws_secret_key></aws_access_key></region></string>

Вышеприведенный код успешно создает вещь. Я вижу вещь, созданную при запуске:

$awsIoTClient->listThings();

Затем, когда я пытаюсь получить доступ к теневому тэгу со следующим кодом:

Use Aws\IotDataPlane\IotDataPlaneClient;
$client = new IotDataPlaneClient([
 'version' => 'latest',
 'region' => <region>,
 'credentials' => [
 'key' => <aws_access_key>,
 'secret' => <aws_secret_key>,
 ]
]);
$result = $client->getThingShadow([
 'thingName' => '<string uuid="">', // REQUIRED
]);
</string></aws_secret_key></aws_access_key></region>

Я получаю следующую ошибку:

Aws\IotDataPlane\Exception\IotDataPlaneException: Error executing "GetThingShadow" on "https://data.iot.us-east-1.amazonaws.com/things/<string uuid="">/shadow"; AWS HTTP error: Client error: 404 ResourceNotFoundException (client): No shadow exists with name: '<string uuid="">' - {"message":"No shadow exists with name: '<string uuid="">'","traceId":"<traceid>"} in Aws\WrappedHttpHandler->parseError() (line 152 of /<docroot>/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php).
</docroot></traceid></string></string></string>

Совместимые вещи: Пользователь, чей доступ и секретные ключи используются для создания этой вещи, имеют следующие правила AWS (мы заблокируем их, как только получим это):

- AWSIoTLogging
- AWSIoTConfigAccess
- AWSIoTRuleActions
- AWSIoTConfigReadOnlyAccess
- AWSIoTDataAccess
- AWSIoTFullAccess
1 ответ

Отказывается, вам нужно обновить тень, прежде чем вы сможете ее обновить.

$json = json_encode(['state' => ['desired' => ['test_updated' => "date updated " . date('r')]]]);
$result = $client->getThingShadow([
 'thingName' => $thingname,
 'payload' => $json,
]);

После этого это вернет тень:

$result = $client->getThingShadow([
 'thingName' => '<string uuid="">', // REQUIRED
]);
</string>

licensed under cc by-sa 3.0 with attribution.