Je sais qu'il me manque quelque chose de basique ici mais je suis vraiment bloqué en essayant d'accéder à une ombre de chose sur la plate-forme d'AWS IOT.AWS IOT Lutter contre les trucs de rien
J'utilise le code suivant pour créer une nouvelle chose:
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
]);
Le code ci-dessus est réussi à créer une chose. Je peux voir la chose créée quand je lance:
$awsIoTClient->listThings();
Alors quand je tente d'accéder l'ombre de la chose avec le code suivant:
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
]);
je reçois l'erreur suivante:
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).
Couple de choses à noter: L'utilisateur dont l'accès et les clés secrètes sont utilisées pour créer cette chose a les politiques AWS suivantes (nous allons les verrouiller une fois que nous avons ce travail):
- AWSIoTLogging
- AWSIoTConfigAccess
- AWSIoTRuleActions
- AWSIoTConfigReadOnlyAccess
- AWSIoTDataAccess
- AWSIoTFullAccess
« * vous devez mettre à jour l'ombre avant de pouvoir le mettre à jour * »> Voulez-vous dire « * vous devez mettre à jour l'ombre avant peut ** lire ** it * "? –