{"id":224,"date":"2026-04-13T06:33:56","date_gmt":"2026-04-13T06:33:56","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/aws-iot-sitewise-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-internet-of-things-iot\/"},"modified":"2026-04-13T06:33:56","modified_gmt":"2026-04-13T06:33:56","slug":"aws-iot-sitewise-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-internet-of-things-iot","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/aws-iot-sitewise-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-internet-of-things-iot\/","title":{"rendered":"AWS IoT SiteWise Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Internet of Things (IoT)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Internet of Things (IoT)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>AWS IoT SiteWise is an AWS managed service for collecting, organizing, processing, and analyzing industrial equipment data (often called OT\/IIoT data) at scale. It is commonly used to build an \u201cindustrial data foundation\u201d where raw sensor readings become meaningful, queryable asset data such as \u201cMotor #12 temperature\u201d, \u201cLine 3 OEE\u201d, or \u201cPlant A energy consumption\u201d.<\/p>\n\n\n\n<p>In simple terms: <strong>AWS IoT SiteWise helps you model your facility and equipment (assets), ingest time-series measurements, calculate derived metrics, and make that data available to applications and dashboards<\/strong>\u2014without building your own historian and asset model system from scratch.<\/p>\n\n\n\n<p>Technically, AWS IoT SiteWise provides:\n&#8211; <strong>Asset modeling<\/strong> (asset models, assets, hierarchies, attributes, measurements, and computed properties)\n&#8211; <strong>Ingestion APIs<\/strong> for time-series values\n&#8211; <strong>Storage and query APIs<\/strong> for current and historical values\n&#8211; <strong>Optional visualization<\/strong> through <strong>AWS IoT SiteWise Monitor<\/strong> (portals, projects, dashboards)\n&#8211; <strong>Edge data collection<\/strong> using <strong>AWS IoT SiteWise Edge<\/strong> (typically deployed with AWS IoT Greengrass v2), enabling local collection and buffering when connectivity is intermittent<\/p>\n\n\n\n<p>The core problem it solves is a common industrial data challenge: <strong>industrial sensor data is high-volume, often messy, and lacks context<\/strong>. Without an asset model, your data becomes thousands of tag names or MQTT topics with unclear meaning. AWS IoT SiteWise adds structure (models\/assets), governance (permissions\/auditing), and standard APIs for applications and analytics.<\/p>\n\n\n\n<p>Service status and naming:\n&#8211; <strong>AWS IoT SiteWise<\/strong> is an active AWS service as of this writing.\n&#8211; <strong>AWS IoT SiteWise Monitor<\/strong> and <strong>AWS IoT SiteWise Edge<\/strong> are official components\/features associated with AWS IoT SiteWise (verify the latest component names and availability in the official docs for your region).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is AWS IoT SiteWise?<\/h2>\n\n\n\n<p><strong>Official purpose (what AWS built it for)<\/strong><br\/>\nAWS IoT SiteWise is designed to help you <strong>collect and organize industrial data from equipment and processes<\/strong>, and to <strong>compute and query asset-based metrics<\/strong> for operational visibility and analytics.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Model industrial assets<\/strong>: Define asset models (e.g., \u201cMotor\u201d, \u201cCompressor\u201d, \u201cFurnace\u201d), then instantiate assets (e.g., \u201cMotor-01\u201d).<\/li>\n<li><strong>Represent relationships<\/strong>: Use hierarchies to model structures such as Plant \u2192 Line \u2192 Cell \u2192 Machine.<\/li>\n<li><strong>Ingest time-series measurements<\/strong>: Send timestamped property values (temperature, pressure, vibration).<\/li>\n<li><strong>Store and query<\/strong>: Retrieve the latest values and historical time-series through APIs.<\/li>\n<li><strong>Compute derived values<\/strong>: Define computed properties (for example, transforms\/metrics) so applications don\u2019t have to recalculate every time. (Exact feature names and expressions should be verified in the latest docs.)<\/li>\n<li><strong>Visualize (optional)<\/strong>: Build dashboards and share them with users in <strong>AWS IoT SiteWise Monitor<\/strong>.<\/li>\n<li><strong>Collect at the edge (optional)<\/strong>: Deploy <strong>AWS IoT SiteWise Edge<\/strong> to connect to on-premises industrial protocols\/systems and forward data to AWS.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Asset models<\/strong>: Templates defining properties and (optionally) hierarchies.<\/li>\n<li><strong>Assets<\/strong>: Instances of models representing real-world equipment.<\/li>\n<li><strong>Properties<\/strong>:<\/li>\n<li><strong>Measurements<\/strong>: Time-series values (sensor readings).<\/li>\n<li><strong>Attributes<\/strong>: Static metadata (serial number, manufacturer).<\/li>\n<li><strong>Computed properties<\/strong>: Derived values (transforms\/metrics) computed from other properties (verify current compute feature details).<\/li>\n<li><strong>Data ingestion APIs<\/strong>: API operations for sending property values (commonly batched).<\/li>\n<li><strong>Query APIs<\/strong>: API operations to retrieve latest and historical values.<\/li>\n<li><strong>AWS IoT SiteWise Monitor<\/strong>: Portals\/projects\/dashboards for visualization (uses AWS identity integration; commonly AWS IAM Identity Center).<\/li>\n<li><strong>AWS IoT SiteWise Edge<\/strong>: On-prem\/edge collection and buffering (verify supported connectors\/protocols for your environment).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type and scope<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Service type<\/strong>: Fully managed AWS service (control plane + data plane) for industrial data modeling and time-series storage\/query of asset properties.<\/li>\n<li><strong>Scope<\/strong>: <strong>Regional<\/strong>. You create and use AWS IoT SiteWise resources in a specific AWS Region. Data is stored and processed in that Region.<br\/>\n  Multi-region strategies typically involve duplicating models and routing data to multiple regions (design carefully; verify latest AWS guidance).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the AWS ecosystem<\/h3>\n\n\n\n<p>AWS IoT SiteWise is often used alongside:\n&#8211; <strong>AWS IoT Core<\/strong> (device connectivity via MQTT, device identity, rules engine)\n&#8211; <strong>AWS IoT Greengrass v2<\/strong> (edge runtime; commonly used with SiteWise Edge)\n&#8211; <strong>Amazon S3 \/ data lakes<\/strong> (for long-term archival and analytics\u2014often via custom export pipelines or supported integration features; verify current native export options)\n&#8211; <strong>Amazon Timestream \/ Amazon OpenSearch Service \/ Amazon Redshift \/ AWS Glue \/ Amazon Athena<\/strong> (downstream analytics, depending on your architecture)\n&#8211; <strong>Amazon CloudWatch and AWS CloudTrail<\/strong> (operations monitoring and audit logging)\n&#8211; <strong>AWS IAM and (often) AWS IAM Identity Center<\/strong> (security\/access for APIs and SiteWise Monitor)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use AWS IoT SiteWise?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time to value<\/strong>: Build an industrial data foundation without deploying and operating a self-managed historian + modeling layer.<\/li>\n<li><strong>Improved operational visibility<\/strong>: Standardize how plants and equipment are described and measured across sites.<\/li>\n<li><strong>Enable analytics and optimization<\/strong>: Clean, contextualized asset data is easier to use for OEE, energy optimization, predictive maintenance, and anomaly detection.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Asset-centric abstraction<\/strong>: Engineers query \u201cMotor-01 temperature\u201d rather than parsing raw tag names\/topics.<\/li>\n<li><strong>Managed ingestion and storage<\/strong>: Avoid managing time-series storage engines and scaling concerns yourself.<\/li>\n<li><strong>APIs for current and historical values<\/strong>: Consistent access patterns for applications, dashboards, and analytics pipelines.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repeatable modeling<\/strong>: Models can be reused across plants and production lines.<\/li>\n<li><strong>Central governance<\/strong>: Define naming conventions, hierarchy standards, and access patterns.<\/li>\n<li><strong>Edge support<\/strong>: Where applicable, collect near equipment and buffer during network disruptions (with SiteWise Edge).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS IAM integration<\/strong>: Fine-grained access control via AWS IAM policies for APIs and resources.<\/li>\n<li><strong>Auditability<\/strong>: API activity can be recorded via AWS CloudTrail (verify coverage for your required events).<\/li>\n<li><strong>Encryption in transit<\/strong>: TLS for AWS API endpoints. Encryption at rest is handled by AWS (verify KMS\/customer-managed key options for your use cases in current docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Designed for <strong>high-volume industrial telemetry<\/strong> with batching patterns and server-side storage\/query.<\/li>\n<li><strong>Hierarchical models<\/strong> help you scale from a single machine to an entire enterprise of plants.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose AWS IoT SiteWise<\/h3>\n\n\n\n<p>Choose it when you need:\n&#8211; A managed way to model industrial assets and store\/query time-series measurements with context\n&#8211; A standard API layer for plant applications\n&#8211; Optional AWS-native dashboards (SiteWise Monitor) and\/or edge ingestion (SiteWise Edge)\n&#8211; A foundational layer for downstream analytics\/ML<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose AWS IoT SiteWise<\/h3>\n\n\n\n<p>Avoid it (or validate carefully) when:\n&#8211; You only need simple device telemetry and already have a mature time-series + metadata platform\n&#8211; Your primary need is device fleet management (AWS IoT Device Management may be a better fit)\n&#8211; You require a strict on-prem-only deployment with no cloud connectivity (SiteWise Edge can help with buffering\/collection, but cloud connectivity is still central to AWS IoT SiteWise\u2019s managed value)\n&#8211; You need extremely customized historian behavior or protocol support not covered by SiteWise Edge connectors (verify supported protocols\/connectors before committing)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is AWS IoT SiteWise used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Discrete manufacturing (automotive, electronics, packaging)<\/li>\n<li>Process industries (chemicals, oil &amp; gas, pulp &amp; paper)<\/li>\n<li>Utilities (power generation\/distribution, water treatment)<\/li>\n<li>Mining and metals<\/li>\n<li>Food and beverage<\/li>\n<li>Pharma\/biotech (with strong validation and audit requirements\u2014confirm compliance needs and controls)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OT\/automation engineers integrating PLC\/SCADA data<\/li>\n<li>Cloud\/platform engineering teams building a centralized industrial data platform<\/li>\n<li>Data engineering and analytics teams building OEE\/quality\/energy dashboards<\/li>\n<li>SRE\/DevOps teams operating ingestion pipelines and monitoring reliability<\/li>\n<li>Security teams reviewing identity boundaries between OT and IT<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads and architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Plant telemetry ingestion<\/strong> \u2192 contextualization \u2192 dashboards and analytics<\/li>\n<li><strong>Condition monitoring<\/strong> (vibration\/temperature) \u2192 alerts and maintenance workflows<\/li>\n<li><strong>Energy monitoring<\/strong> across sites \u2192 cost allocation and optimization<\/li>\n<li><strong>Line performance<\/strong> metrics (cycle times, throughput) \u2192 continuous improvement<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Edge-to-cloud<\/strong>: Collect from PLCs\/SCADA on premises, buffer locally, forward to AWS.<\/li>\n<li><strong>Cloud-to-cloud<\/strong>: Ingest from existing historians via connectors or custom integration.<\/li>\n<li><strong>Hybrid<\/strong>: Some metrics computed at edge, others computed centrally.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dev\/test often focuses on:<\/li>\n<li>Modeling strategy (asset model naming, hierarchies)<\/li>\n<li>API integration and batching patterns<\/li>\n<li>Dashboard prototypes (if using SiteWise Monitor)<\/li>\n<li>Production emphasizes:<\/li>\n<li>Reliable ingestion and retry behavior<\/li>\n<li>Strict IAM and separation of duties<\/li>\n<li>Cost controls and data retention strategy<\/li>\n<li>Observability and incident response<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where AWS IoT SiteWise is commonly used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Plant-wide asset model standardization<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Each site uses different tag naming and data structures, making enterprise reporting painful.<\/li>\n<li><strong>Why AWS IoT SiteWise fits<\/strong>: Asset models enforce consistent structure and meaning across sites.<\/li>\n<li><strong>Example<\/strong>: A manufacturer creates a \u201cCentrifugalPump\u201d model with standardized properties and deploys it across 12 plants.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Centralized industrial historian replacement (or complement)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: On-prem historian scaling and access for cloud analytics is difficult.<\/li>\n<li><strong>Why it fits<\/strong>: Managed ingestion\/storage and APIs for time-series asset properties.<\/li>\n<li><strong>Example<\/strong>: A utility ingests turbine telemetry into SiteWise for cloud-based analytics while keeping legacy historian for local operations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) OEE (Overall Equipment Effectiveness) dashboards<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: OEE calculations vary by line and are difficult to implement consistently.<\/li>\n<li><strong>Why it fits<\/strong>: Asset hierarchy + derived properties enable consistent KPIs.<\/li>\n<li><strong>Example<\/strong>: A packaging plant computes availability\/performance\/quality metrics and surfaces them in dashboards for shift managers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Condition monitoring for rotating equipment<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Vibration\/temperature trends require time-series storage and contextualization.<\/li>\n<li><strong>Why it fits<\/strong>: Store measurements per asset and query history for analysis.<\/li>\n<li><strong>Example<\/strong>: A mining company monitors conveyor motors, triggering maintenance tickets when vibration trends exceed thresholds.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Energy monitoring and cost allocation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Energy use is measured but not attributed to specific lines\/assets.<\/li>\n<li><strong>Why it fits<\/strong>: Hierarchies allow rollups from machine \u2192 line \u2192 plant.<\/li>\n<li><strong>Example<\/strong>: A food factory measures kWh per line and correlates with production output to identify inefficiencies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Cross-site performance benchmarking<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Comparing lines across plants requires consistent asset definitions and metrics.<\/li>\n<li><strong>Why it fits<\/strong>: Standard models and centralized APIs enable enterprise comparisons.<\/li>\n<li><strong>Example<\/strong>: Corporate ops compares cycle-time distributions across 30 similar lines worldwide.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Data foundation for ML\/AI (predictive maintenance)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: ML teams spend most time cleaning\/tagging data.<\/li>\n<li><strong>Why it fits<\/strong>: Asset context and standardized property semantics reduce feature engineering overhead.<\/li>\n<li><strong>Example<\/strong>: A team exports asset property history to a data lake for training failure prediction models.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Near-real-time operational visibility for supervisors<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Supervisors need current states (running\/stopped, temp, pressure) without opening SCADA screens.<\/li>\n<li><strong>Why it fits<\/strong>: Latest-value APIs and dashboards.<\/li>\n<li><strong>Example<\/strong>: A supervisor views current line status on tablets through a SiteWise Monitor portal.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Multi-vendor equipment integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: OEM equipment reports similar metrics differently.<\/li>\n<li><strong>Why it fits<\/strong>: Asset models normalize properties, and ingestion maps raw signals to standardized property IDs.<\/li>\n<li><strong>Example<\/strong>: Different CNC machines publish different tag sets; SiteWise maps them to a common \u201cCNC\u201d model.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Compliance and audit-friendly reporting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Need traceable data access and controlled dashboards.<\/li>\n<li><strong>Why it fits<\/strong>: IAM-based control for APIs and auditable access patterns (verify compliance controls for your requirements).<\/li>\n<li><strong>Example<\/strong>: A regulated manufacturer provides read-only dashboards to auditors with controlled access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Edge buffering for intermittent connectivity (remote sites)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Remote plants have unreliable WAN links; data loss is common.<\/li>\n<li><strong>Why it fits<\/strong>: SiteWise Edge can buffer and forward when connectivity returns (verify behavior and limits for your version).<\/li>\n<li><strong>Example<\/strong>: An oil field site buffers telemetry locally and syncs to AWS when satellite link is available.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Unified data layer for multiple applications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Multiple apps (maintenance, quality, production) need the same telemetry with consistent meaning.<\/li>\n<li><strong>Why it fits<\/strong>: SiteWise becomes the shared \u201casset time-series API\u201d.<\/li>\n<li><strong>Example<\/strong>: A maintenance app reads vibration history while a production app reads throughput\u2014all from the same asset model.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>This section summarizes important AWS IoT SiteWise features you should understand for architecture and hands-on work. Always verify the latest feature set and region availability in the official docs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 Asset models and assets<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Lets you define templates (models) and instantiate real-world equipment (assets).<\/li>\n<li><strong>Why it matters<\/strong>: Creates consistent semantics across many similar machines and sites.<\/li>\n<li><strong>Practical benefit<\/strong>: You can onboard 1,000 motors using one \u201cMotor\u201d model and query them consistently.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Modeling requires upfront design; changing models later can require careful migration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Properties: measurements, attributes, and computed values<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>:<\/li>\n<li><strong>Measurements<\/strong> store time-series readings.<\/li>\n<li><strong>Attributes<\/strong> store static metadata.<\/li>\n<li><strong>Computed properties<\/strong> (often transforms\/metrics) derive values from other properties (verify the exact computation feature definitions and constraints).<\/li>\n<li><strong>Why it matters<\/strong>: Separates raw sensor readings from metadata and computed KPIs.<\/li>\n<li><strong>Practical benefit<\/strong>: Your apps can read \u201cEfficiency\u201d directly instead of recomputing everywhere.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Derived computations have expression and dependency rules; validate correctness and performance. Some computations may have update latency.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 Asset hierarchies (relationships)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Models relationships like parent\/child assets (e.g., Plant contains Lines; Line contains Motors).<\/li>\n<li><strong>Why it matters<\/strong>: Enables navigation and aggregation by context.<\/li>\n<li><strong>Practical benefit<\/strong>: You can build dashboards at multiple levels (machine vs line vs plant).<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Hierarchy design affects how easily you can browse and manage assets later.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.4 Ingestion APIs (including batching)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: APIs to send timestamped property values to SiteWise, typically in batches.<\/li>\n<li><strong>Why it matters<\/strong>: Industrial telemetry is high volume; batching reduces overhead and cost.<\/li>\n<li><strong>Practical benefit<\/strong>: Efficient ingestion of many properties across many assets.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: You must handle retries and idempotency patterns carefully. Validate ingestion quotas and limits in <strong>Service Quotas<\/strong> for your region.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.5 Query APIs for latest and historical values<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Retrieve current value and history for a property, enabling apps and analytics to consume data.<\/li>\n<li><strong>Why it matters<\/strong>: Separates storage from consumption; simplifies application design.<\/li>\n<li><strong>Practical benefit<\/strong>: Dashboards and services can fetch values without direct device connectivity.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Query patterns can create cost and performance issues if you poll too frequently at large scale.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.6 AWS IoT SiteWise Monitor (portals, projects, dashboards)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Provides an AWS-managed web experience to build dashboards and share them with users.<\/li>\n<li><strong>Why it matters<\/strong>: Rapid operational visibility without building a custom UI.<\/li>\n<li><strong>Practical benefit<\/strong>: OT and operations teams can consume data through dashboards quickly.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Commonly depends on an identity integration (often AWS IAM Identity Center). Plan user lifecycle and access control.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.7 AWS IoT SiteWise Edge (edge collection and buffering)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Runs near industrial equipment to collect data, buffer it, and send to AWS IoT SiteWise.<\/li>\n<li><strong>Why it matters<\/strong>: OT networks may not allow direct cloud access from PLCs\/SCADA.<\/li>\n<li><strong>Practical benefit<\/strong>: Reduces data loss and enables local connectivity patterns.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Supported industrial protocols\/connectors vary\u2014<strong>verify supported connectors for your environment<\/strong>. Requires edge hardware and operations (patching, monitoring).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.8 Access control via AWS IAM (and user access for dashboards)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Controls who\/what can create models\/assets, ingest values, and query data.<\/li>\n<li><strong>Why it matters<\/strong>: Industrial data often has safety and business sensitivity.<\/li>\n<li><strong>Practical benefit<\/strong>: Separate roles for ingestion pipelines vs read-only dashboards.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Misconfigured IAM can lead to unintended write access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.9 Auditing and operations visibility (CloudTrail\/CloudWatch)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Records API calls (CloudTrail) and supports operational monitoring patterns (CloudWatch metrics\/logs as applicable).<\/li>\n<li><strong>Why it matters<\/strong>: Needed for incident response, compliance, and reliability.<\/li>\n<li><strong>Practical benefit<\/strong>: You can trace who changed models or deleted assets.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Telemetry data itself typically isn\u2019t logged in CloudTrail; it logs API actions. Design separate data quality monitoring.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<p>At a high level, AWS IoT SiteWise sits between industrial data sources and industrial applications:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Data sources<\/strong> produce measurements (PLCs, SCADA, sensors, historians, gateways).<\/li>\n<li><strong>Ingestion pipeline<\/strong> sends timestamped property values to AWS IoT SiteWise (direct API calls, or through edge software).<\/li>\n<li><strong>AWS IoT SiteWise<\/strong> stores values and associates them with assets and properties.<\/li>\n<li><strong>Consumers<\/strong> (dashboards, apps, analytics) query latest and historical values.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Data and control flow<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane<\/strong>: You create asset models, assets, hierarchies, portals, and dashboards.<\/li>\n<li><strong>Data plane<\/strong>: You send property values (ingestion) and retrieve property values (query).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common integrations (design patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Edge collection<\/strong>: SiteWise Edge (often with Greengrass) collects from on-prem sources and forwards to SiteWise.<\/li>\n<li><strong>Device connectivity<\/strong>: AWS IoT Core is often used for device connectivity and messaging patterns; some deployments use SiteWise ingestion directly without IoT Core.<\/li>\n<li><strong>Analytics<\/strong>: Applications pull from SiteWise APIs, or export data to analytics stores (S3 data lake, time-series DB) using AWS-native pipelines or custom solutions.<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p>If you plan to export large volumes to S3 or streaming services, verify current AWS IoT SiteWise export\/streaming features in the official documentation\u2014capabilities and naming can evolve.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API access<\/strong>: AWS IAM (users\/roles) authorizes API calls to create models\/assets and ingest\/query values.<\/li>\n<li><strong>Dashboards<\/strong>: SiteWise Monitor typically integrates with an AWS user identity system (commonly AWS IAM Identity Center). Plan user provisioning, MFA, and group-based access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS IoT SiteWise is accessed via <strong>regional AWS service endpoints<\/strong> over HTTPS.<\/li>\n<li>For private connectivity, AWS services often support <strong>VPC interface endpoints (AWS PrivateLink)<\/strong>. <strong>Verify in official docs<\/strong> whether AWS IoT SiteWise supports the specific VPC endpoints you need in your target region, and whether it covers both control plane and data plane APIs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS CloudTrail<\/strong>: Audit create\/update\/delete actions and other API calls.<\/li>\n<li><strong>Amazon CloudWatch<\/strong>: Monitor service and integration metrics (where available), build alarms on ingestion errors in your pipeline, and track operational KPIs.<\/li>\n<li><strong>Tagging<\/strong>: Tag models\/assets for cost allocation and governance (where supported).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  PLC[PLCs \/ Sensors] --&gt; GW[Edge Gateway or App]\n  GW --&gt;|BatchPutAssetPropertyValue| SW[AWS IoT SiteWise]\n  SW --&gt; APP[Operations App \/ Dashboard]\n  APP --&gt;|GetAssetPropertyValue \/ History| SW\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Site[\"On-Premises Site\"]\n    PLC1[PLCs \/ SCADA] --&gt; EDGE[AWS IoT SiteWise Edge\\n(on Greengrass v2)]\n    PLC2[Industrial Sensors] --&gt; EDGE\n    EDGE --&gt; BUF[Local Buffering]\n  end\n\n  subgraph AWS[\"AWS Region\"]\n    SW[AWS IoT SiteWise\\nAssets + Time-series]\n    MON[AWS IoT SiteWise Monitor\\nPortals\/Dashboards]\n    ID[IAM Identity Center\\n(if using Monitor)]\n    CW[Amazon CloudWatch]\n    CT[AWS CloudTrail]\n    DL[S3 Data Lake \/ Analytics Store\\n(optional)]\n  end\n\n  BUF --&gt;|Secure upload| SW\n  SW --&gt; MON\n  ID --&gt; MON\n  SW --&gt;|APIs for history\/latest| Apps[Custom Apps \/ Analytics Jobs]\n  Apps --&gt; DL\n  SW --&gt; CW\n  SW --&gt; CT\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">AWS account and billing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong>AWS account<\/strong> with billing enabled.<\/li>\n<li>Permission to create IAM roles\/policies and AWS IoT SiteWise resources.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Required permissions \/ IAM roles<\/h3>\n\n\n\n<p>For the hands-on lab, you need permissions to:\n&#8211; Create\/describe\/delete asset models and assets\n&#8211; Put and get asset property values\n&#8211; (Optional) Create and manage SiteWise Monitor portals\/projects\/dashboards<\/p>\n\n\n\n<p>If you\u2019re in an enterprise environment, request a least-privilege role from your admin. For learning, AWS-managed policies may exist, but <strong>verify current policy names and recommended least-privilege patterns in the official docs<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tools<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS CLI v2<\/strong> installed and configured:<\/li>\n<li>https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/getting-started-install.html<\/li>\n<li>Configure credentials: <code>aws configure<\/code> (or SSO-based profiles)<\/li>\n<li>(Optional) <code>jq<\/code> for JSON parsing in the tutorial examples.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose a region where <strong>AWS IoT SiteWise<\/strong> is available.<\/li>\n<li>Some components (especially visualization\/edge features) can have region-specific availability. <strong>Verify in official docs<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas \/ limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS IoT SiteWise has limits (assets, models, properties, ingestion rates, API request rates).<\/li>\n<li>Check <strong>Service Quotas<\/strong> in the AWS Console for \u201cAWS IoT SiteWise\u201d and request quota increases as needed:<\/li>\n<li>AWS Console \u2192 Service Quotas \u2192 AWS IoT SiteWise<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (optional)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS IAM Identity Center<\/strong> (commonly required if you want to use AWS IoT SiteWise Monitor with managed users)<\/li>\n<li><strong>AWS IoT Greengrass v2<\/strong> (if you plan to deploy AWS IoT SiteWise Edge)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<p>AWS IoT SiteWise pricing is usage-based and can vary by region. Do not estimate production costs without validating the current pricing dimensions and rates on the official pricing page.<\/p>\n\n\n\n<p>Official pricing:\n&#8211; AWS IoT SiteWise pricing page: https:\/\/aws.amazon.com\/iot-sitewise\/pricing\/\n&#8211; AWS Pricing Calculator: https:\/\/calculator.aws\/#\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Common pricing dimensions (verify current ones on the pricing page)<\/h3>\n\n\n\n<p>Typical cost drivers include:\n&#8211; <strong>Data ingestion volume<\/strong> (often measured in number of data points\/measurements ingested)\n&#8211; <strong>Data storage<\/strong> (time-series storage retained in the service)\n&#8211; <strong>API requests<\/strong> (read\/query calls can be a material driver at scale)\n&#8211; <strong>AWS IoT SiteWise Monitor<\/strong> usage (often priced per user\/month and\/or per portal\u2014verify current model)\n&#8211; <strong>Edge components<\/strong>: Edge runtime costs may be indirect (compute hardware, Greengrass operations) and\/or direct depending on the feature (verify current pricing details for SiteWise Edge)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier<\/h3>\n\n\n\n<p>AWS frequently offers free tier options, but they change over time and can vary by service and region. <strong>Verify current AWS IoT SiteWise free tier details on the official pricing page<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Direct cost drivers<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>High-frequency telemetry (e.g., 1 Hz across thousands of tags) quickly increases ingestion volume.<\/li>\n<li>Long retention of high-cardinality time-series increases storage costs.<\/li>\n<li>\u201cChatty\u201d dashboards that poll frequently can generate high API read costs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden or indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data transfer<\/strong>:<\/li>\n<li>Data ingestion from the public internet may incur network\/egress considerations depending on architecture.<\/li>\n<li>Cross-region transfers are typically billable.<\/li>\n<li><strong>Edge infrastructure<\/strong>:<\/li>\n<li>Industrial gateways, compute instances, and operational overhead (patching, monitoring).<\/li>\n<li><strong>Downstream analytics<\/strong>:<\/li>\n<li>Export to S3, Glue crawlers, Athena queries, Redshift, OpenSearch\u2014each has separate pricing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost optimization strategies<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Batch ingestion<\/strong>: Use batch APIs and send fewer, larger payloads instead of per-point calls.<\/li>\n<li><strong>Right-size sampling<\/strong>: Don\u2019t ingest at 1 Hz if 10-second intervals are sufficient for your use case.<\/li>\n<li><strong>Retention strategy<\/strong>: Decide what needs to stay in SiteWise vs moved to lower-cost storage (e.g., S3).<\/li>\n<li><strong>Reduce polling<\/strong>: Prefer event-driven updates where applicable; avoid high-frequency dashboard polling at scale.<\/li>\n<li><strong>Model carefully<\/strong>: Avoid excessive duplicate properties; standardize across equipment types.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (conceptual)<\/h3>\n\n\n\n<p>A small lab setup:\n&#8211; A handful of assets (e.g., 2\u201310)\n&#8211; A few properties each (temperature, vibration)\n&#8211; Ingestion only a few times per minute for a few hours\/day\n&#8211; Minimal dashboards and a few users<\/p>\n\n\n\n<p>This typically stays low-cost, but the exact cost depends on:\n&#8211; Your ingestion rate and duration\n&#8211; Your region pricing\n&#8211; Whether you enable dashboards\/users<\/p>\n\n\n\n<p>Use the <strong>AWS Pricing Calculator<\/strong> with your expected data points\/day and retention.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>A production rollout (multiple plants) should model:\n&#8211; Number of assets and properties (tags)\n&#8211; Average sampling rate per property\n&#8211; Burst rates and buffering behavior\n&#8211; Retention and historical query patterns\n&#8211; Number of dashboard users and their polling frequency\n&#8211; Export pipelines and downstream analytics costs<\/p>\n\n\n\n<p>For production, build a spreadsheet or calculator model that includes:\n&#8211; <strong>Data points\/day<\/strong> = assets \u00d7 properties \u00d7 sampling frequency \u00d7 seconds\/day\n&#8211; <strong>Read requests\/day<\/strong> = dashboards\/users \u00d7 widgets \u00d7 refresh interval \u00d7 hours\/day\nThen validate with a pilot and monitor billing metrics.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab focuses on the core workflow you must understand before adding edge ingestion or dashboards at scale:\n1) Create an asset model<br\/>\n2) Create an asset<br\/>\n3) Ingest time-series measurements using AWS CLI<br\/>\n4) Query latest and historical values<br\/>\n5) (Optional) Visualize using AWS IoT SiteWise Monitor<br\/>\n6) Clean up resources<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Create a simple \u201cMotor\u201d asset model with temperature and vibration measurements, ingest a few data points, and query them back using AWS IoT SiteWise APIs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Estimated time<\/strong>: 45\u201375 minutes  <\/li>\n<li><strong>Cost<\/strong>: Low for small test data; you pay for usage (verify pricing).  <\/li>\n<li><strong>You will create<\/strong>:<\/li>\n<li>1 asset model<\/li>\n<li>1 asset<\/li>\n<li>A few measurement data points<\/li>\n<li>(Optional) a SiteWise Monitor portal\/project\/dashboard<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Choose a region and configure AWS CLI<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set your region (example uses <code>us-east-1<\/code>; choose one where SiteWise is available):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">export AWS_REGION=\"us-east-1\"\naws configure set region \"$AWS_REGION\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Verify identity:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">aws sts get-caller-identity\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: You see your AWS account and principal ARN.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create an asset model (Motor model)<\/h3>\n\n\n\n<p>Create a file named <code>asset-model-motor.json<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-json\">{\n  \"assetModelName\": \"MotorModel-Tutorial\",\n  \"assetModelDescription\": \"Tutorial motor model with temperature and vibration measurements\",\n  \"assetModelProperties\": [\n    {\n      \"name\": \"Manufacturer\",\n      \"dataType\": \"STRING\",\n      \"type\": {\n        \"attribute\": {\n          \"defaultValue\": \"ExampleCo\"\n        }\n      }\n    },\n    {\n      \"name\": \"Temperature\",\n      \"dataType\": \"DOUBLE\",\n      \"unit\": \"C\",\n      \"type\": {\n        \"measurement\": {}\n      }\n    },\n    {\n      \"name\": \"Vibration\",\n      \"dataType\": \"DOUBLE\",\n      \"unit\": \"mm\/s\",\n      \"type\": {\n        \"measurement\": {}\n      }\n    }\n  ]\n}\n<\/code><\/pre>\n\n\n\n<p>Create the model:<\/p>\n\n\n\n<pre><code class=\"language-bash\">MODEL_ID=$(\n  aws iotsitewise create-asset-model \\\n    --cli-input-json file:\/\/asset-model-motor.json \\\n    --query assetModelId --output text\n)\n\necho \"Model ID: $MODEL_ID\"\n<\/code><\/pre>\n\n\n\n<p>Wait until the model becomes active:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise describe-asset-model --asset-model-id \"$MODEL_ID\" \\\n  --query \"assetModelStatus\" --output json\n<\/code><\/pre>\n\n\n\n<p>Repeat until the state indicates it is active (exact field values can vary; use the returned JSON as truth).<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: The model exists and is ready to use.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create an asset from the model<\/h3>\n\n\n\n<p>Create an asset:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ASSET_ID=$(\n  aws iotsitewise create-asset \\\n    --asset-name \"Motor-01\" \\\n    --asset-model-id \"$MODEL_ID\" \\\n    --query assetId --output text\n)\n\necho \"Asset ID: $ASSET_ID\"\n<\/code><\/pre>\n\n\n\n<p>Check the asset status:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise describe-asset --asset-id \"$ASSET_ID\" \\\n  --query \"assetStatus\" --output json\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: The asset \u201cMotor-01\u201d is created and becomes active.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Find the property IDs for Temperature and Vibration<\/h3>\n\n\n\n<p>To ingest values, you need the property IDs created for the asset.<\/p>\n\n\n\n<p>Describe the asset and list properties:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise describe-asset --asset-id \"$ASSET_ID\" \\\n  --query \"assetProperties[*].{name:name,id:id,dataType:dataType,unit:unit}\" \\\n  --output table\n<\/code><\/pre>\n\n\n\n<p>Capture the property IDs:<\/p>\n\n\n\n<pre><code class=\"language-bash\">TEMP_PROP_ID=$(\n  aws iotsitewise describe-asset --asset-id \"$ASSET_ID\" \\\n    --query \"assetProperties[?name=='Temperature'].id | [0]\" --output text\n)\n\nVIB_PROP_ID=$(\n  aws iotsitewise describe-asset --asset-id \"$ASSET_ID\" \\\n    --query \"assetProperties[?name=='Vibration'].id | [0]\" --output text\n)\n\necho \"Temperature property ID: $TEMP_PROP_ID\"\necho \"Vibration property ID:   $VIB_PROP_ID\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: You have two IDs you\u2019ll use for ingestion and queries.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Ingest a few data points (BatchPutAssetPropertyValue)<\/h3>\n\n\n\n<p>Create a timestamp:<\/p>\n\n\n\n<pre><code class=\"language-bash\">TS=$(date +%s)\necho \"Timestamp (seconds): $TS\"\n<\/code><\/pre>\n\n\n\n<p>Create <code>put-values.json<\/code>:<\/p>\n\n\n\n<pre><code class=\"language-json\">{\n  \"entries\": [\n    {\n      \"entryId\": \"temp-1\",\n      \"assetId\": \"REPLACE_ASSET_ID\",\n      \"propertyId\": \"REPLACE_TEMP_PROPERTY_ID\",\n      \"propertyValues\": [\n        {\n          \"value\": { \"doubleValue\": 62.5 },\n          \"timestamp\": { \"timeInSeconds\": REPLACE_TS, \"offsetInNanos\": 0 },\n          \"quality\": \"GOOD\"\n        }\n      ]\n    },\n    {\n      \"entryId\": \"vib-1\",\n      \"assetId\": \"REPLACE_ASSET_ID\",\n      \"propertyId\": \"REPLACE_VIB_PROPERTY_ID\",\n      \"propertyValues\": [\n        {\n          \"value\": { \"doubleValue\": 3.2 },\n          \"timestamp\": { \"timeInSeconds\": REPLACE_TS, \"offsetInNanos\": 0 },\n          \"quality\": \"GOOD\"\n        }\n      ]\n    }\n  ]\n}\n<\/code><\/pre>\n\n\n\n<p>Replace placeholders (use your editor), or do it with <code>sed<\/code> (example for macOS\/Linux):<\/p>\n\n\n\n<pre><code class=\"language-bash\">cp put-values.json put-values.rendered.json\n\nsed -i.bak \"s\/REPLACE_ASSET_ID\/$ASSET_ID\/g\" put-values.rendered.json\nsed -i.bak \"s\/REPLACE_TEMP_PROPERTY_ID\/$TEMP_PROP_ID\/g\" put-values.rendered.json\nsed -i.bak \"s\/REPLACE_VIB_PROPERTY_ID\/$VIB_PROP_ID\/g\" put-values.rendered.json\nsed -i.bak \"s\/REPLACE_TS\/$TS\/g\" put-values.rendered.json\n<\/code><\/pre>\n\n\n\n<p>Now ingest:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise batch-put-asset-property-value \\\n  --cli-input-json file:\/\/put-values.rendered.json\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: The command returns successfully. If there are errors, you\u2019ll see them per-entry (common in permission or ID issues).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Query the latest values<\/h3>\n\n\n\n<p>Fetch current temperature:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise get-asset-property-value \\\n  --asset-id \"$ASSET_ID\" \\\n  --property-id \"$TEMP_PROP_ID\" \\\n  --output json\n<\/code><\/pre>\n\n\n\n<p>Fetch current vibration:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise get-asset-property-value \\\n  --asset-id \"$ASSET_ID\" \\\n  --property-id \"$VIB_PROP_ID\" \\\n  --output json\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: You see the latest value with timestamp and quality.<\/p>\n\n\n\n<blockquote>\n<p>If you query immediately after ingestion, you might see a short delay. Retry after a brief wait.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Query historical values (value history)<\/h3>\n\n\n\n<p>Query the last 15 minutes (adjust as needed). Create start\/end timestamps:<\/p>\n\n\n\n<pre><code class=\"language-bash\">END=$(date +%s)\nSTART=$((END - 900))\n\naws iotsitewise get-asset-property-value-history \\\n  --asset-id \"$ASSET_ID\" \\\n  --property-id \"$TEMP_PROP_ID\" \\\n  --start-date \"$START\" \\\n  --end-date \"$END\" \\\n  --max-results 50 \\\n  --output json\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: A JSON array of historical values (including the one you inserted).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8 (Optional): Visualize in AWS IoT SiteWise Monitor<\/h3>\n\n\n\n<p>This optional step depends on your account setup. Many AWS environments require <strong>AWS IAM Identity Center<\/strong> for portal users.<\/p>\n\n\n\n<p>High-level steps (Console):\n1. Open AWS IoT SiteWise console: https:\/\/console.aws.amazon.com\/iotsitewise\/\n2. Find <strong>AWS IoT SiteWise Monitor<\/strong> (naming may appear as \u201cMonitor\u201d in the console).\n3. Create a <strong>portal<\/strong> (if you don\u2019t have one).\n4. Create a <strong>project<\/strong> inside the portal.\n5. Associate the asset <strong>Motor-01<\/strong> with the project (so dashboards can access it).\n6. Create a <strong>dashboard<\/strong>.\n7. Add a widget (e.g., line chart) and bind it to:\n   &#8211; Asset: Motor-01\n   &#8211; Property: Temperature\n8. Save and view.<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: You can view the Temperature and Vibration values in a dashboard.<\/p>\n\n\n\n<blockquote>\n<p>If you cannot create a portal due to identity prerequisites, skip this step and continue with API-based validation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use this checklist:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Asset model exists:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise describe-asset-model --asset-model-id \"$MODEL_ID\" --output json\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Asset exists:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise describe-asset --asset-id \"$ASSET_ID\" --output json\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Latest value returns:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise get-asset-property-value --asset-id \"$ASSET_ID\" --property-id \"$TEMP_PROP_ID\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>History returns:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise get-asset-property-value-history --asset-id \"$ASSET_ID\" --property-id \"$TEMP_PROP_ID\" --max-results 5\n<\/code><\/pre>\n\n\n\n<p>If all four work, your core SiteWise workflow is functioning.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>AccessDeniedException<\/strong>\n   &#8211; Cause: IAM policy missing permissions for <code>iotsitewise:*<\/code> actions used.\n   &#8211; Fix: Attach the appropriate permissions to your role\/user. Start broad for learning, then refine.<\/p>\n<\/li>\n<li>\n<p><strong>ResourceNotFoundException<\/strong>\n   &#8211; Cause: Wrong <code>assetId<\/code> or <code>propertyId<\/code> (copy\/paste error, wrong region).\n   &#8211; Fix: Confirm region and re-run <code>describe-asset<\/code> to fetch property IDs.<\/p>\n<\/li>\n<li>\n<p><strong>ValidationException on create-asset-model<\/strong>\n   &#8211; Cause: JSON schema mismatch (typos in property definitions).\n   &#8211; Fix: Compare your JSON with the AWS CLI\/API reference for <code>CreateAssetModel<\/code>. Use the error message to identify the field.<\/p>\n<\/li>\n<li>\n<p><strong>No data returned immediately after ingestion<\/strong>\n   &#8211; Cause: Ingestion-to-query propagation delay can occur.\n   &#8211; Fix: Wait briefly and retry; confirm timestamps are in seconds and not milliseconds.<\/p>\n<\/li>\n<li>\n<p><strong>Timestamp issues (history query empty)<\/strong>\n   &#8211; Cause: Incorrect start\/end date range, or ingest timestamp outside range.\n   &#8211; Fix: Print your ingest timestamp and compute your history query window around it.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing costs, delete what you created.<\/p>\n\n\n\n<p>1) Delete asset:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise delete-asset --asset-id \"$ASSET_ID\"\n<\/code><\/pre>\n\n\n\n<p>2) Delete asset model:<\/p>\n\n\n\n<pre><code class=\"language-bash\">aws iotsitewise delete-asset-model --asset-model-id \"$MODEL_ID\"\n<\/code><\/pre>\n\n\n\n<p>3) Optional cleanup for SiteWise Monitor:\n&#8211; Delete dashboards\/projects\/portal if created.\n&#8211; Remove or disable IAM Identity Center users\/groups created for the lab.<\/p>\n\n\n\n<blockquote>\n<p>Deletions can take time to propagate. If deletion fails due to dependencies, re-check for related resources (projects\/portals\/associations) and remove them first.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Model-first design<\/strong>: Define asset models based on how your organization thinks about equipment (maintenance, operations, analytics), not only on raw tag naming.<\/li>\n<li><strong>Use consistent naming conventions<\/strong>:<\/li>\n<li>Asset model names: <code>Pump<\/code>, <code>Motor<\/code>, <code>Boiler<\/code><\/li>\n<li>Assets: <code>PlantA-Line2-Motor01<\/code><\/li>\n<li>Properties: <code>Temperature<\/code>, <code>Pressure<\/code>, <code>VibrationRMS<\/code><\/li>\n<li><strong>Design hierarchies carefully<\/strong>: Create stable relationships (Plant \u2192 Line \u2192 Machine) that match reporting needs.<\/li>\n<li><strong>Plan for multi-site scale<\/strong>: Ensure models can be reused; avoid embedding site-specific meaning in model names.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Separate roles<\/strong>:<\/li>\n<li>Ingestion role: write-only (put values)<\/li>\n<li>Viewer role: read-only (get values, dashboards)<\/li>\n<li>Admin role: create\/update models\/assets<\/li>\n<li><strong>Least privilege<\/strong>: Start with broad permissions in a sandbox, then restrict using resource-level permissions and explicit actions.<\/li>\n<li><strong>Protect delete permissions<\/strong>: Accidental delete of assets\/models can be disruptive.<\/li>\n<li><strong>Use CloudTrail<\/strong>: Centralize CloudTrail logs and set alerts for destructive actions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Right-size sampling frequency<\/strong>: The fastest way to overspend is to ingest more frequently than necessary.<\/li>\n<li><strong>Batch ingestion<\/strong>: Use batch APIs and send multiple values per request.<\/li>\n<li><strong>Control dashboard refresh<\/strong>: Avoid extremely frequent refresh intervals for many users\/widgets.<\/li>\n<li><strong>Tiering strategy<\/strong>: Keep \u201chot\u201d operational data readily accessible; archive \u201ccold\u201d data to cheaper storage if needed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Use predictable query patterns<\/strong>: Avoid unbounded history queries. Use time windows.<\/li>\n<li><strong>Cache read-mostly data<\/strong>: If thousands of clients need the same \u201ccurrent value\u201d, consider caching in your application tier.<\/li>\n<li><strong>Avoid per-point API calls<\/strong>: Batch both writes and reads where feasible (verify which APIs support batching for your needs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Retry with backoff<\/strong>: Build robust retries for ingestion and queries.<\/li>\n<li><strong>Handle partial failures<\/strong>: Batch ingestion can return per-entry errors; retry only failed entries.<\/li>\n<li><strong>Edge buffering where needed<\/strong>: For unreliable WAN links, use edge buffering patterns (SiteWise Edge and\/or local queues).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Operational dashboards<\/strong>: Monitor ingestion success\/error rates from your ingestion pipeline.<\/li>\n<li><strong>Data quality KPIs<\/strong>: Track missing data, stale values, and out-of-range values.<\/li>\n<li><strong>Change management<\/strong>: Version asset models and manage schema changes like software releases.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tag resources<\/strong>: e.g., <code>Environment=Dev<\/code>, <code>Plant=PlantA<\/code>, <code>CostCenter=1234<\/code>.<\/li>\n<li><strong>Document models<\/strong>: Keep a central catalog of models\/properties and definitions.<\/li>\n<li><strong>Standardize units<\/strong>: Ensure consistent units across sites; avoid mixing <code>C<\/code> and <code>F<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API access<\/strong> is controlled by <strong>AWS IAM<\/strong>.<\/li>\n<li><strong>Visualization access<\/strong> (SiteWise Monitor) often involves <strong>AWS IAM Identity Center<\/strong> users and groups (verify current integration and configuration steps).<\/li>\n<\/ul>\n\n\n\n<p>Recommended patterns:\n&#8211; Use IAM roles for ingestion workloads (EC2\/ECS\/Lambda\/Greengrass roles) rather than long-lived access keys.\n&#8211; Implement strict separation between:\n  &#8211; OT ingestion (write)\n  &#8211; Analytics consumption (read)\n  &#8211; Administrative operations (model changes)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>In transit<\/strong>: Use HTTPS\/TLS to AWS service endpoints.<\/li>\n<li><strong>At rest<\/strong>: AWS services typically encrypt data at rest by default. Verify whether AWS IoT SiteWise supports customer-managed KMS keys for your specific resources and region (check official docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Default access is via AWS public endpoints.<\/li>\n<li>For private access, investigate VPC endpoints\/PrivateLink options. <strong>Verify in official docs<\/strong> which endpoints are supported for SiteWise APIs and in which regions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not embed AWS access keys in edge devices or scripts.<\/li>\n<li>Use:<\/li>\n<li>IAM roles (preferred)<\/li>\n<li>AWS Secrets Manager (for any non-AWS credentials your ingestion app needs, e.g., OPC-UA credentials)<\/li>\n<li>Rotate credentials and enforce MFA for human users.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable <strong>AWS CloudTrail<\/strong> in all regions you use.<\/li>\n<li>Send CloudTrail logs to a central S3 bucket with restricted access.<\/li>\n<li>Alert on:<\/li>\n<li><code>DeleteAssetModel<\/code>, <code>DeleteAsset<\/code>, portal deletions<\/li>\n<li>IAM policy changes that broaden access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Map requirements to AWS controls:<\/li>\n<li>Identity and access<\/li>\n<li>Audit retention<\/li>\n<li>Data residency (region choice)<\/li>\n<li>Change management (model updates)<\/li>\n<li>For regulated environments, validate:<\/li>\n<li>Logging coverage<\/li>\n<li>Access review processes<\/li>\n<li>Data retention and deletion policies<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Using a single over-privileged role for ingestion, reading, and admin tasks<\/li>\n<li>Leaving portal\/dashboard access too broad<\/li>\n<li>Not enabling CloudTrail or not reviewing logs<\/li>\n<li>Treating industrial telemetry as \u201cnon-sensitive\u201d when it can reveal production volumes, recipes, or operational status<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use least privilege IAM and separate accounts\/environments (dev\/test\/prod).<\/li>\n<li>Use private connectivity when required by policy (verify feasibility).<\/li>\n<li>Implement defense-in-depth: network controls + IAM + auditing + change control.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Always validate current limits in official docs and Service Quotas. Common gotchas include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Regional service boundaries<\/strong>: Models\/assets\/data live in one region. Cross-region strategies require explicit design.<\/li>\n<li><strong>Model change complexity<\/strong>: Changing models in production can be non-trivial\u2014plan versioning and migration.<\/li>\n<li><strong>Ingestion timestamp correctness<\/strong>: Seconds vs milliseconds mistakes lead to \u201cmissing\u201d history.<\/li>\n<li><strong>Polling costs<\/strong>: High-frequency polling across many users can become a major cost driver.<\/li>\n<li><strong>Quotas<\/strong>: Ingestion rates, API request rates, and resource counts can limit scale until increased.<\/li>\n<li><strong>Edge connector compatibility<\/strong>: Protocol\/connector support varies by version and environment\u2014verify before selecting hardware and integration approach.<\/li>\n<li><strong>Deletion dependencies<\/strong>: Portals\/projects\/associations can block cleanup; remove dependencies first.<\/li>\n<li><strong>Identity prerequisites for Monitor<\/strong>: SiteWise Monitor may require IAM Identity Center setup; plan this early for enterprise environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>AWS IoT SiteWise is not the only way to store and use industrial time-series data. Here\u2019s how it compares at a high level.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>AWS IoT SiteWise<\/strong><\/td>\n<td>Industrial asset modeling + time-series ingestion\/query + optional dashboards<\/td>\n<td>Asset-centric modeling, managed ingestion\/storage\/query, optional SiteWise Monitor and edge options<\/td>\n<td>Requires modeling effort; costs scale with ingestion\/reads; feature availability varies by region<\/td>\n<td>You want a managed industrial data foundation on AWS<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS IoT Core<\/strong><\/td>\n<td>Device connectivity and MQTT messaging<\/td>\n<td>Device identity, secure messaging, rules engine<\/td>\n<td>Not an industrial asset historian by itself<\/td>\n<td>You need device connectivity; pair with SiteWise or other storage<\/td>\n<\/tr>\n<tr>\n<td><strong>Amazon Timestream<\/strong><\/td>\n<td>Time-series database for applications<\/td>\n<td>Powerful time-series queries, SQL-like access<\/td>\n<td>Lacks industrial asset modeling primitives out of the box<\/td>\n<td>You want a general time-series DB and will implement asset context yourself<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS IoT TwinMaker<\/strong><\/td>\n<td>Digital twins and visualization of operational data<\/td>\n<td>Twin graph, integrates multiple data sources<\/td>\n<td>Not a historian replacement; often consumes from SiteWise\/other sources<\/td>\n<td>You need a digital twin layer; use SiteWise as a data source<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure (IoT + Time Series \/ Data services)<\/strong><\/td>\n<td>Azure-native industrial\/IoT stacks<\/td>\n<td>Strong integration in Azure ecosystem<\/td>\n<td>Different modeling\/ops patterns; migration complexity<\/td>\n<td>Your organization is standardized on Azure<\/td>\n<\/tr>\n<tr>\n<td><strong>Self-managed historian \/ time-series (InfluxDB, TimescaleDB, etc.)<\/strong><\/td>\n<td>Full control, on-prem-first<\/td>\n<td>Customizable, can run anywhere<\/td>\n<td>You operate scaling, HA, backups, security<\/td>\n<td>Strict on-prem requirements or very custom needs<\/td>\n<\/tr>\n<tr>\n<td><strong>Google Cloud IoT Core (retired)<\/strong><\/td>\n<td>N\/A<\/td>\n<td>N\/A<\/td>\n<td>Service retired<\/td>\n<td>Not recommended; consider alternatives<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p>Notes:\n&#8211; Some IoT services across clouds have changed availability over time (for example, Google Cloud IoT Core was retired). Always validate the current status of alternatives.\n&#8211; In AWS, <strong>IoT Core<\/strong> and <strong>Greengrass<\/strong> are often complementary to SiteWise rather than replacements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Multi-plant manufacturing operations visibility<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A global manufacturer has 20 plants with inconsistent tag naming and limited enterprise visibility. Corporate wants standardized KPIs (OEE, downtime, throughput) and faster root-cause analysis.<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>Edge gateways at each plant collect PLC\/SCADA signals (using SiteWise Edge or an equivalent ingestion application).<\/li>\n<li>AWS IoT SiteWise models standard equipment types (lines, stations, machines).<\/li>\n<li>Ingestion pipelines send measurements to SiteWise in the regional AWS account dedicated to industrial data.<\/li>\n<li>SiteWise Monitor dashboards provide role-based visibility (plant manager vs line supervisor).<\/li>\n<li>A data lake in S3 stores long-term historical data for analytics, with curated datasets for BI tools.<\/li>\n<li><strong>Why AWS IoT SiteWise was chosen<\/strong>:<\/li>\n<li>Asset model abstraction standardized data across plants.<\/li>\n<li>Managed ingestion\/storage reduced operational overhead versus a self-managed historian cluster.<\/li>\n<li>Tight AWS integration with IAM, CloudTrail, and analytics services.<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>Faster rollout of consistent dashboards across plants<\/li>\n<li>Reduced time spent mapping tags for analytics<\/li>\n<li>Improved uptime through better visibility into leading indicators (temperature\/vibration trends)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: Condition monitoring as a SaaS offering<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A small team is building a condition monitoring solution for industrial customers. They need to ingest motor sensor data, store it reliably, and provide customer dashboards without building a time-series backend from scratch.<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>Customer sites deploy a small gateway that sends measurements to AWS.<\/li>\n<li>AWS IoT SiteWise stores measurements per customer asset and provides history queries.<\/li>\n<li>The startup\u2019s application queries SiteWise for charts and triggers alerts through application logic.<\/li>\n<li>Customer-specific isolation is achieved through separate AWS accounts or strict IAM boundaries (depending on tenancy model).<\/li>\n<li><strong>Why AWS IoT SiteWise was chosen<\/strong>:<\/li>\n<li>Faster time to market with managed historian-like storage and asset context<\/li>\n<li>Easier to build a consistent asset schema per customer<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>Rapid onboarding of new customers (reuse asset models)<\/li>\n<li>Reduced infrastructure maintenance burden for the small team<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<p>1) <strong>Is AWS IoT SiteWise a time-series database?<\/strong><br\/>\nIt provides time-series storage and query capabilities for asset property values, but it\u2019s best thought of as an <strong>industrial asset modeling + time-series data service<\/strong> rather than a general-purpose TSDB. For advanced TSDB query needs, some teams export data to purpose-built stores as well.<\/p>\n\n\n\n<p>2) <strong>Do I need AWS IoT Core to use AWS IoT SiteWise?<\/strong><br\/>\nNot always. You can ingest directly using SiteWise APIs. AWS IoT Core is commonly used for device connectivity and messaging patterns, but it\u2019s not mandatory for every SiteWise deployment.<\/p>\n\n\n\n<p>3) <strong>What\u2019s the difference between asset models and assets?<\/strong><br\/>\nAn <strong>asset model<\/strong> is a template (e.g., \u201cMotor\u201d). An <strong>asset<\/strong> is an instance (e.g., \u201cMotor-01\u201d) created from that template.<\/p>\n\n\n\n<p>4) <strong>What are measurements vs attributes?<\/strong><br\/>\nMeasurements are time-series values (temperature over time). Attributes are static metadata (manufacturer, serial number).<\/p>\n\n\n\n<p>5) <strong>Can AWS IoT SiteWise compute derived metrics like OEE?<\/strong><br\/>\nAWS IoT SiteWise supports computed properties (often described as transforms\/metrics) for derived values. The exact compute capabilities, expressions, and limitations should be verified in the latest official documentation.<\/p>\n\n\n\n<p>6) <strong>How do I ingest data efficiently?<\/strong><br\/>\nUse batching APIs, send values at appropriate sampling rates, and implement retry with exponential backoff. Avoid per-point ingestion calls.<\/p>\n\n\n\n<p>7) <strong>How do I avoid high query costs?<\/strong><br\/>\nAvoid frequent polling from many clients; cache where possible; use dashboards responsibly (refresh intervals), and query only the required time windows.<\/p>\n\n\n\n<p>8) <strong>Is AWS IoT SiteWise suitable for regulated environments?<\/strong><br\/>\nIt can be used with AWS security controls (IAM, CloudTrail, encryption). However, you must validate your specific compliance requirements and implement proper governance, logging, and access controls.<\/p>\n\n\n\n<p>9) <strong>Does AWS IoT SiteWise support private connectivity (no public internet)?<\/strong><br\/>\nSome AWS services support VPC endpoints via AWS PrivateLink. <strong>Verify<\/strong> whether AWS IoT SiteWise supports the endpoints you need in your region and whether it covers your required APIs.<\/p>\n\n\n\n<p>10) <strong>What is AWS IoT SiteWise Monitor?<\/strong><br\/>\nIt\u2019s the visualization component that lets you build portals\/projects\/dashboards over SiteWise asset data.<\/p>\n\n\n\n<p>11) <strong>Do I need IAM Identity Center for SiteWise Monitor?<\/strong><br\/>\nIn many setups, yes\u2014Monitor commonly relies on AWS-managed user access. Verify the current authentication and user management requirements in the Monitor documentation.<\/p>\n\n\n\n<p>12) <strong>How does AWS IoT SiteWise handle late or out-of-order data?<\/strong><br\/>\nIndustrial systems often deliver delayed data. SiteWise can store values with timestamps; your design should define how you handle late-arriving updates and ensure your queries\/metrics behave correctly. Verify specifics in docs if you rely on strict ordering guarantees.<\/p>\n\n\n\n<p>13) <strong>Can I model multiple plants and lines?<\/strong><br\/>\nYes. Use hierarchies to represent Plant \u2192 Line \u2192 Machine relationships, and create assets for each real entity.<\/p>\n\n\n\n<p>14) <strong>How do I migrate from an on-prem historian?<\/strong><br\/>\nTypically you:\n&#8211; Define SiteWise asset models\n&#8211; Map historian tags to SiteWise properties\n&#8211; Backfill historical data (if needed) using supported ingestion patterns\n&#8211; Run in parallel during validation<br\/>\nMigration approaches vary\u2014validate supported backfill mechanisms and ingestion quotas.<\/p>\n\n\n\n<p>15) <strong>What\u2019s the quickest way to start?<\/strong><br\/>\nStart with one asset model, one asset, ingest a few points via AWS CLI (like this lab), then expand to edge ingestion and dashboards once your model is solid.<\/p>\n\n\n\n<p>16) <strong>How do I organize resource ownership in a large enterprise?<\/strong><br\/>\nCommon patterns include:\n&#8211; Central platform team owns models\/standards\n&#8211; Plant teams own asset instantiation and edge deployments\n&#8211; Clear IAM boundaries for ingestion vs consumption<\/p>\n\n\n\n<p>17) <strong>Should I store all history in SiteWise forever?<\/strong><br\/>\nNot always. Many teams retain \u201crecent\/hot\u201d data in SiteWise and export older data to S3 for long-term archival and large-scale analytics. Choose retention based on cost and query needs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn AWS IoT SiteWise<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official Documentation<\/td>\n<td>AWS IoT SiteWise Docs<\/td>\n<td>Primary source for concepts, APIs, limits, and guides. https:\/\/docs.aws.amazon.com\/iot-sitewise\/<\/td>\n<\/tr>\n<tr>\n<td>Official API Reference<\/td>\n<td>AWS IoT SiteWise API Reference<\/td>\n<td>Exact request\/response schemas for CLI\/SDK usage. https:\/\/docs.aws.amazon.com\/iot-sitewise\/latest\/APIReference\/<\/td>\n<\/tr>\n<tr>\n<td>Official Pricing<\/td>\n<td>AWS IoT SiteWise Pricing<\/td>\n<td>Current pricing dimensions and rates by region. https:\/\/aws.amazon.com\/iot-sitewise\/pricing\/<\/td>\n<\/tr>\n<tr>\n<td>Pricing Tool<\/td>\n<td>AWS Pricing Calculator<\/td>\n<td>Model ingestion\/query\/storage costs before production. https:\/\/calculator.aws\/#\/<\/td>\n<\/tr>\n<tr>\n<td>Console<\/td>\n<td>AWS IoT SiteWise Console<\/td>\n<td>Build models\/assets and view configuration in the UI. https:\/\/console.aws.amazon.com\/iotsitewise\/<\/td>\n<\/tr>\n<tr>\n<td>Monitor Docs<\/td>\n<td>AWS IoT SiteWise Monitor Documentation (in SiteWise docs)<\/td>\n<td>Guidance for portals\/projects\/dashboards and user access. Start at https:\/\/docs.aws.amazon.com\/iot-sitewise\/ and navigate to Monitor sections.<\/td>\n<\/tr>\n<tr>\n<td>Edge Docs<\/td>\n<td>AWS IoT SiteWise Edge Documentation (in SiteWise docs)<\/td>\n<td>Edge collection patterns, requirements, and deployment steps. Start at https:\/\/docs.aws.amazon.com\/iot-sitewise\/ and navigate to Edge sections.<\/td>\n<\/tr>\n<tr>\n<td>Security<\/td>\n<td>AWS CloudTrail User Guide<\/td>\n<td>Audit logging patterns for SiteWise API activity. https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/<\/td>\n<\/tr>\n<tr>\n<td>IAM<\/td>\n<td>IAM User Guide<\/td>\n<td>Building least-privilege policies for ingestion and read access. https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/<\/td>\n<\/tr>\n<tr>\n<td>Architecture Guidance<\/td>\n<td>AWS Architecture Center<\/td>\n<td>Reference architectures and best practices (search for \u201cIoT SiteWise\u201d). https:\/\/aws.amazon.com\/architecture\/<\/td>\n<\/tr>\n<tr>\n<td>Videos<\/td>\n<td>AWS Events \/ AWS YouTube<\/td>\n<td>Demos and architecture talks (search \u201cAWS IoT SiteWise\u201d). https:\/\/www.youtube.com\/@amazonwebservices<\/td>\n<\/tr>\n<tr>\n<td>Samples (verify currency)<\/td>\n<td>AWS Samples on GitHub (search)<\/td>\n<td>Implementation examples; validate repository ownership and maintenance. https:\/\/github.com\/aws-samples (search within org)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Beginners to advanced engineers<\/td>\n<td>Cloud\/DevOps\/IaC and operational practices; check for IoT-focused offerings<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Students and early-career professionals<\/td>\n<td>DevOps fundamentals and tooling; verify IoT coverage<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud engineers and ops teams<\/td>\n<td>Cloud operations and platform practices; verify AWS IoT content<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, DevOps, reliability-focused teams<\/td>\n<td>Reliability engineering practices; apply to IoT\/industrial data ops<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + data practitioners<\/td>\n<td>AIOps concepts (monitoring, anomaly detection workflows); verify IoT modules<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training content (verify specific AWS IoT coverage)<\/td>\n<td>Learners seeking trainer-led guidance<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training and mentoring (verify IoT topics)<\/td>\n<td>Engineers upskilling in cloud\/DevOps<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>DevOps consulting\/training platform (verify offerings)<\/td>\n<td>Teams wanting practical DevOps help<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training (verify AWS IoT coverage)<\/td>\n<td>Ops teams needing hands-on support<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify IoT specialization)<\/td>\n<td>Architecture, implementation, operations<\/td>\n<td>Landing-zone + IAM setup; CI\/CD for ingestion apps; observability<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Training + consulting (verify IoT offerings)<\/td>\n<td>Enablement and delivery support<\/td>\n<td>Skills uplift for platform team; delivery acceleration for AWS projects<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting services<\/td>\n<td>DevOps process\/tooling, cloud ops<\/td>\n<td>IaC pipelines; monitoring\/alerting; operational runbooks<\/td>\n<td>https:\/\/devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before AWS IoT SiteWise<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS fundamentals: IAM, VPC basics, CloudWatch, CloudTrail<\/li>\n<li>IoT basics: MQTT concepts, device identity, edge vs cloud patterns<\/li>\n<li>Industrial basics (helpful): PLC\/SCADA concepts, tag-based telemetry, common KPIs (OEE, downtime)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after AWS IoT SiteWise<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS IoT Core (if you need device connectivity and message routing)<\/li>\n<li>AWS IoT Greengrass v2 (for edge runtime patterns)<\/li>\n<li>Data engineering on AWS:<\/li>\n<li>S3 data lakes, Glue, Athena<\/li>\n<li>Streaming ingestion patterns if required<\/li>\n<li>Analytics and visualization:<\/li>\n<li>QuickSight or Grafana (if you need alternatives to Monitor)<\/li>\n<li>Security deep dive:<\/li>\n<li>IAM least privilege<\/li>\n<li>Centralized logging and SIEM integrations<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Industrial IoT Engineer \/ IIoT Architect<\/li>\n<li>Cloud Solutions Architect (Manufacturing\/Industrial)<\/li>\n<li>OT\/IT Integration Engineer<\/li>\n<li>Data Engineer (Industrial data platform)<\/li>\n<li>SRE\/DevOps Engineer supporting ingestion and operations dashboards<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (AWS)<\/h3>\n\n\n\n<p>AWS certifications change over time, but commonly relevant ones include:\n&#8211; AWS Certified Solutions Architect (Associate\/Professional)\n&#8211; AWS Certified SysOps Administrator (Associate)\n&#8211; AWS Certified DevOps Engineer (Professional)\n&#8211; Specialty certifications depending on your analytics\/security direction<br\/>\nVerify the current AWS certification catalog: https:\/\/aws.amazon.com\/certification\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Model a small factory: Plant \u2192 Line \u2192 Machine with 3\u20135 assets.<\/li>\n<li>Build an ingestion app that batches values and retries safely.<\/li>\n<li>Add a derived \u201cHealthScore\u201d property computed from vibration and temperature (verify compute features).<\/li>\n<li>Build a dashboard for current status + 24-hour trend.<\/li>\n<li>Export history to S3 and query it with Athena.<\/li>\n<li>Implement least-privilege IAM: separate writer and reader roles.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Industrial Internet of Things (IIoT)<\/strong>: Applying IoT patterns to industrial environments (plants, machines, sensors).<\/li>\n<li><strong>OT (Operational Technology)<\/strong>: Hardware\/software that monitors and controls physical devices (PLCs, SCADA).<\/li>\n<li><strong>Asset model<\/strong>: A template defining properties and relationships for a type of equipment.<\/li>\n<li><strong>Asset<\/strong>: An instance of an asset model representing a real machine\/process.<\/li>\n<li><strong>Property<\/strong>: A data field on an asset (measurement, attribute, or computed value).<\/li>\n<li><strong>Measurement<\/strong>: Time-series sensor reading (timestamped).<\/li>\n<li><strong>Attribute<\/strong>: Static metadata value (non-time-series).<\/li>\n<li><strong>Hierarchy<\/strong>: Parent\/child relationship between assets (Plant contains Line, etc.).<\/li>\n<li><strong>Ingestion<\/strong>: Writing data points into SiteWise.<\/li>\n<li><strong>Batch ingestion<\/strong>: Sending multiple values per API request for efficiency.<\/li>\n<li><strong>Time-series<\/strong>: Data points indexed by time (temperature over time).<\/li>\n<li><strong>CloudTrail<\/strong>: AWS service that logs API calls for auditing.<\/li>\n<li><strong>CloudWatch<\/strong>: AWS monitoring service for metrics, logs, and alarms.<\/li>\n<li><strong>IAM<\/strong>: AWS Identity and Access Management for authorization of API calls.<\/li>\n<li><strong>IAM Identity Center<\/strong>: AWS service for workforce identity and SSO (commonly used for managed user access to portals).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>AWS IoT SiteWise is AWS\u2019s managed service for <strong>industrial asset modeling and time-series data ingestion\/storage\/query<\/strong>, designed to turn raw Internet of Things (IoT) telemetry into contextualized asset data that operations and analytics teams can use.<\/p>\n\n\n\n<p>It matters because industrial data is only useful at scale when it has <strong>structure<\/strong> (models\/assets\/hierarchies), <strong>governance<\/strong> (IAM + audit), and <strong>standard access patterns<\/strong> (latest\/history APIs and optional dashboards). Cost and security outcomes depend heavily on your ingestion rate, query\/polling patterns, retention strategy, IAM boundaries, and audit\/logging posture.<\/p>\n\n\n\n<p>Use AWS IoT SiteWise when you want a managed industrial data foundation on AWS\u2014especially when you also need optional dashboards (SiteWise Monitor) and\/or edge collection (SiteWise Edge). Start with a small model and a small set of properties, validate ingestion\/query behavior, then scale out with clear naming, least-privilege IAM, careful hierarchy design, and a cost model based on data points and read patterns.<\/p>\n\n\n\n<p>Next learning step: read the official docs and API reference, then extend this lab into an edge ingestion pilot and a production-grade IAM + observability design.\n&#8211; Docs: https:\/\/docs.aws.amazon.com\/iot-sitewise\/\n&#8211; Pricing: https:\/\/aws.amazon.com\/iot-sitewise\/pricing\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Internet of Things (IoT)<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,31],"tags":[],"class_list":["post-224","post","type-post","status-publish","format-standard","hentry","category-aws","category-internet-of-things-iot"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=224"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/224\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}