{"id":2845,"date":"2018-12-01T21:58:29","date_gmt":"2018-12-01T16:28:29","guid":{"rendered":"http:\/\/navveenbalani.dev\/?p=2845"},"modified":"2019-12-18T22:35:01","modified_gmt":"2019-12-18T17:05:01","slug":"building-application-with-amazon-iot-platform","status":"publish","type":"post","link":"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/","title":{"rendered":"Building application with Amazon IoT Platform"},"content":{"rendered":"\n<p>This article is part of IoT Architecture Series &#8211; <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/\">https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/<\/a><\/p>\n\n\n\n<p>In this section, we would look at how to realize the IoT use case using Amazon Web Services (AWS). Similar to Microsoft Azure and IBM Bluemix, AWS offers a host of services to enable creating IoT applications. <\/p>\n\n\n\n<p>Amazon (on 8th October 2015) announced the AWS IoT service at their AWS re: Invent event. AWS IoT makes it easier to build IoT applications. AWS IoT platform allows you to collect, store, analyze and take actions against large volumes of data streaming from your connected devices. This was an important update from Amazon as prior to this announcement; there were no direct IoT offering from Amazon like the IoT Hub from Microsoft or IBM Watson IoT Platform. However, this did not stop anyone from building an IoT application on AWS, as you could develop a custom application or host open source components (like Mosquito for MQTT) that provide similar functionality on AWS. With the acquisition of 21emetry (and its ThingFabric IoT platform) in March 2015, we feel they had closed this gap earlier, but there was no official announcement on how ThingFabric capabilities would be used in the context of AWS. We assume they leveraged the ThingFabric platform (MQTT and HTTP support) and the rules integration from ThingFabric, which allows connecting to various AWS services. Please note this is purely our viewpoint, and there is no official confirmation on how ThingFabric platform is leveraged (if at all) internally with the Amazon IoT offering.  <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"723\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1-1024x723.jpg\" alt=\"\" class=\"wp-image-2846\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1-1024x723.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1-300x212.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1-768x543.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1.jpg 1778w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Let\u2019s analyze all the components \u2013<\/p>\n\n\n\n<p><strong>AWS\nIoT Device SDK<\/strong><\/p>\n\n\n\n<p>AWS IoT Device SDK simplifies the process\nof connecting devices securely to the AWS IoT platform over MQTT protocol. The\ndevice SDKs currently supports C SDK for Linux, libraries for Arduino platform\nand Node.JS libraries for embedded platforms like BeagleBone, Raspberry Pi, etc.<\/p>\n\n\n\n<p>All bi-directional\ncommunication between devices and AWS IoT platform is encrypted through Transport Layer Security (TLS) protocol.&nbsp; We would talk about the security aspects in\nthe later section. The device SDK also allows an option of using third party cryptographic libraries and TLS 1.2\ncertificates for connecting devices to the AWS IoT platform securely. <em>\n\n\n\n<\/em><\/p>\n\n\n\n<p><em>Tip &#8211;\nThe AWS IoT Starter Kits provides everything you need in a box to get started\nwith Amazon IoT platform. Just plug and play the device and it is connected to AWS IoT platform. You can\npurchase the kits from Amazon.com.<\/em><em>\n\n\n\n<\/em><\/p>\n\n\n\n<p><strong>AWS\nIoT<\/strong><\/p>\n\n\n\n<p>AWS IoT is a highly scalable and managed\ncloud platform that allows devices to securely\nconnect and interact with AWS services and other devices over\nstandardized MQTT and HTTP protocol. AWS IoT also allows applications to\ninteract with devices even when they are offline by storing their latest state\nand later syncing the state back to actual devices when they are connected\nback.<\/p>\n\n\n\n<p>The AWS IoT platform consists of a core set of capabilities as shown in the figure below. This includes a device gateway, device registry, rules engine and device shadows component.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"758\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution2-1024x758.jpg\" alt=\"\" class=\"wp-image-2847\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution2-1024x758.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution2-300x222.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution2-768x568.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution2.jpg 1216w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Let\u2019s understand each of the components \u2013<\/p>\n\n\n\n<ul><li>Device Gateway: The AWS IoT Device\nGateway is a highly scalable managed service that enables devices to communicate securely with AWS IoT. The Device\nGateway supports publish-subscribe model\nand provides support for MQTT, WebSocket and HTTP 1.1 protocols. We had\ndiscussed the publish-subscribe pattern earlier in our Chapter 1. The main\nadvantage of using this pattern is that it decouples sender and consumer\nthereby allowing new devices to get connected and start receiving the messages\nby subscribing to relevant topics.<\/li><li>Device Registry: Device\nRegistry stores the metadata about the devices and acts as identity store of devices. Each\ndevice is assigned a unique identity by Device registry during\nregistration. We had described the typical features of device registry earlier\nin Chapter 1.<\/li><li>Device Shadows:&nbsp; Device Shadows is a unique capability\nprovided as part of the AWS IoT platform that creates a virtual device or\nshadow of the device that contains its latest state. The application can communicate with shadow\/virtual device through\nthe APIs even if the actual physical device is offline. When the actual device\ngets connected, AWS IoT automatically synchronizes the state and pushes changes\nto the actual device based on changes that were\ndone on the virtual device.<\/li><li>Rules Engine: Rules Engine is a highly scalable engine that\ntransforms and route incoming messages from devices to AWS services based on\nbusiness rules you have authored. Rules are authored using SQL-like syntax and query is made against a MQTT Topic to extract the required data from\nthe incoming message. The incoming message needs to be in JSON format. Here is\na sample query <\/li><\/ul>\n\n\n\n<p><strong>SELECT <\/strong><strong>*<\/strong><strong>FROM <\/strong>&#8216;iot\/ccar-ad\/#&#8217;<strong>WHERE<\/strong> speed <strong>&gt;<\/strong>120<\/p>\n\n\n\n<p>In above query, \u2018&#8217;iot\/ccar-ad\/#\u2019 is the topic where devices publish the following JSON message. In this case the rule would be evaluated to true as speed is 140 km\/hour.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"deviceid\":\"audi22\",\n\"speed\":140,\n\"gps\":{\n\"latitude\":...,\n\"longitude\":...\n}\n\"tyre1\":30,\n.....\n}\n<\/code><\/pre>\n\n\n\n<p>AWS IoT also provides various options for secure communication between devices and the AWS IoT platform. Understanding the end to end security strategy for your IoT application is a key step, as it includes devices, AWS IoT platform, and rest of AWS services being used as part of the IoT application. Let\u2019s talk about it in detail in the next section.<\/p>\n\n\n\n<p><strong>Device\nSecurity, Authorization, and\nAuthentication<\/strong><\/p>\n\n\n\n<p>Let\u2019s understand how devices can securely\nconnect to AWS IoT platform and process of authorizing devices. AWS IoT\nplatform provides secure, bi-directional communication between devices and the\nAWS cloud. Devices connect using a choice\nof identity through one of the three\noptions \u2013 Digital certificates (X.509 certificate), AWS authentication through\nuser and passwords or leveraging their own\nidentity provider or third party providers like Google, Facebook using Amazon Cognito.\nBased on identity choice, you choose which application protocol to be used for communication and how you want to\nmanage identities. For instance, you would typically choose X.509 certificate\nwith MQTT protocol as it would allow bi-directional\ncommunication between devices and AWS IoT platform to be encrypted. Amazon\nCognito is used if you have already\ninvested in third-party identity\nmanagement and want to leverage it for IoT applications and HTTP protocol for\nmanaging identities using AWS Identity and Access Management (IAM) service. We\nwould not recommend using HTTP protocol for devices unless a MQTT library doesn\u2019t exist for that device. <em>\n\n\n\n<\/em><\/p>\n\n\n\n<p><em>Note\n&#8211; TLS requires digital certificates for authentication. AWS supports X.509\ncertificates that enable asymmetric keys to be\nused with devices. AWS IoT command line interface (CLI) makes it easier\nto create, manage and deploy X.509 digital certificates.<\/em><em>\n\n\n\n<\/em><\/p>\n\n\n\n<p>Once a device is authenticated,\nauthorization is handled through\npolicies. Policies let you execute device operations (connect, publish,\nsubscribe, receive) based on the permissions defined. You create policies based\non your identity choices, for instance,\nyou create AWS IoT policies and attach it to\nX.509 certificate and Amazon Cognito, while for\nIAM user management, you create IAM policies through the IAM console.\nOnce authorized, the specific operations can be\nperformed. This completes the\ndevice communication with the AWS IoT platform. Now your IoT application would\nlike to invoke other AWS services, like persisting the device data from topic\nto DynamoDB or processing large volumes of data streams in real-time through\nAmazon Kinesis stream instance. This is\nhandled through the rules instance as discussed earlier. In order to access the particular Amazon\nKinesis stream instance, you need to have a policy defined in IAM, which is\nused by the rule instance to allow AWS IoT to access the Amazon Kinesis stream\ninstance securely. This ensures an end-to-end\nsecure connectivity between devices and Amazon IoT platform and from Amazon IoT\nplatform to rest of AWS services.<\/p>\n\n\n\n<p>The following diagram shows an execution flow for a secured MQTT connectivity between devices and AWS IoT platform.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"1024\" height=\"601\" src=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution3-1024x601.jpg\" alt=\"\" class=\"wp-image-2848\" srcset=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution3-1024x601.jpg 1024w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution3-300x176.jpg 300w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution3-768x451.jpg 768w, https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution3.jpg 1694w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>To summarize an execution flow for a\nsecured MQTT connectivity, the onus is on you to assign unique identities to\neach device through Device Registry, create and manage certificates on the\ndevices and connect to Amazon IoT over TLS protocol using these\ncertificates.&nbsp; You can use Amazon Device SDK, which provides libraries for TLS based\nauthentication. Once devices establish a\nconnection, the Amazon IoT platform, in turn,\nis responsible for authenticating your devices based on the client X.509\ncertificate, validating it based on public keys. Once authenticated,\nauthorization of operations happens based on the policies defined in the certificate and valid operations are executed. For instance, a device may only be able to read\nmessages from a topic and not publish on the topic. As discussed earlier, to\ninteract with other AWS services, you author rules and define how you want to\nroute the messages.&nbsp; For instance, you\ncan route the messages to Amazon Kinesis for processing large volumes of data\nstreams in real-time. In order to access\nthe particular Amazon Kinesis stream instance, you need to have a policy (roles and permissions) defined in IAM, and\nyour rule instance uses the policy to allow AWS IoT to access the Amazon\nKinesis stream instance securely. <\/p>\n\n\n\n<p><strong>Storage<\/strong><\/p>\n\n\n\n<p>AWS provides various options for storage &#8211;\nAmazon DynamoDB (NoSQL Database), Amazon\nRedshift or Amazon Relation Database service. For IoT applications, the initial\nchoice is to use Amazon DynamoDB. Amazon DynamoDB is a highly scalable, high-performance NoSQL database with\nsingle-digit millisecond latency at any scale. It is a fully managed database\nservice and provides first class support to trigger events based on data\nmodifications in tables via Amazon Lambda service. We would talk about Amazon Lambda\nservice in a later section.<\/p>\n\n\n\n<p>Amazon Redshift is a fast, fully managed,\npetabyte-scale data warehouse that delivers fast query by parallelizing queries\nacross nodes to analyze massive volumes of data. Depending on the volume of\ndata that needs to be analyzed over a period of time and complexity of analytics\nqueries, you can move over to Amazon Redshift or import the data from DynamoDB\nto Redshift. You need to have the right schema design with Amazon Redshift as\nit would impact querying, indexing, and\nperformance of your queries. For instance, if you need to find out the average power consumption of a connected city\nbased on each location at runtime, you are dealing with at least millions of\nrecords. In such scenario, Amazon Redshift may be an ideal choice. Also, not\nall device data needs to be treated equally and stored in Redshift, but only a\nset of key actionable data sets, streaming from millions of connected devices,\nwhich are used to derive actionable insights by running complex analytics\nqueries on it.<\/p>\n\n\n\n<p>From an integration perspective, you can directly store the data from devices into DynamoDB using Amazon IoT rules engine. You need to author rules in Amazon IoT to trigger on specified MQTT topic, select the message and also provide the IAM role which has access to DynamoDB service and can perform required operations (like insert) on DynamoDB. The following shows an example of a rule which dumps all device data from topic \u2018ccar\u2019 into DynamoDB table \u2018ccardb\u2019:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"SQL\":\"SELECT * FROM 'topic\/ccar'\",\n\"ruleDisabled\":false,\n\"actions\":[{\n\"dynamoDB\":{\n\"tableName\":\"ccardb\",\n\"hashKeyField\":\"key\",\n\"hashKeyValue\":'${topic(3)}',\n\"rangeKeyField\":\"timestamp\",\n\"rangeKeyValue\":'${timestamp()}',\n\"roleArn\":\"arn:aws:iam::1xxx\/iot-actions-role\"\n}\n}]\n}\n<\/code><\/pre>\n\n\n\n<p>The above assumes you have created a\nDynamoDB table with the name as ccardb. As part of table name creation, you\nspecify the primary key attributes as Hash and Range or Hash. Choosing the\nright Hash and Range is a key consideration, as this would impact how the data\nis indexed and retrieved. In the above case, we choose topic name and timestamp\nas hash and range values.<\/p>\n\n\n\n<p>We talked about the time series domain earlier; you can design the DynamoDB schema in\na way that it can handle time series operations effectively.<\/p>\n\n\n\n<p>To store the incoming data into Amazon Redshift,\nyou can use Amazon Kinesis Firehose. We will talk about Amazon Kinesis Firehose\nin the next section. You specify the Amazon Kinesis stream instance name and\nIAM role for access. The stream is configured to dump the data into Amazon Redshift.<\/p>\n\n\n\n<p>Following shows an example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\"sql\":\"SELECT * FROM 'topic\/ccar'\",\n\"ruleDisabled\":false,\n\"actions\":[{\n\" firehose\":{\n\"roleArn\":\" arn:aws:iam::2xxx\/iot-actions-role \",\n\"deliveryStreamName\":\"ccarfst\"\n}\n}]\n}\n<\/code><\/pre>\n\n\n\n<p><strong>Amazon\nKinesis<\/strong><\/p>\n\n\n\n<p>Amazon Kinesis platform provides real-time\ndata processing, enabling applications to capture a continuous stream of data from devices and other sources, analyze\nit at runtime to generate real-time dashboards or trigger required action.\nAmazon Kinesis platform consists of three services:<\/p>\n\n\n\n<ul><li>Amazon Kinesis Firehose: Amazon\nKinesis Firehose lets you capture streaming data and store the data directly\ninto Amazon S3 and Amazon Redshift and make it available in near real-time for\nreporting and analysis. <\/li><li>Amazon Kinesis Streams: Amazon\nKinesis stream lets you build custom real-time highly scalable streaming\napplications based on your requirements, such as real-time optimizations from multi-stage process flows. Let\u2019s take an\nexample of a connected airport and one of the use cases is around providing\nfastest journey time for passengers throughout the airport. The process would involve streaming data from multiple\nconnected sources and points of interest, like check-in counter, security\ngates, existing passenger movements, baggage handling and services,\nimmigrations, etc. and come up with a specialized set of algorithms that could\ncorrelate the data at real-time and predict passenger journey time and then\noptimize it.<\/li><li>Amazon Kinesis Analytics:\nAmazon Kinesis Analytics service (currently not released at the time of writing this book) will make it easier\nto extract and analyze data using SQL-like\nqueries and send the output of queries to specified services (like AWS Lambda)\nto create alerts and take correction action in real-time. Prior to Amazon Kinesis Analytics service, you\nneed to create your own custom AWS Lambda functions to extract the data. The\nincoming data is usually in JSON format,\nand your custom functions would use the JSON APIs to extract the data and\nexecute custom rules and take action based on the outcome.<\/li><\/ul>\n\n\n\n<p>You can directly stream the data from\ndevices into Amazon Kinesis Firehose or Amazon Kinesis Streams using Amazon IoT\nrules engine. <\/p>\n\n\n\n<p>You need to author rules to trigger on specified MQTT topic, select the message and also provide the IAM role which has access the Kinesis instance. The following is configuration that needs to be set for accessing the Kinesis streaming instance:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"kinesis\":{\n\"roleArn\":\"string\",\/\/IAM Role\n\"streamName\":\"string\",\/\/ Kinesis stream instance name\n\"partitionKey\":\"string\"\/\/ Kinesis stream partition key\n},\n<\/code><\/pre>\n\n\n\n<p>Following is the configuration for Amazon Kinesis Firehose:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"firehose\":{\n\"roleArn\":\"string\",\/\/IAM Role\n\"deliveryStreamName\":\"string\"\/\/ Stream name\n}\n<\/code><\/pre>\n\n\n\n<p>You can also use Amazon Kinesis Client\nLibrary to build required applications (like real-time dashboards) which can\nconsume the stream data in real-time or emit data to other AWS services like\nAmazon Lambda for event processing.<em>\n\n\n\n<\/em><\/p>\n\n\n\n<p><em>Note\n&#8211; Amazon Kinesis Aggregators is a Java framework that enables the automatic\ncreation of real-time aggregated time series data from Amazon Kinesis streams.\nThe project is available at\nhttps:\/\/github.com\/awslabs\/amazon-kinesis-aggregators and provides a good start\non how to provide time series analysis on the incoming data<\/em>.<em>\n\n\n\n<\/em><\/p>\n\n\n\n<p><strong>Amazon\nML<\/strong><\/p>\n\n\n\n<p>AWS provides Amazon Machine Learning service,\nwhich provides end-to-end support, and tooling for creating, training and\nfine-tuning machine learning models directly from supported data sources\n(Amazon Redshift, Amazon S3 or Amazon RDS), along with deployment and\nmonitoring.&nbsp; The models can be executed\nthrough APIs as part of your process to obtain predictions for your\napplications. <\/p>\n\n\n\n<p>Amazon ML provides interactive visual tools\nto create, evaluate, and deploy machine learning models.&nbsp; Amazon ML also provides the implementation of\ncommon data transformations, which is extremely helpful to prepare the data for\nevaluation.<\/p>\n\n\n\n<p>Amazon Machine Learning service is based on the same proven, highly scalable,\nML technology used by Amazon to perform critical functions like supply chain\nmanagement and fraudulent transaction identification. You could see various\nmachine learning algorithms (like classification, recommendation, etc.) in action on Amazon website.<\/p>\n\n\n\n<p><strong>AWS\nLambda<\/strong><\/p>\n\n\n\n<p>AWS Lambda allows you to run your custom\ncode in AWS cloud. You need to supply the code as Node.js (or Java) function\nand create a deployment package with the required dependency. As mentioned\nearlier, AWS Lambda functions can be executed asynchronously based on events\nfrom other AWS services like Amazon Kinesis. You can specify this mapping from\nAWS Lambda console, to associate your Lambda function with Amazon Kinesis\nsource name. AWS Lambda functions are a great way to invoke external services\n(like invoking a REST call for workflow generation in a SAP system), sending\nalerts and notifications on mobiles through Amazon Simple Notification Service or\nany custom code that needs to be executed based on the desired condition.<\/p>\n\n\n\n<p>Apart from the above services, AWS provides bunch of other services that can be used as part of the IoT applications like \u2013 Amazon ElastiCache for in-memory cache for storing asset metadata or using AWS CloudHSM service providing hardware appliance based secured key storage for handling sensitive data on cloud, for instance dealing with data from health care devices as per regulatory compliance. You can find all services at the products page at <a href=\"https:\/\/aws.amazon.com\/products\/\">https:\/\/aws.amazon.com\/products\/<\/a><\/p>\n\n\n\n<p>Next, we will look at <a href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/connected-car-solution-using-amazon-iot\/\">how to implement the connect car solution using Amazon IoT platform<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article is part of IoT Architecture Series &#8211; https:\/\/navveenbalani.dev\/index.php\/articles\/internet-of-things-architecture-components-and-stack-view\/ In this section, we would look at how to realize the IoT use case using Amazon Web Services (AWS). Similar to Microsoft Azure and IBM Bluemix, AWS offers a host of services to enable creating IoT applications. Amazon (on 8th October 2015) announced the AWS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2846,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,156],"tags":[287],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.0.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building application with Amazon IoT Platform - Current and Future Technology Trends by Navveen Balani<\/title>\n<meta name=\"description\" content=\"Building application with Amazon IoT Platform - Articles\" \/>\n<link rel=\"canonical\" href=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building application with Amazon IoT Platform - Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"og:description\" content=\"Building application with Amazon IoT Platform - Articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"Current and Future Technology Trends by Navveen Balani\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-01T16:28:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T17:05:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1778\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"14 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/navveenbalani.dev\/#website\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Current and Future Technology Trends by Navveen Balani\",\"description\":\"Current and Future Technology Trends by Navveen Balani\",\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/navveenbalani.dev\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/12\/amazon-iot-solution1.jpg\",\"width\":1778,\"height\":1256},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#webpage\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\",\"name\":\"Building application with Amazon IoT Platform - Current and Future Technology Trends by Navveen Balani\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#primaryimage\"},\"datePublished\":\"2018-12-01T16:28:29+00:00\",\"dateModified\":\"2019-12-18T17:05:01+00:00\",\"description\":\"Building application with Amazon IoT Platform - Articles\",\"breadcrumb\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/\",\"url\":\"https:\/\/navveenbalani.dev\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\",\"url\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/\",\"name\":\"Building application with Amazon IoT Platform\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#webpage\"},\"author\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"headline\":\"Building application with Amazon IoT Platform\",\"datePublished\":\"2018-12-01T16:28:29+00:00\",\"dateModified\":\"2019-12-18T17:05:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\"},\"image\":{\"@id\":\"https:\/\/navveenbalani.dev\/index.php\/articles\/building-application-with-amazon-iot-platform\/#primaryimage\"},\"keywords\":\"iot-guide\",\"articleSection\":\"Articles,IOT\",\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/navveenbalani.dev\/#\/schema\/person\/51f7ab14b20611d95e3c7fd4ea0950bf\",\"name\":\"Navveen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/navveenbalani.dev\/wp-content\/uploads\/2019\/07\/navveen_balani.jpeg\",\"width\":200,\"height\":200,\"caption\":\"Navveen\"},\"logo\":{\"@id\":\"https:\/\/navveenbalani.dev\/#personlogo\"},\"sameAs\":[\"http:\/\/naveenbalani.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2845"}],"collection":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/comments?post=2845"}],"version-history":[{"count":3,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2845\/revisions"}],"predecessor-version":[{"id":2865,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/posts\/2845\/revisions\/2865"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media\/2846"}],"wp:attachment":[{"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/media?parent=2845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/categories?post=2845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/navveenbalani.dev\/index.php\/wp-json\/wp\/v2\/tags?post=2845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}