[ad_1]
Introduction
AWS IoT SiteWise is a managed service that helps clients acquire, retailer, arrange and monitor knowledge from their industrial gear at scale. Clients usually have to carry their historic gear measurement knowledge from present programs equivalent to knowledge historians and time sequence databases into AWS IoT SiteWise for making certain knowledge continuity, coaching synthetic intelligence (AI) & machine studying (ML) fashions that may predict gear failures, and deriving actionable insights.
On this weblog submit, we’ll present how one can get began with the BulkImportJob API and import historic gear knowledge into AWS IoT SiteWise utilizing a code pattern.
You should utilize this imported knowledge to achieve insights by way of AWS IoT SiteWise Monitor and Amazon Managed Grafana, practice ML fashions on Amazon Lookout for Gear and Amazon SageMaker, and energy analytical purposes.
To start a bulk import, clients have to add a CSV file to Amazon Easy Storage Service (Amazon S3) containing their historic knowledge in a predefined format. After importing the CSV file, clients can provoke the asynchronous import to AWS IoT SiteWise utilizing the CreateBulkImportJob operation, and monitor the progress utilizing the DescribeBulkImportJob and ListBulkImportJob operations.
Stipulations
To comply with by way of this weblog submit, you will want an AWS account and an AWS IoT SiteWise supported area. If you’re already utilizing AWS IoT SiteWise, select a special area for an remoted surroundings. You might be additionally anticipated to have some familiarity with Python.
Setup the surroundings
- Create an AWS Cloud9 surroundings utilizing
Amazon Linux 2
platform - Utilizing the terminal in your Cloud9 surroundings, set up Git and clone the sitewise-bulk-import-example repository from Github
sudo yum set up git git clone https://github.com/aws-samples/aws-iot-sitewise-bulk-import-example.git cd aws-iot-sitewise-bulk-import-example pip3 set up -r necessities.txt
Walkthrough
For the demonstration on this submit, we’ll use an AWS Cloud9 occasion to characterize an on-premises developer workstation and simulate two months of historic knowledge for a number of manufacturing traces in an car manufacturing facility.
We are going to then put together the information and import it into AWS IoT SiteWise at scale, leveraging a number of bulk import jobs. Lastly, we’ll confirm whether or not the information was imported efficiently.
A bulk import job can import knowledge into the 2 storage tiers provided by AWS IoT SiteWise, relying on how the storage is configured. Earlier than we proceed, allow us to first outline these two storage tiers.
Scorching tier: Shops regularly accessed knowledge with decrease write-to-read latency. This makes the recent tier splendid for operational dashboards, alarm administration programs, and every other purposes that require quick entry to the latest measurement values from gear.
Chilly tier: Shops less-frequently accessed knowledge with increased learn latency, making it splendid for purposes that require entry to historic knowledge. As an illustration, it may be utilized in enterprise intelligence (BI) dashboards, synthetic intelligence (AI), and machine studying (ML) coaching. To retailer knowledge within the chilly tier, AWS IoT SiteWise makes use of an S3 bucket within the buyer’s account.
Retention Interval: Determines how lengthy your knowledge is saved within the scorching tier earlier than it’s deleted.
Now that we discovered concerning the storage tiers, allow us to perceive how a bulk import job handles writes for various eventualities. Consult with the desk beneath:
Worth | Timestamp | Write Conduct |
New | New | A brand new knowledge level is created |
New | Present | Present knowledge level is up to date with the brand new worth for the supplied timestamp |
Present | Present | The import job identifies duplicate knowledge and discards it. No adjustments are made to present knowledge. |
Within the subsequent part, we’ll comply with step-by-step directions to import historic gear knowledge into AWS IoT SiteWise.
Steps to import historic knowledge
Step 1: Create a pattern asset hierarchy
For the aim of this demonstration, we’ll create a pattern asset hierarchy for a fictitious car producer with operations throughout 4 totally different cities. In a real-world situation, you might have already got an present asset hierarchy in AWS IoT SiteWise, by which case this step is non-obligatory.
Step 1.1: Evaluation the configuration
- From terminal, navigate to the basis of the Git repo.
- Evaluation the configuration for asset fashions and belongings.
cat config/assets_models.yml
- Evaluation the schema for asset properties.
cat schema/sample_stamping_press_properties.json
Step 1.2: Create asset fashions and belongings
- Run
python3 src/create_asset_hierarchy.py
to robotically create asset fashions, hierarchy definitions, belongings, asset associations. - Within the AWS Console, navigate to AWS IoT SiteWise, and confirm the newly created Fashions and Belongings.
- Confirm that you just see the asset hierarchy much like the one beneath.
Step 2: Put together historic knowledge
Step 2.1: Simulate historic knowledge
On this step, for demonstration goal, we’ll simulate two months of historic knowledge for 4 stamping presses throughout two manufacturing traces. In a real-world situation, this knowledge would usually come from supply programs equivalent to knowledge historians and time sequence databases.
The CreateBulkImportJob API has the next key necessities:
- To determine an asset property, you will want to specify both an
ASSET_ID
+PROPERTY_ID
mixture or theALIAS.
On this weblog, we will likely be utilizing the previous. - The info must be in CSV format.
Observe the steps beneath to generate knowledge in keeping with these expectations. For extra particulars concerning the schema, confer with Ingesting knowledge utilizing the CreateBulkImportJob API.
- Evaluation the configuration for knowledge simulation.
cat config/data_simulation.yml
- Run
python3 src/simulate_historical_data.py
to generate simulated historic knowledge for the chosen properties and time interval. If the full rows exceedrows_per_job
as configured inbulk_import.yml
, a number of knowledge recordsdata will likely be created to assist parallel processing. On this pattern, about 700,000+ knowledge factors are simulated for the 4 stamping presses (A-D) throughout two manufacturing traces (Sample_Line 1 and Sample_Line 2). Since we configuredrows_per_job
as 20,000, a complete of 36 knowledge recordsdata will likely be created. - Confirm the generated knowledge recordsdata beneath
knowledge
listing. - The info schema will comply with the
column_names
configured inbulk_import.yml
config file.
Step 2.2: Add historic knowledge to Amazon S3
As AWS IoT SiteWise requires the historic knowledge to be out there in Amazon S3, we’ll add the simulated knowledge to the chosen S3 bucket.
- Replace the information bucket beneath
bulk_import.yml
with any present short-term S3 bucket that may be deleted later. - Run
python3 src/upload_to_s3.py
to add the simulated historic knowledge to the configured S3 bucket. - Navigate to Amazon S3 and confirm the objects had been uploaded efficiently.
Step 3: Import historic knowledge into AWS IoT SiteWise
Earlier than you’ll be able to import historic knowledge, AWS IoT SiteWise requires that you just allow Chilly tier storage. For added particulars, confer with Configuring storage settings.
You probably have already activated chilly tier storage, contemplate modifying the S3 bucket to a brief one which will be later deleted whereas cleansing up the pattern sources.
Observe that by altering the S3 bucket, not one of the knowledge from present chilly tier S3 bucket is copied to the brand new bucket. When modifying S3 bucket location, make sure the IAM function configured beneath S3 entry function has permissions to entry the brand new S3 bucket.
Step 3.1: Configure storage settings
- Navigate to AWS IoT SiteWise, choose Storage, then choose Activate chilly tier storage.
- Choose an S3 bucket location of your alternative.
- Choose Create a task from an AWS managed template.
- Examine Activate retention interval, enter
30 days
, and save.
Step 3.2: Present permissions for AWS IoT SiteWise to learn knowledge from Amazon S3
- Navigate to AWS IAM, choose Insurance policies beneath Entry administration, and Create coverage.
- Change to JSON tab and change the content material with the next. Replace <bucket-name> with the identify of information S3 bucket configured in
bulk_import.yml
.{ "Model": "2012-10-17", "Assertion": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Useful resource": ["arn:aws:s3:::<bucket-name>"] } ] }
- Save the coverage with Identify as
SiteWiseBulkImportPolicy
. - Choose Roles beneath Entry administration, and Create function.
- Choose Customized belief coverage and change the content material with the next.
{ "Model": "2012-10-17", "Assertion": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iotsitewise.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- Click on Subsequent and choose the
SiteWiseBulkImportPolicy
IAM coverage created within the earlier steps. - Click on Subsequent and create the function with Position identify as
SiteWiseBulkImportRole
. - Choose Roles beneath Entry administration, seek for the newly created IAM function
SiteWiseBulkImportRole
, and click on on its identify. - Copy the ARN of the IAM function utilizing the copy icon.
Step 3.3: Create AWS IoT SiteWise bulk import jobs
- Exchange the
role_arn
discipline inconfig/bulk_import.yml
with the ARN ofSiteWiseBulkImportRole
IAM function copied in earlier steps. - Replace the
config/bulk_import.yml
file:- Exchange the
role_arn
with the ARN ofSiteWiseBulkImportRole
IAM function. - Exchange the
error_bucket
with any present short-term S3 bucket that may be deleted later.
- Exchange the
- Run
python3 src/create_bulk_import_job.py
to import historic knowledge from the S3 bucket into AWS IoT SiteWise: - The script will create a number of jobs to concurrently import all the information recordsdata created into AWS IoT SiteWise. In a real-world situation, a number of terabytes of information will be shortly imported into AWS IoT SiteWise utilizing concurrently working jobs.
- Examine the standing of jobs from the output:
- In case you see the standing of any job as
COMPLETED_WITH_FAILURES
orFAILED
, confer with Troubleshoot frequent points part.
Step 4: Confirm the imported knowledge
As soon as the majority import jobs are accomplished, we have to confirm if the historic knowledge is efficiently imported into AWS IoT SiteWise. You may confirm the information both by straight wanting on the chilly tier storage or by visually inspecting the charts out there in AWS IoT SiteWise Monitor.
Step 4.1: Utilizing the chilly tier storage
On this step, we’ll examine if new S3 objects have been created within the bucket that was configured for chilly tier.
- Navigate to Amazon S3 and find the S3 bucket configured beneath AWS IoT SiteWise → Storage → S3 bucket location (in Step 3) for chilly tier storage.
- Confirm the partitions and objects beneath the
uncooked/
prefix.
Step 4.2: Utilizing AWS IoT SiteWise Monitor
On this step, we’ll visually examine if the charts present knowledge for the imported date vary.
- Navigate to AWS IoT SiteWise and find Monitor.
- Create a portal to entry knowledge saved in AWS IoT SiteWise.
- Present
AnyCompany Motor
because the Portal identify. - Select
IAM
for Person authentication. - Present your e mail handle for Assist contact e mail, and click on Subsequent.
- Go away the default configuration for Further options, and click on Create.
- Beneath Invite directors, choose your IAM person or IAM Position, and click on Subsequent.
- Click on on Assign Customers.
- Present
- Navigate to Portals and open the newly created portal.
- Navigate to Belongings and choose an asset, for instance, AnyCompany_Motor → Sample_Arlington → Sample_Stamping → Sample_Line 1 → Sample_Stamping Press A.
- Use Customized vary to match the date vary for the information uploaded.
- Confirm the information rendered within the time sequence line chart.
Troubleshoot frequent points
On this part, we’ll cowl the frequent points encountered whereas importing knowledge utilizing bulk import jobs and spotlight some potential causes.
If a bulk import job just isn’t efficiently accomplished, it’s best apply to confer with logs within the error S3 bucket configured in bulk_import.yml
and perceive the basis trigger.
No knowledge imported
- Incorrect schema:
dataType doesn't match dataType tied to the asset-property
The schema supplied at Ingesting knowledge utilizing the CreateBulkImportJob API ought to be adopted precisely. Utilizing the console, confirm the supplied DATA_TYPE supplied matches with the information kind within the corresponding asset mannequin property. - Incorrect ASSET_ID or PROPERTY_ID:
Entry just isn't modeled
Utilizing the console, confirm the corresponding asset and property exists. - Duplicate knowledge:
A price for this timestamp already exists
AWS IoT SiteWise detects and robotically discards any duplicate. Utilizing console, confirm if the information already exists.
Lacking solely sure components of information
- Lacking latest knowledge: BulkImportJob API imports the latest knowledge (that falls throughout the scorching tier retention interval) into AWS IoT SiteWise scorching tier and doesn’t switch it instantly to Amazon S3 (chilly tier). Chances are you’ll want to attend for the subsequent scorching to chilly tier switch cycle, which is presently set to six hours.
Clear Up
To keep away from any recurring fees, take away the sources created on this weblog. Observe the steps to delete these sources:
- Navigate to AWS Cloud9 and delete your surroundings.
- Run
python3 src/clean_up_asset_hierarchy.py
to delete the next sources, so as, from AWS IoT SiteWise:- Asset associations
- Belongings
- Hierarchy definitions from asset fashions
- Asset fashions
- From AWS IoT SiteWise console, navigate to Monitor → Portals, choose the beforehand created portal, and delete.
- Navigate to Amazon S3 and carry out the next:
- Delete the
S3 bucket location
configured beneath the Storage part of AWS IoT SiteWise - Delete the information and error buckets configured within the
/config/bulk_import.yml
of Git repo
- Delete the
Conclusion
On this submit, you could have discovered tips on how to use the AWS IoT SiteWise BulkImportJob API to import historic gear knowledge into AWS IoT SiteWise utilizing AWS Python SDK (Boto3). You too can use the AWS CLI or SDKs for different programming languages to carry out the identical operation. To study extra about all supported ingestion mechanisms for AWS IoT SiteWise, go to the documentation.
Concerning the authors
Raju Gottumukkala is an IoT Specialist Options Architect at AWS, serving to industrial producers of their good manufacturing journey. Raju has helped main enterprises throughout the power, life sciences, and automotive industries enhance operational effectivity and income development by unlocking true potential of IoT knowledge. Previous to AWS, he labored for Siemens and co-founded dDriven, an Trade 4.0 Knowledge Platform firm. |
Avik Ghosh is a Senior Product Supervisor on the AWS Industrial IoT workforce, specializing in the AWS IoT SiteWise service. With over 18 years of expertise in know-how innovation and product supply, he focuses on Industrial IoT, MES, Historian, and large-scale Trade 4.0 options. Avik contributes to the conceptualization, analysis, definition, and validation of Amazon IoT service choices. |
[ad_2]