{"id":456,"date":"2016-03-29T23:17:45","date_gmt":"2016-03-29T23:17:45","guid":{"rendered":"http:\/\/wp.andreas.bieri.name\/myblog\/?p=456"},"modified":"2017-12-09T19:21:12","modified_gmt":"2017-12-09T18:21:12","slug":"amazon-aws-iot-test-mit-mqtt","status":"publish","type":"post","link":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/","title":{"rendered":"Amazon AWS IoT: Test mit MQTT"},"content":{"rendered":"<h4>AWS IoT<\/h4>\n<p>Gelegentlich nutze ich Dienste vom Amazon AWS. Aus der stattlichen Liste von Diensten habe ich das Internet-of-Things kurz angeschaut. AWS IoT bietet (Zitat):<\/p>\n<p><em>AWS IoT ist eine Plattform, \u00fcber die Sie Ger\u00e4te mit AWS Services und anderen Ger\u00e4ten verbinden, Daten und Interaktionen sch\u00fctzen, Ger\u00e4tedaten verarbeiten und als Grundlage verwenden k\u00f6nnen. Au\u00dferdem erm\u00f6glicht sie die Interaktion von Anwendungen mit Ger\u00e4ten, auch wenn diese offline sind.<\/em><\/p>\n<p>Dieser Blog ist als Serie vorgesehen. In einem ersten Schritt habe ich eine Demo gebaut, die Meldungen von einem MQTT Windows Client empf\u00e4ngt und diese in einer Datei auf Amazon S3 speichert. In einem n\u00e4chsten Schritt m\u00f6chte ich von einem Arduino Yun, Raspberry Pi oder ESP8266 aus Daten absenden (<a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/iot-device-sdk-c.html\">SDK mit Anleitung<\/a>).\u00a0Es muss nicht gerade eine coole Ballon-Mission sein (<a href=\"http:\/\/www.pi-in-the-sky.com\/\">hier<\/a>\u00a0und\u00a0<a href=\"https:\/\/www.raspberrypi.org\/blog\/pi-in-the-sky-2\/\">hier<\/a>).<\/p>\n<p>Auf der Amazon Seite sind viele Informationen zu finden. Wir folgen dem\u00a0Quickstart: <a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/iot-quickstart.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/iot-quickstart.html<\/a>\u00a0mit den folgenden Schritten:<\/p>\n<ol>\n<li>AWS IoT registrieren und eine verschl\u00fcsselte CLI Verbindung erstellen<\/li>\n<li>ein Device erzeugen<\/li>\n<li>die Verbindung vom Device zu AWS IoT verschl\u00fcsseln<\/li>\n<li>einen MQTT Client installieren und Daten schicken<\/li>\n<li>Regel erstellen, die MQTT Telegramme als Datei in S3 ablegt<\/li>\n<\/ol>\n<h4><strong>Voraussetzungen<\/strong><\/h4>\n<ul>\n<li>AWS Account mit IoT und S3 eingerichtet<\/li>\n<li>AWS Client (AWSCLI64.msi)<\/li>\n<li>OpenSSL f\u00fcr Windows (Win32OpenSSL_Light-1_0_2e.exe)<\/li>\n<li>mosquitto Client f\u00fcr Windows (mosquitto-1.4.5-install-win32.exe)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-394 aligncenter\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png\" alt=\"clip_image001.png\" width=\"1024\" height=\"512\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image001.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image001-300x150.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image001-768x384.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>AWS IoT registrieren und eine verschl\u00fcsselte CLI Verbindung erstellen<\/h4>\n<p><a href=\"http:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-getting-started.html\">http:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-getting-started.html<br \/>\n<\/a>Sollte nicht schon eine CLI Verbindung vorhanden sein, ist die AWSCLI64.msi zu installieren und zu konfigurieren.<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-396 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image002.png\" alt=\"clip_image002.png\" width=\"494\" height=\"385\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image002.png 641w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image002-300x234.png 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-398 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image003.png\" alt=\"clip_image003.png\" width=\"498\" height=\"171\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image003.png 498w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image003-300x103.png 300w\" sizes=\"(max-width: 498px) 100vw, 498px\" \/><\/p>\n<h4>\u00a0Ein Device (&#8222;Thing&#8220;) erzeugen<\/h4>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/create-thing.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/create-thing.html<br \/>\n<\/a>Mit der verschl\u00fcsselten CLI ins AWS arbeiten wir jetzt daran, eine logisches Objekt f\u00fcr den Endpunkt zu erstellen, ein sogenanntes &#8222;thing&#8220;. Der Name thingName ist nur ein Handle, die thingArn muss man sich bereithalten und notieren f\u00fcr sp\u00e4ter.<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-400 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image004.png\" alt=\"clip_image004.png\" width=\"495\" height=\"120\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image004.png 734w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image004-300x73.png 300w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><br \/>\n<img loading=\"lazy\" class=\"wp-image-402 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image005.png\" alt=\"clip_image005.png\" width=\"344\" height=\"170\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image005.png 415w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image005-300x148.png 300w\" sizes=\"(max-width: 344px) 100vw, 344px\" \/><\/p>\n<h4><\/h4>\n<h4>Die Verbindung vom Device zu AWS IoT verschl\u00fcsseln<\/h4>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/secure-communication.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/secure-communication.html<br \/>\n<\/a>Man generiert jetzt ein neues Zertifikat und l\u00e4dt alle Teile auf den PC herunter:<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-404 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image006.png\" alt=\"clip_image006.png\" width=\"1024\" height=\"371\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image006.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image006-300x109.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image006-768x278.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><img loading=\"lazy\" class=\"size-full wp-image-406 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image007.png\" alt=\"clip_image007.png\" width=\"1024\" height=\"157\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image007.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image007-300x46.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image007-768x118.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Das Zertifikat muss noch aktiviert und mit dem Device verbunden werden:<br \/>\n<span style=\"color: #3366ff;\">aws iot create-keys-and-certificate &#8211;set-as-active &#8211;certificate-pem-outfile cert.pem &#8211;public-key-outfile publicKey.pem &#8211;private-key-outfile privateKey.pem<\/span><br \/>\n<img loading=\"lazy\" class=\"size-full wp-image-408 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image008.png\" alt=\"clip_image008.png\" width=\"261\" height=\"216\" \/><\/p>\n<p>Das weitere ist etwas kompliziert: zuerst wird eine Policy erzeugt (<span style=\"color: #3366ff;\">create-policy<\/span>), dies dann mit dem Zertifikat verbunden (<span style=\"color: #3366ff;\">attach-principal-policy<\/span>) und dann die Policy dem thing angeh\u00e4ngt (<span style=\"color: #3366ff;\">attach-thing-principal<\/span>).<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-410 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image009.png\" alt=\"clip_image009.png\" width=\"808\" height=\"247\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image009.png 808w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image009-300x92.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image009-768x235.png 768w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/p>\n<p>Das Policy Dokumenet beschreibt die Berechtigungen:<\/p>\n<pre><span style=\"color: #3366ff;\">{<\/span>\r\n<span style=\"color: #3366ff;\"> \"Version\": \"2012-10-17\",<\/span>\r\n<span style=\"color: #3366ff;\"> \"Statement\": [{<\/span>\r\n<span style=\"color: #3366ff;\"> \"Effect\": \"Allow\",<\/span>\r\n<span style=\"color: #3366ff;\"> \"Action\":[\"iot:*\"],<\/span>\r\n<span style=\"color: #3366ff;\"> \"Resource\": [\"*\"]<\/span>\r\n<span style=\"color: #3366ff;\"> }]<\/span>\r\n<span style=\"color: #3366ff;\"> }<\/span><\/pre>\n<p><img loading=\"lazy\" class=\"size-full wp-image-412 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image010.png\" alt=\"clip_image010.png\" width=\"804\" height=\"92\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image010.png 804w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image010-300x34.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image010-768x88.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-414 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image011.png\" alt=\"clip_image011.png\" width=\"806\" height=\"93\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image011.png 806w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image011-300x35.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image011-768x89.png 768w\" sizes=\"(max-width: 806px) 100vw, 806px\" \/><\/p>\n<p>Auf der IoT Konsole sieht das so aus:<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-416 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image012.png\" alt=\"clip_image012.png\" width=\"797\" height=\"374\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image012.png 797w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image012-300x141.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image012-768x360.png 768w\" sizes=\"(max-width: 797px) 100vw, 797px\" \/><\/p>\n<p>Ausserdem ben\u00f6tigt man das Zertifikat sp\u00e4ter f\u00fcr den MQTT Client, deshalb wird es lokal abgespeichert (aws-iot-blinkm-dev1-cert.pem).\u00a0Man wird auch auch das AWS IoT Root Zertifikat ben\u00f6tigen, das man von der AWS Konsole herunterl\u00e4dt (aws-iot-root-ca.pem).<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-418 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image013.png\" alt=\"clip_image013.png\" width=\"802\" height=\"94\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image013.png 802w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image013-300x35.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image013-768x90.png 768w\" sizes=\"(max-width: 802px) 100vw, 802px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h4>MQTT Client installieren und Daten schicken<\/h4>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/verify-pub-sub.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/verify-pub-sub.html<br \/>\n<\/a>MSQTT Client beschaffen und installieren; dies setzt OpenSSL Light voraus (z.B..http:\/\/slproweb.com\/products\/Win32OpenSSL.html)<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-422 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image015.png\" alt=\"clip_image015.png\" width=\"425\" height=\"332\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image015.png 642w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image015-300x234.png 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-420 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image014.png\" alt=\"clip_image014.png\" width=\"425\" height=\"348\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image014.png 608w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image014-300x246.png 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-424 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image016.png\" alt=\"clip_image016.png\" width=\"424\" height=\"333\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image016.png 644w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image016-300x236.png 300w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><\/p>\n<p>Anstelle eines Java Clients (<a href=\"http:\/\/mqttfx.jfx4ee.org\/\">http:\/\/mqttfx.jfx4ee.org\/\/<\/a>) verwenden wir mosquitto-1.4.5-install-win32.exe.\u00a0Mit describe-endpoint erh\u00e4lt man die endpointAdress, die im MQTT Client zu verwenden ist. Mit den Zertifikaten hat man alles f\u00fcr die ersten Meldungen.<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-426 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image017.png\" alt=\"clip_image017.png\" width=\"585\" height=\"85\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image017.png 730w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image017-300x44.png 300w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><\/p>\n<p>Wir simulieren mehrere Endpunkte, indem wir den MQTT Client wie oben beschrieben noch mindestens auf einem anderen PC installieren und dabei jeweils einen anderen Namen <strong>BlinkM-devx-test<\/strong> w\u00e4hlen. Die Meldung &#8222;Hello, World&#8220; wird vom MQTT Client mit Namen <strong>BlinkM-dev3-test <\/strong>unter dem Topic<strong> topic\/blinkm-test\u00a0<\/strong>geschickt und erscheint auf dem 2. MQTT Client <strong>BlinkM-dev2-test<\/strong>.<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-428 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image018.png\" alt=\"clip_image018.png\" width=\"1017\" height=\"138\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image018.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image018-300x41.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image018-768x104.png 768w\" sizes=\"(max-width: 1017px) 100vw, 1017px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-430 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image019.png\" alt=\"clip_image019.png\" width=\"1018\" height=\"166\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image019.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image019-300x49.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image019-768x125.png 768w\" sizes=\"(max-width: 1018px) 100vw, 1018px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-432 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image020.png\" alt=\"clip_image020.png\" width=\"1020\" height=\"321\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image020.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image020-300x94.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image020-768x242.png 768w\" sizes=\"(max-width: 1020px) 100vw, 1020px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-434 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image021.png\" alt=\"clip_image021.png\" width=\"1016\" height=\"206\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image021.png 1006w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image021-300x61.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image021-768x156.png 768w\" sizes=\"(max-width: 1016px) 100vw, 1016px\" \/><\/p>\n<h3><\/h3>\n<h4>Regel erstellen, die MQTT Telegramme als Datei in S3 ablegt<\/h4>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/config-and-test-rules.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/config-and-test-rules.html<br \/>\n<\/a>Die n\u00e4chsten Schritte erfolgen in der AWS IoT Konsole. Bisher sieht man das Device, die Policy und das aktive Zertifikat. Man ertellt eine Rolle (create-role),\u00a0die zuerst in der AWS IAM erstellt werden muss und die beiden AWS Rollenberechtigungen haben muss. Es ist dazu vorher wieder ein Policy Dokument f\u00fcr die Rolle zu erstellen:<\/p>\n<pre><span style=\"color: #3366ff;\">{<\/span>\r\n<span style=\"color: #3366ff;\"> \"Version\": \"2012-10-17\",<\/span>\r\n<span style=\"color: #3366ff;\"> \"Statement\": [{<\/span>\r\n<span style=\"color: #3366ff;\"> \"Sid\": \"\",<\/span>\r\n<span style=\"color: #3366ff;\"> \"Effect\": \"Allow\",<\/span>\r\n<span style=\"color: #3366ff;\"> \"Principal\": {<\/span>\r\n<span style=\"color: #3366ff;\"> \"Service\": \"iot.amazonaws.com\"<\/span>\r\n<span style=\"color: #3366ff;\"> },<\/span>\r\n<span style=\"color: #3366ff;\"> \"Action\": \"sts:AssumeRole\"<\/span>\r\n<span style=\"color: #3366ff;\"> }]}<\/span><\/pre>\n<p>Die gleichen Schritte w\u00e4ren f\u00fcr Dynamo DB und Lambda n\u00f6tig (nicht erstellt). Stattdessen wird mit einer Rule die MQTT Meldung als Datei in die S3 geschrieben.<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-436 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image022.png\" alt=\"clip_image022.png\" width=\"1024\" height=\"466\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image022.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image022-300x137.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image022-768x350.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/> <img loading=\"lazy\" class=\"alignleft size-full wp-image-438\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image023.png\" alt=\"clip_image023.png\" width=\"1024\" height=\"82\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image023.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image023-300x24.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image023-768x62.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/> <img loading=\"lazy\" class=\"size-full wp-image-440 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image024.png\" alt=\"clip_image024.png\" width=\"1024\" height=\"374\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image024.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image024-300x110.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image024-768x281.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/> <img loading=\"lazy\" class=\"size-full wp-image-442 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image025.png\" alt=\"clip_image025.png\" width=\"706\" height=\"333\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image025.png 706w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image025-300x142.png 300w\" sizes=\"(max-width: 706px) 100vw, 706px\" \/><\/p>\n<p>Die Rules k\u00f6nnen im GUI angelegt werden. Man schickt alles (SELECT * FROM &#8218;#&#8216;) nach S3, wo entsprechender Bucket erscheint und Datei. <strong>Dass der Name der Datei dem AWS secrect Access Key des AWS <em>Root<\/em> Users entspricht und nicht (offensichtlich) ge\u00e4ndert werden kann, ist ein grobfahrl\u00e4ssiger Bug<\/strong>.<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-444 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image026.png\" alt=\"clip_image026.png\" width=\"1024\" height=\"691\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image026.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image026-300x202.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image026-768x518.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/> <img loading=\"lazy\" class=\"size-full wp-image-446 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image027.png\" alt=\"clip_image027.png\" width=\"1024\" height=\"137\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image027.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image027-300x40.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image027-768x103.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/> <img loading=\"lazy\" class=\"size-full wp-image-448 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image028.png\" alt=\"clip_image028.png\" width=\"831\" height=\"276\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image028.png 831w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image028-300x100.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image028-768x255.png 768w\" sizes=\"(max-width: 831px) 100vw, 831px\" \/><\/p>\n<h4><\/h4>\n<h4>Asynchrone Kommunikation mit Shadow Devices<\/h4>\n<p><a href=\"https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/registry-and-shadows.html\">https:\/\/docs.aws.amazon.com\/iot\/latest\/developerguide\/registry-and-shadows.html<br \/>\n<\/a>AWS IoT kann auch mit offline Devices umgehen. Der Dreh- und Angelpunkt ist ein Shadow Device, das die Kommunikation speichert.<\/p>\n<ul>\n<li><em>A thing, such as an internet-connected light bulb, is registered in the Thing Registry.<\/em><\/li>\n<li><em>The light bulb publishes its current state (for example, &#8222;power = on&#8220; and &#8222;color = green&#8220;) to AWS IoT. AWS IoT stores the state in the thing shadow document.<\/em><\/li>\n<li><em>An application, such as a mobile app controlling the light bulb, uses a RESTful API to query AWS IoT for the last reported state of the light bulb.<\/em><\/li>\n<li><em>An application uses a RESTful API to request a change in thing state. For example, a mobile app requests that the light bulb change its color to red. The application does not have to communicate directly with the thing or be resilient to issues like intermittent connectivity. AWS IoT will synchronize the desired state with the thing the next time the thing is connected.<\/em><\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\" wp-image-450 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image029.png\" alt=\"clip_image029.png\" width=\"399\" height=\"222\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image029.png 760w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image029-300x167.png 300w\" sizes=\"(max-width: 399px) 100vw, 399px\" \/><\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-452 alignnone\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image030.png\" alt=\"clip_image030.png\" width=\"1024\" height=\"168\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image030.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image030-300x49.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image030-768x126.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>So sieht die AWS IoT Seite schliesslich aus: 2 Devices, 1 Policy, 1 Zertifikat und eine Regel<\/p>\n<p><img loading=\"lazy\" class=\"alignleft size-full wp-image-454\" src=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image031.png\" alt=\"clip_image031.png\" width=\"1024\" height=\"259\" srcset=\"http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image031.png 1024w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image031-300x76.png 300w, http:\/\/wp.andreas.bieri.name\/myblog\/wp-content\/uploads\/2016\/04\/clip_image031-768x194.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<h4>Weiterf\u00fchrendes<\/h4>\n<ul>\n<li><a href=\"https:\/\/create.arduino.cc\/projecthub\/Gersaibot\/temperature-streaming-with-arduino-big-data-tools-eb22fc?ref=similar&amp;ref_id=14610&amp;offset=2\" target=\"_blank\" rel=\"noopener\">Temperature Streaming with Arduino + Big Data Tools<\/a>\u00a0Beispiel mit vielen bekannte BigData-Plattformen<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>AWS IoT Gelegentlich nutze ich Dienste vom Amazon AWS. Aus der stattlichen Liste von Diensten habe ich das Internet-of-Things kurz angeschaut. AWS IoT bietet (Zitat): AWS IoT ist eine Plattform, \u00fcber die Sie Ger\u00e4te mit AWS Services und anderen Ger\u00e4ten verbinden, Daten und Interaktionen sch\u00fctzen, Ger\u00e4tedaten verarbeiten und als Grundlage verwenden k\u00f6nnen. Au\u00dferdem erm\u00f6glicht sie [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[20,63,85],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Amazon AWS IoT: Test mit MQTT - Merkbar.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Amazon AWS IoT: Test mit MQTT - Merkbar.\" \/>\n<meta property=\"og:description\" content=\"AWS IoT Gelegentlich nutze ich Dienste vom Amazon AWS. Aus der stattlichen Liste von Diensten habe ich das Internet-of-Things kurz angeschaut. AWS IoT bietet (Zitat): AWS IoT ist eine Plattform, \u00fcber die Sie Ger\u00e4te mit AWS Services und anderen Ger\u00e4ten verbinden, Daten und Interaktionen sch\u00fctzen, Ger\u00e4tedaten verarbeiten und als Grundlage verwenden k\u00f6nnen. Au\u00dferdem erm\u00f6glicht sie [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/\" \/>\n<meta property=\"og:site_name\" content=\"Merkbar.\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-29T23:17:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-09T18:21:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"wp_blogadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/#website\",\"url\":\"http:\/\/wp.andreas.bieri.name\/myblog\/\",\"name\":\"Merkbar.\",\"description\":\"IT, Elektronik und Mathematik\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/wp.andreas.bieri.name\/myblog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png\",\"contentUrl\":\"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#webpage\",\"url\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/\",\"name\":\"Amazon AWS IoT: Test mit MQTT - Merkbar.\",\"isPartOf\":{\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#primaryimage\"},\"datePublished\":\"2016-03-29T23:17:45+00:00\",\"dateModified\":\"2017-12-09T18:21:12+00:00\",\"author\":{\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\"},\"breadcrumb\":{\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"http:\/\/wp.andreas.bieri.name\/myblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Amazon AWS IoT: Test mit MQTT\"}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\",\"name\":\"wp_blogadmin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/wp.andreas.bieri.name\/myblog\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"caption\":\"wp_blogadmin\"},\"url\":\"http:\/\/wp.andreas.bieri.name\/myblog\/author\/wp_blogadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Amazon AWS IoT: Test mit MQTT - Merkbar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/","og_locale":"de_DE","og_type":"article","og_title":"Amazon AWS IoT: Test mit MQTT - Merkbar.","og_description":"AWS IoT Gelegentlich nutze ich Dienste vom Amazon AWS. Aus der stattlichen Liste von Diensten habe ich das Internet-of-Things kurz angeschaut. AWS IoT bietet (Zitat): AWS IoT ist eine Plattform, \u00fcber die Sie Ger\u00e4te mit AWS Services und anderen Ger\u00e4ten verbinden, Daten und Interaktionen sch\u00fctzen, Ger\u00e4tedaten verarbeiten und als Grundlage verwenden k\u00f6nnen. Au\u00dferdem erm\u00f6glicht sie [&hellip;]","og_url":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/","og_site_name":"Merkbar.","article_published_time":"2016-03-29T23:17:45+00:00","article_modified_time":"2017-12-09T18:21:12+00:00","og_image":[{"url":"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png"}],"twitter_card":"summary","twitter_misc":{"Verfasst von":"wp_blogadmin","Gesch\u00e4tzte Lesezeit":"5 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/#website","url":"http:\/\/wp.andreas.bieri.name\/myblog\/","name":"Merkbar.","description":"IT, Elektronik und Mathematik","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/wp.andreas.bieri.name\/myblog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"ImageObject","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#primaryimage","inLanguage":"de","url":"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png","contentUrl":"http:\/\/wp.andreas.bieri.name\/wp-content\/uploads\/2016\/04\/clip_image001.png"},{"@type":"WebPage","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#webpage","url":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/","name":"Amazon AWS IoT: Test mit MQTT - Merkbar.","isPartOf":{"@id":"http:\/\/wp.andreas.bieri.name\/myblog\/#website"},"primaryImageOfPage":{"@id":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#primaryimage"},"datePublished":"2016-03-29T23:17:45+00:00","dateModified":"2017-12-09T18:21:12+00:00","author":{"@id":"http:\/\/wp.andreas.bieri.name\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d"},"breadcrumb":{"@id":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/2016\/03\/29\/amazon-aws-iot-test-mit-mqtt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"http:\/\/wp.andreas.bieri.name\/myblog\/"},{"@type":"ListItem","position":2,"name":"Amazon AWS IoT: Test mit MQTT"}]},{"@type":"Person","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d","name":"wp_blogadmin","image":{"@type":"ImageObject","@id":"http:\/\/wp.andreas.bieri.name\/myblog\/#personlogo","inLanguage":"de","url":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","caption":"wp_blogadmin"},"url":"http:\/\/wp.andreas.bieri.name\/myblog\/author\/wp_blogadmin\/"}]}},"_links":{"self":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts\/456"}],"collection":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/comments?post=456"}],"version-history":[{"count":2,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts\/456\/revisions"}],"predecessor-version":[{"id":3386,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/posts\/456\/revisions\/3386"}],"wp:attachment":[{"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/media?parent=456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/categories?post=456"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wp.andreas.bieri.name\/myblog\/wp-json\/wp\/v2\/tags?post=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}