ē¾åØć®ććøćæć«ä¼ę„ē°å¢ć«ććć¦ćēµē¹ćÆć¾ćć¾ćč³ē£ē®”ēć½ćŖć„ć¼ć·ć§ć³ć«ä¾åćć¦ę„åćåēåćć¦ćć¾ććä¼ę„ćÆćč¤ę°ć® IT ć·ć¹ćć ćéēØęč” (OT) ć·ć¹ćć ć§åćē©ēč³ē£ćē®”ēććåæ
č¦ć«ē“é¢ććććØćććććć¾ććIT ćć¼ć ćä¼ę„ć® IT č³ē£ć追跔ć»ē®”ēććć®ć«å½¹ē«ć¤ćµć¼ćć¹ć® 1 ć¤ć ServiceNow ć§ćććć®ćµć¼ćć¹ćÆććć¼ćć¦ć§ć¢ćć½ććć¦ć§ć¢ć®åØåŗ«ē®”ēććµć¼ćć¹č¦ę±ćć©ć¤ć»ć³ć¹ć³ć³ćć©ć¤ć¢ć³ć¹ćććÆćććøć¼ćŖć½ć¼ć¹ć®å®å
ØćŖć©ć¤ććµć¤ćÆć«ćäøå
ēć«ę±ćć¾ććäøę¹ćOT åćć® AWS IoT SiteWise ćÆćä¼ę„ćē£ę„ę©åØć®ćć¼ćæć大č¦ęØ”ć«åéćä½ē³»åćåęć§ććē®”ēćµć¼ćć¹ć§ćććć®ćµć¼ćć¹ć§ćÆćć©ć¤ćććć³éå»ć®éēØćć¼ćæćēµ±åćŖććøććŖć«ć¾ćØććććØćć§ćććććēµē¹ćÆēē£å¹ēć®åäøćØč³ē£äæå®ć®ęé©åć«å½¹ē«ć¤ćć¼ćæé§ååć®ęęę±ŗå®ćć§ćć¾ćć ServiceNow 㨠AWS IoT SiteWise ćäøē·ć«ä½æćéć«ēµē¹ćē“é¢ććäøč¬ēćŖčŖ²é”ćÆćć·ć¹ćć éć§č³ē£ę
å ±ćäøč²«ćć¦ē¶ęććććØć§ććServiceNow ć§č³ē£é層ćę“ę°ććććØćéēØćć¼ć 㯠AWS IoT SiteWise ć§ćććć®å¤ę“ćęåć§č¤č£½ććåæ
č¦ććććéč¤ććä½ę„ćę“åę§ćęćŖćććåÆč½ę§ćććć¾ćććć®ććć»ć¹ćÆęéććććććØć©ć¼ćēŗēćććććäø”ē°å¢ć§åćč³ē£ćē®”ēććē”é§ćēćć¾ćććć®ććć°čØäŗć§ćÆćServiceNow 㨠AWS IoT SiteWise éć§č³ē£ćć¼ćæćåęććęę³ć瓹ä»ćć¾ćććć®ēµ±åććæć¼ć³ćå®č£
ććććØć§ćęåć«ććę“ę°ćęé¤ćććØć©ć¼ćęøćććIT 㨠OT ćć©ćććć©ć¼ć ć§č³ē£é層ćäøč²«ćć¦ē¶ęć§ćć¾ćć ć½ćŖć„ć¼ć·ć§ć³ę¦č¦ ćć®ć½ćŖć„ć¼ć·ć§ć³ć§ćÆćAWS ć®ćµć¼ćć¹ć使ēØćć¦ćServiceNow 㨠AWS IoT SiteWise ć®éć®čŖåēµ±åćå®ē¾ćć¦ćć¾ćć ServiceNow ć®č³ē£ē®”ēć·ć¹ćć ć§å¤ę“ććć£ćå “åćčŖåēć« AWS IoT SiteWise ć«åę ććććććäø”ć·ć¹ćć ć®åęćē¶ęććć¾ćć å³ 1: ć¢ć¼ćććÆćć£ å³ 1 㯠2 ćć§ć¼ćŗć®ćć¼ćæććć¼ć示ćć¦ćć¾ććęåć®ćć§ć¼ćŗ (Ingest) ć§ćÆććć¼ćæć ServiceNow ćć Amazon AppFlow ćēµē±ć㦠Amazon Simple Storage Service (Amazon S3) ć«ē§»åćć¾ćć2 ēŖē®ć®ćć§ć¼ćŗ (Import) ć§ćÆććć¼ćæćÆ AWS Glue ćēµē±ććAWS IoT SiteWise ć«å°éććåć« Amazon S3 ć«ę»ćć¾ćć äø”ę¹ć®ćć§ć¼ćŗć§ćÆē°ćŖćē®ēććµć¼ćć¹ććć¦ćć¾ćć ć¤ć³ćøć§ć¹ććć§ć¼ćŗ Amazon AppFlow ćÆćServiceNow ć®ćć¼ćć« (Operations Technology (OT)ćOT EntityćOT Entity Type) ććć¢ć»ćććć¼ćæćåå¾ćć¾ćć ćć®ćć¼ćæćÆććć®å¾ Amazon S3 ć« parquet å½¢å¼ ć§ę ¼ē“ććć¾ćć ć¤ć³ćć¼ććć§ć¼ćŗ AWS Glue ćÆćParquet ćć”ć¤ć«ć AWS IoT SiteWise ćć¤ć³ćć¼ćć§ćć JSON å½¢å¼ ć«å¤ęćć¾ćć å¤ęććć JSON ćć”ć¤ć«ćÆćAmazon S3 ć«äæåććć¾ćć AWS IoT SiteWise ćÆćć¢ć»ććę
å ±ćć¤ć³ćć¼ććć¦ć¢ć»ććć¢ćć«ćØé層ćä½ęć¾ććÆę“ę°ćć¾ćć å®č£
ć®ę¦č¦ ćć®ę稿ć§ćÆććć®ēµ±åćå®č£
ććććć®ä»„äøć®ę®µéćę示ćć¦ćć¾ć: Amazon AppFlow ć§ ServiceNow ć³ććÆćæćę§ęććć¢ć»ćććć¼ćæć Amazon S3 ć«åćč¾¼ćæć¾ćć AWS Glue ćøć§ććä½ęćććć¼ćæć parquet å½¢å¼ćć JSON å½¢å¼ć«å¤ęćć¦ćAWS IoT SiteWise ć¤ć³ćć¼ćć®åæ
é ćć©ć¼ćććć«äøč“ććć¾ćć Amazon S3 ćć AWS IoT SiteWise ćøć®ć¢ć»ććć¤ć³ćć¼ććčØå®ćć¾ćć åęę”ä»¶ ćć®ć½ćŖć„ć¼ć·ć§ć³ćå®č£
ććåć«ćꬔć®ćć®ćåæ
č¦ć§ćć ć¢ć»ćććć¼ćć«ćøć®ć¢ćÆć»ć¹ęØ©ćę㤠ServiceNow ć¤ć³ć¹ćæć³ć¹ććć®ä¾ć§ćÆćꬔć®ćć®ć使ēØćć¾ćć Operations Technology (OT) ( cmdb_ci_ot ): ServiceNow ććć®OTććć¤ć¹ć¬ć³ć¼ćććććć®ć¬ć³ć¼ćć«ćÆćååćć·ćŖć¢ć«ēŖå·ćć¢ćć«ēŖå·ćć”ć¼ć«ć¼ćććć³å “ęę
å ±ćŖć©ć®åŗę¬ēćŖå±ę§ćå«ć¾ćć¾ćć OT Entity ( cmdb_ot_entity ): OT ćØć³ćć£ćć£ć¤ć³ć¹ćæć³ć¹ćØćććć®é¢äæćå®ē¾©ććć¬ć³ć¼ććå«ć¾ćć¦ćć¾ććć¾ććéēØé層ć§ććć¤ć¹ćć©ć®ććć«ę„ē¶ććć¦ćććć蔨ćć¦ćć¾ćć OT Entity Type ( cmdb_ot_entity_type ): OT ćØć³ćć£ć㣠(AreaćProcess CellćUnitćEquipment Module ćŖć©) ć®ćæć¤ćć¾ććÆć«ćć“ćŖćå®ē¾©ććć¬ć³ć¼ććå«ć¾ćć¦ćć¾ććć¾ććéēØé層å
ć§čرåÆććć親åé¢äæćå®ē¾©ćć¾ćć 3 ć¤ć®ćć¼ćć«ćććććć®å½¹å²ćé£ęŗćć¦ćOT ć¢ć»ććć®å
Øä½åćęä¾ćć¾ćć cmdb_ci_ot ćÆē©ēććć¤ć¹ę
å ± (ę§ęé
ē®) ćå¦ēćć¾ćć cmdb_ot_entity ćÆćććć®ććć¤ć¹ć®ć¤ć³ć¹ćæć³ć¹ćØé¢äæę§ćē®”ēćć¾ćć cmdb_ot_entity_type ćÆé層ę§é ć®ć«ć¼ć«ćØć«ćć“ćŖćå®ē¾©ćć¾ćć Amazon AppFlowćAmazon S3ćAWS GluećAWS IoT SiteWise ć使ēØććććć®ęØ©éćę㤠AWS ć¢ć«ć¦ć³ćć ć¢ć»ćććć¼ćć«ć®čŖćæåć権éćę㤠system-only user ć® ServiceNow čŖčؼę
å ±ć å®č£
ServiceNow ć³ććÆćæć®ę§ę ćć®ć»ćÆć·ć§ć³ć§ćÆćAmazon AppFlow ćčØå®ć㦠ServiceNow ćććć¼ćæćåćč¾¼ćæćAWS Glue ć§ćć¼ćæćć«ćæćć°åćć¾ćć Amazon AppFlow ć§ ServiceNow ć³ććÆćæćä½ęćć Amazon AppFlow ć³ć³ć½ć¼ć«ć«ē§»åćć¾ćć å·¦å“ć®ć”ćć„ć¼ććć Connections ć®äøć® ServiceNow ćć³ććÆćæć®ćććććć¦ć³ććéøęćć¾ćć Create connection ćéøęćć¾ćć Connect to ServiceNow ć®ćććć¢ććć§ćå³ 2 ćåē
§ććꬔć®ę
å ±ćå
„åćć¾ćć åæ
č¦ć«åæć㦠Basic Auth ć¾ć㯠OAuth2 ćéøęćć¾ćć ć¦ć¼ć¶ć¼ć¬ć¤ć ć«å¾ć£ć¦åæ
č¦ćŖę
å ±ćå
„åćć¾ćć OAuth2 ćéøęććå “åćÆćServiceNow ć¤ć³ć¹ćæć³ć¹ć® Client IDćClient secretćInstance URL ćå
„åćć¾ćć Basic Auth ćéøęććå “åćÆćServiceNow ć¤ć³ć¹ćæć³ć¹ć® UsernamećPasswordćInstance URL ćå
„åćć¾ćć ćć¹ć¦ć®ę
å ±ćå
„åćććć connect ććÆćŖććÆćć¾ćć å³ 2: ServiceNow ć«ę„ē¶ćć åćć¼ćć«ććØć«ććć¼ćä½ęćć¾ć Amazon AppFlow ć³ć³ć½ć¼ć«ć«ē§»åćć¾ćć å·¦å“ć®ć”ćć„ć¼ć§ć Flows ć®äøć«ćć Create flow ćéøęćć¾ćć Flow Name (ä¾: cmdb_ci_ot ) ćå
„åććå³ 3 ćåē
§ć®äøć Next ćéøęćć¾ćć å³ 3: ććć¼ćä½ęćć ćć½ć¼ć¹č©³ē“°ććć¤ć¢ćć°ćććÆć¹ć§ (å³ 4 åē
§)ćꬔć®å
容ćå
„åćć¾ć: ćć½ć¼ć¹åćć§ćÆć ServiceNow ćéøęćć¾ćć ćåć«ä½ęććę„ē¶ć ServiceNow ć³ććÆćæ ć®äøć§éøęććć¦ććććØć確čŖćć¦ćć ćććåē
§åćÆćć使ćć® ServiceNow ć¤ć³ć¹ćæć³ć¹åć«ćŖćć¾ćććć®ä¾ć§ćÆ ādev287617ā ć使ēØćć¦ćć¾ćć ServiceNow ćŖććøć§ćÆć ć§ćÆć Operational Technology (OT) ćéøęćć¾ćć å®å
詳瓰 ćć¤ć¢ćć°ćććÆć¹ (å³ 4 åē
§) ć«ē§»åććꬔć®å
容ćå
„åćć¾ć: å®å
å ć§ćÆć Amazon S3 ćéøęćć¾ćć ćć±ćć詳瓰 ć®äøć§ćå®å
ć®ćć±ćććéøęćććć ę°ććä½ę ( Amazon S3 ć³ć³ć½ć¼ć« ćć)ćć¾ćććć®ä¾ć§ćÆćć±ćććć¬ćć£ććÆć¹ cmdb_ci_ot ć使ēØćć¦ćć¾ćć Next ćéøęćć¾ćć å³ 4: ććć¼ć®ć½ć¼ć¹ćØéäæ”å
ć½ć¼ć¹ ćć å®å
ćøć®ćć£ć¼ć«ć ćććć³ć° ćć¤ć¢ćć°ćććÆć¹ć§ (å³ 5 åē
§)ć仄äøć®ä½ę„ćč”ćć¾ćć ć½ć¼ć¹ ćć£ć¼ć«ćå ć®äøć§ć ćć¹ć¦ć®ćć£ć¼ć«ććē“ę„ććććć ćéøęćć¾ćć Next ćéøęććē¶ć㦠Next ćéøęćć¾ćć ęå¾ć« ććć¼ćå®č” ćéøęćć¦å®äŗćć¾ćć å³ 5: å®č”ććć¼ ćć¹ć¦ć®ćć¼ćć«ć«åƾćć¦ććć¼ćä½ęćć āCreate flows for each tableā ć®ęé ćē¹°ćčæććä»ć® ServiceNow ćŖććøć§ćÆććØć®ę„ē¶ćä½ęćć¦ćć ćć: ććć¼å㨠Amazon S3 ćć¬ćć£ććÆć¹: cmdb_ot_entity ćServiceNow ćŖććøć§ćÆć: OT Assetć ććć¼å㨠Amazon S3 ćć¬ćć£ććÆć¹: cmdb_ot_entity_type ćServiceNow ćŖććøć§ćÆć: OT Asset Typeć AWS Glue Crawler ćć»ććć¢ććććć¹ćć¼ććē¹å®ććććć«å®č” AWS Glue ć³ć³ć½ć¼ć«ć«ē§»åćć¾ćć å·¦ć®ć”ćć„ć¼ćć Data Catalog ć®äøć«ćć Crawlers ćéøęćć¾ćć Crawlers ćć¤ć¢ćć°ćććÆć¹ (å³ 6 åē
§) ć§ć Create crawler ćéøęćć¾ćć å³ 6: AWS Glue Crawlers Crawler å ć«ćÆ ServiceNow Crawler ć使ćć Next ćéøęćć¦ćć ććć å³ 7: Crawler ć® properties Add an S3 data source ćéøęćć¾ćć Add an S3 data source ćć¤ć¢ćć°ćććÆć¹ć§ (å³ 8 ćåē
§)ć仄äøć®ęé ć«å¾ćć¾ćć ćć¼ćæć½ć¼ć¹ ćØć㦠S3 ćéøć³ć¾ćć S3 path ćØć㦠<your_bucket_name> ćå
„åćć¾ćć Add an S3 data source ćéøęćć¾ćć å³ 8: Crawler data source Next ćéøęćć¾ćć IAM ćć¼ć«ć®é
ē®ć§ć Create new IAM role ćéøęćć¦ćć ćć (å³ 9 ćåē
§)ć å³ 9: Crawler IAM Role ćć¼ć«ć®ååćę±ŗćć¾ćććć®ä¾ć§ćÆ AWSGlueServiceRole-ServiceNowCrawler ć使ēØćć¾ćć Next ćéøęćć¾ćć ćæć¼ć²ćććć¼ćæćć¼ć¹ć®äøć§ćAWS Glue ćć¼ćæćć¼ć¹ćéøęćć¾ćććć®ä¾ć§ćÆććć©ć«ćć®ćć¼ćæćć¼ć¹ć使ēØćć¦ćć¾ćć å³ 10: AWS Glue ćć¼ćæćć¼ć¹ć®éøę Next ćéøęćć¾ćć Create ćéøęćć¾ćć ćÆćć¼ć«ćå®č”ćć¾ććå®äŗććć®ć«ē“ 2 åćććć¾ćć ServiceNow ć® Parquet ćć¼ćæćÆćAmazon S3 ć«ć¤ć³ćć¼ćććć¾ććć JSON ćć”ć¤ć«ć®å¤ę ćć®ć»ćÆć·ć§ć³ć§ćÆćAWS Glue ćøć§ććčØå®ć㦠parquet ćć”ć¤ć«ć AWS IoT SiteWise ć«é©ćć JSON å½¢å¼ć«å¤ęćććć¼ćæć AWS IoT SiteWise ć«ć¤ć³ćć¼ććć¾ć AWS Glue ćøć§ććä½ę AWS Glue ć³ć³ć½ć¼ć«ć«ē§»åćć¾ćć å·¦å“ć®ć”ćć„ć¼ććć ETL Jobs ć®äøć«ćć Visual ETL ćéøęćć¾ćć Create Job ć§ć Visual ETL ćéøęćć¾ćć å³ 11: AWS Glue Studio Source ćć¼ććä½ęćć¾ććéć ćć©ć¹ (+) ććæć³ćéøęć (å³ 12 åē
§)ć Amazon S3 ćéøęćć¦ćć ććć å³ 12: Visual ETL Name ć§ćÆćå³ 13 ć®ććć«ćć¼ćć®ååćä»»ęć«ć¤ćć¦ćć ćććććć§ćÆ cmdb_ot_entity ćØćć¾ćć S3 source type ć§ćÆć Data Catalog table ćéøęćć¦ćć ććć Database ć§ćÆćåć« AWS Glue Crawler ć®ć»ććć¢ććęć«éøęćććæć¼ć²ćććć¼ćæćć¼ć¹ćéøćć§ćć ććć Table ć§ćÆćęåć®č”Ø cmbd_ot_entity ćéøęćć¦ćć ććććć®ęé ć cmdb_ci_ot 㨠cmdb_ot_entity_type ć®åćć¼ćć«ć«ć¤ćć¦ē¹°ćčæćć¦ćć ćć ć å³ 13: ć½ć¼ć¹ćć¼ćć®čæ½å ć¢ć»ććć AWS IoT SiteWise ć®ć¤ć³ćć¼ćå½¢å¼ć«ććććć å³ 12 ć«ē¤ŗććć¦ććéćć+ćććæć³ćéøęćć¦ćę°ćć Source ćć¼ććä½ęćć¦ćć ććć Transform ćć¼ććčæ½å ćć SQL Query ćéøęćć¦ćć ććć Name ć«ćÆć assetsć ć使ēØćć¦ćć ććć Node parents ć«ćÆćć½ć¼ć¹ćć¼ć cmdb_ot_entity 㨠cmdb_ci_ot ćéøęćć¦ćć ćććć Input sources 㨠SQL Aliases ć«ćÆćå³ 14 ć«ē¤ŗćććć«ććććć cmdb_ot_entity 㨠cmdb_ci_ot ćéøęćć¦ćć ććć å³ 14: ć¢ć»ććć®å¤ę SQL Query ć«ę¬”ć®ćÆćØćŖćć³ćć¼ & ćć¼ć¹ććć¦ćć ććć SELECT DISTINCT parent.sys_id as assetExternalId, parent.name as assetName, parent.ot_asset_type as assetModelExternalId, COLLECT_LIST( CASE WHEN child.sys_id IS NOT NULL THEN STRUCT( array_join(array(parent.ot_asset_type, child.ot_asset_type), '-') as externalId, child.sys_id as childAssetExternalId ) END ) as assetHierarchies, ( CASE WHEN ot.sys_id IS NOT NULL THEN array( STRUCT('name' as externalId, ot.name as attributeValue), STRUCT('serial_number' as externalId, ot.serial_number as attributeValue), STRUCT('manufacturer' as externalId, ot.manufacturer as attributeValue), STRUCT('model_number' as externalId, ot.model_number as attributeValue), STRUCT('firmware_version' as externalId, ot.firmware_version as attributeValue), STRUCT('hardware_version' as externalId, ot.hardware_version as attributeValue), STRUCT('asset_tag' as externalId, ot.asset_tag as attributeValue), STRUCT('category' as externalId, ot.category as attributeValue), STRUCT('environment' as externalId, ot.environment as attributeValue), STRUCT('short_description' as externalId, ot.short_description as attributeValue) ) ELSE array() END ) as assetProperties FROM cmdb_ot_entity as parent LEFT JOIN cmdb_ci_ot as ot ON parent.ot_asset = ot.sys_id LEFT JOIN cmdb_ot_entity as child ON parent.sys_id = child.parent GROUP BY parent.sys_id, parent.name, parent.ot_asset_type, ot.sys_id, ot.name, ot.serial_number, ot.manufacturer, ot.model_number, ot.firmware_version, ot.hardware_version, ot.asset_tag, ot.category, ot.environment, ot.short_description asset model ććććć³ć°ćć å³ 12 ć«ē¤ŗććć¦ććéćć+ćććæć³ćéøęćć¦ćę°ćć Source ćć¼ććä½ęćć¾ćć ę°ćć Transform ćć¼ććčæ½å ćć SQL Query ćéøęćć¾ćć Name ć«ćÆć assetModels ćć使ēØćć¾ćć Node Parents ć§ćÆćć½ć¼ć¹ćć¼ć cmdb_ot_entity_type ćéøęćć¾ćć Input sources 㨠SQL Aliases ć§ćÆćå³ 15 ć«ē¤ŗććć¦ććććć«ććććć cmdb_ot_entity_type ć使ēØćć¾ćć å³ 15: assetModel å¤ę SQL Query ć«ę¬”ć®ćÆćØćŖćć³ćć¼ & ćć¼ć¹ććć¦ćć ććć SELECT DISTINCT parent.sys_id as assetModelExternalId, parent.label as assetModelName, ( CASE WHEN parent.ot_table IS NOT NULL THEN from_json( '[{"dataType":"STRING","externalId":"name","name":"Name","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"serial_number","name":"Serial Number","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"manufacturer","name":"Manufacturer","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"model_number","name":"Model Number","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"firmware_version","name":"Firmware Version","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"hardware_version","name":"Hardware Version","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"asset_tag","name":"Asset Tag","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"category","name":"Category","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"environment","name":"Environment","type":{"attribute":{"defaultValue":"-"}},"unit":"-"},{"dataType":"STRING","externalId":"short_description","name":"Short Description","type":{"attribute":{"defaultValue":"-"}},"unit":"-"}]', 'array&amp;lt;struct&amp;lt;dataType:string,externalId:string,name:string,type:struct&amp;lt;attribute:struct&amp;lt;defaultValue:string&amp;gt;&amp;gt;,unit:string&amp;gt;&amp;gt;' ) ELSE array() END ) as assetModelProperties, COLLECT_LIST( CASE WHEN child.sys_id IS NOT NULL THEN STRUCT( array_join(array(parent.sys_id, child.sys_id), '-') as externalId, child.name as name, child.sys_id as childAssetModelExternalId ) END ) as assetModelHierarchies FROM cmdb_ot_entity_type as parent LEFT JOIN cmdb_ot_entity_type as child ON parent.sys_id = child.parent_type GROUP BY parent.sys_id, parent.name, parent.label, parent.ot_table assets㨠asset model ćēµćæåććć å³ 12 ć«ē¤ŗććć¦ććććć«ćéč²ć® ć+ć ććæć³ćéøęćć¦ę°ćć Source ćć¼ććä½ęćć¾ćć ę°ćć Transform ćć¼ććčæ½å ćć SQL Query ćéøęćć¾ćć Name ć«ćÆ ćassetModelHierarchyć ć使ēØćć¾ćć Node parents ć«ćÆćSource ćć¼ć assets 㨠assetModels ćéøęćć¾ćć Input sources 㨠SQL aliases ć«ćÆćå³ 16 ć®ććć« assets 㨠assetModels ć使ēØćć¾ćć å³ 16: assetModelHierarchy å¤ę SQL Query ć«ę¬”ć®ćÆćØćŖćć³ćć¼ & ćć¼ć¹ććć¦ćć ććć SELECT ( SELECT COLLECT_LIST(STRUCT(assetModels.*)) as assetModels FROM assetModels ) as assetModels, ( SELECT COLLECT_LIST(STRUCT(assets.*)) as assets FROM assets ) as assets AWS Glue ćøć§ć ć®ēµęć AWS IoT SiteWise ć«ć¤ć³ćć¼ćććććć«ä½æēØćććććå¤ęć®ćæć¼ć²ćććčæ½å ćć¾ćććć å¤ęć®ćæć¼ć²ćććčæ½å ćć å³ 12 ć«ē¤ŗććć¦ććéć ć+ć ććæć³ćéøęćć¦ćę°ććć½ć¼ć¹ćć¼ććä½ęćć¾ćć ę°ćććć¼ć Transform ćčæ½å ćććæć¼ć²ćććć Amazon S3 ćéøęćć¾ćć Name ćÆä½ć§ćę§ćć¾ććććć®ä¾ć§ćÆ Amazon S3 ć使ēØćć¦ćć¾ćć Node Parents ćÆćć½ć¼ć¹ćć¼ć assetModelHierarchy ćéøęćć¾ćć Format 㯠JSON ćéøęćć¾ćć Compression Type 㯠None ćéøęćć¾ćć S3 Target Location 㯠<your_destination_bucket> ćéøęćć¾ćć å³ 17: ćæć¼ć²ćććć¼ćć®čæ½å å®äŗćććØćå³ 18 ć«ē¤ŗććććŖ ETL ć確čŖć§ćććÆćć§ćć Save ćéøęćć¦ćć ććć ćććć Run ćéøęććå®äŗććć¾ć§å¾
ć”ć¾ćć å³ 18: ć¢ć»ććć®é層 AWS IoT SiteWise ćøć®åć込㿠ćć®ć»ćÆć·ć§ć³ć§ćÆćAmazon S3 å
ć® JSON ćć”ć¤ć«ć®ä½ęć確čŖććAWS IoT SiteWise ć« ServiceNow ć®ć¢ć»ćććć¤ć³ćć¼ććć¾ćć ć¾ććꬔć®ęä½ćč”ć£ć¦ JSON ćć”ć¤ć«ćä½ęćććććØć確čŖćć¾ćć Amazon S3 ć³ć³ć½ć¼ć«ćéćć¾ćć <your_destination_bucket> ćéøęćć¾ćć run-<timestamp>-part-r-00000 ćć”ć¤ć«ćéøęå¾ć ć¢ćÆć·ć§ć³ ććÆćŖććÆć ćŖććøć§ćÆćć®ååå¤ę“ćéøęćć sitewise-import.json ć«å¤ę“ćććAWS IoT SiteWise ć«ć¤ć³ćć¼ćććććć«ćÆććć”ć¤ć«åć« .json ć®ę”å¼µåćä»ććåæ
č¦ćććć¾ćć AWS IoT SiteWise ć«ć¤ć³ćć¼ćććć«ćÆćAWS IoT SiteWise ć³ć³ć½ć¼ć«ćéćć¾ćć ććć²ć¼ć·ć§ć³ćć¤ć³ć§ Bulk Operations ćéøęćć¾ćć New Import ćéøęćć¾ćć å³ 19: AWS IoT SiteWise bulk operations Import metadata ććS3 URI ć« <your_destination_bucket> ćéøęć sitewise-import.json ćć”ć¤ć«ćęå®ćć¾ćć å³ 20: S3 import Import ćéøęććć¤ć³ćć¼ććå®äŗććć¾ć§å¾
ć”ć¾ćć ä½ę„ć®ę¤čؼ å³ 21 ć«ē¤ŗććć¦ććććć«ććć¾ćć¾ćŖć¢ćć«ćØć¢ćć«ććććć£ć蔨示ć§ććććć«ćŖćć¾ćććć¾ććå³ 22ć23ć24 ć«ē¤ŗććć¦ććććć«ććć¾ćć¾ćŖć¢ć»ćććØć¢ć»ććććććć£ć蔨示ć§ćć¾ććććŖćć® ServiceNow é層ć AWS IoT SiteWise ć«ę£åøøć«č¤č£½ććć¾ććć å³ 21: AWS IoT SiteWise ć¢ćć« å³ 22: AWS IoT SiteWise ć®ć¢ćć«ććććć£ å³ 23: AWS IoT SiteWise ć¢ć»ćć å³ 24: AWS IoT SiteWise ć®ć¢ć»ćććććć㣠ćÆćŖć¼ć³ć¢ćć ćć®ććć°ć§čŖ¬ęććä½ę„ććÆćŖć¼ć³ć¢ććććć«ćÆćAmazon AppFlow ć³ć³ć½ć¼ć«ć«ē§»åććććć¼ćØ ServiceNow ć³ććÆćæćåé¤ćć¾ććServiceNow ć§ä½ęććć¦ć¼ć¶ć¼ćØć¦ć¼ć¶ć¼čŖčؼę
å ±ćåé¤ćć¾ććAWS Glue ć§ćÆćCrawler ććøć§ććAWS Glue ćć¼ćæć«ćæćć°ćććć¼ćć«ćåé¤ćć¾ććAWS IoT SiteWise ććć¢ć»ćććØć¢ć»ććć¢ćć«ćåé¤ćć¾ććęå¾ć«ćAmazon S3 ćć±ććććParquet㨠JSON å½¢å¼ć®ćć”ć¤ć«ć®äø”ę¹ćåé¤ćć¾ćć ć¾ćØć ćć®ććć°ć§ćÆćServiceNow ć®ć¢ć»ćććć¼ćæćØ AWS IoT SiteWise ćēµ±åććććć»ć¹ć瓹ä»ćć¾ććć ćć®ćć©ćÆćć£ć¹ć«ćććēµē¹ćÆ IT 㨠OT ć®ć¢ć»ććē®”ēć½ćŖć„ć¼ć·ć§ć³éć§äøč²«ććć¢ć»ććę
å ±ćäæęć§ćć¾ćć ćć®ēµ±åćå®å
Øć«čŖååććć«ćÆćAmazon AppFlow ć®ććć¼ć«å®ęēć«å®č”ććććć«ć¹ć±ćøć„ć¼ćŖć³ć°ććAWS Glue ćøć§ćć«ć¹ć±ćøć„ć¼ć«ć®ććŖć¬ć¼ćčØå®ćć¾ćć AWS Glue ćøć§ććčØå®ććéćETL ć¹ćÆćŖććēµē±ć§åŗåćć”ć¤ć«ć« ā.jsonā ę”å¼µåćä»äøććććØćć§ćć¾ćć ćććć® 2 ć¤ć®ć½ćŖć„ć¼ć·ć§ć³ć«ćććęåć§ć®ćć¼ćæå
„åćęé¤ććIT ć·ć¹ćć 㨠OT ć·ć¹ćć éć®ę“åę§ćäæććć¾ćć AWS IoT SiteWise ć®č©³ē“°ćē„ćććå “åćÆć AWS IoT SiteWise Developer Guide ćć覧ćć ććć ćć®čØäŗćÆ Maria㨠Brent ć«ćć£ć¦ęøććć Integrating ServiceNow OT Asset Workspaces with AWS IoT SiteWise Asset Models ć®ę„ę¬čŖčسć§ćććć®čØäŗćÆć½ćŖć„ć¼ć·ć§ć³ć¢ć¼ćććÆćć®ęéØć翻訳ćć¾ććć About the authors Maria El Khoury : AWS ć®ć½ćŖć„ć¼ć·ć§ć³ć¢ć¼ćććÆćć製é ę„ć®ććøćæć«ćć©ć³ć¹ćć©ć¼ć”ć¼ć·ć§ć³ćęÆę“ććIoT ćć³ć³ćć„ć¼ćæććøć§ć³ć®ēµéØćę“»ćććē£ę„ēØ IoT ććµćć©ć¤ćć§ć¼ć³åéćøć® AWS é©ēØć«ę³Øåć Brent Van Wynsberge : AWS ć®ć½ćŖć„ć¼ć·ć§ć³ć¢ć¼ćććÆćććØć³ćæć¼ćć©ć¤ćŗé”§å®¢ć®ćÆć©ć¦ćå°å
„ćęÆę“ćć IoT ć DevOps ććć¼ćæåęćć³ć³ććęč”ć«ćé¢åæćęć¤ć Kazunari Hattori čŖåč»ę„ēę
å½ć®ć½ćŖć„ć¼ć·ć§ć³ć¢ć¼ćććÆććCCoE ē«ć”äøććå·„å “ IoT ć®å°å
„ććÆć©ć¦ćę“»ēØć®ęØé²ć«ę³ØåćAWS ć® IoT ć®ęč”ć³ćć„ććć£ć«ęå±ć 第äŗēØ®é»ę°å·„äŗå£«ćä»ę„ćć£ć³ćć³ć°ć«ć¼ćć¬ć³ćæć«ćć¦ē§©ē¶ć«ćć£ć³ćć«č”ćć¾ććć