Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS IoT TwinMakerの環境をIaCで整える

Jun Ichikawa
November 17, 2022

AWS IoT TwinMakerの環境をIaCで整える

「nakanoshima.dev #32 デジタルツインに触れてみよう」で話をした、AWS IoT SiteWiseのデータをAWS IoT TwinMakerとAmazon Managed Grafanaを使ってデジタルツインを作る際のハマりどころ
https://nakanoshima-dev.connpass.com/event/263967/

Jun Ichikawa

November 17, 2022
Tweet

More Decks by Jun Ichikawa

Other Decks in Programming

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS IoT TwinMakerの 環境をIaCで整える
  2. © 2022, Amazon Web Services, Inc. or its affiliates. ⾃⼰紹介

    名前︓ 市川 純(いちかわ じゅん) 所属︓ アマゾン ウェブ サービス ジャパン合同会社 デジタルトランスフォーメーション本部 IoT プロトタイピング ソリューション アーキテクト 担当︓ IoTに関係するプロトタイピングやお客様の⽀援
  3. © 2022, Amazon Web Services, Inc. or its affiliates. アジェンダ

    l AWS IoT TwinMakerとAWS IoT SiteWiseのおさらい l デモ l IaC(CDK)でAWS IoT TwinMakerを使った構築をする際のハマりど ころ l Q/A
  4. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS IoT TwinMaker と AWS IoT SiteWiseの おさらい 4
  5. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    IoT TwinMaker Data connectors 組み込みのコネクタを使 用してさまざまなソース からデータにアクセスす るか、AWSおよびサード パーティのデータソース への独自のコネクタを簡 単に作成します。 Model builder 物理システムを仮想的に表 すエンティティを作成し、 それらの間の関係を指定し、 それらを異なるデータソー スに接続して、デジタルツ イングラフを形成します Scene composer 既存の3Dビジュアルモデ ルをデジタルツイングラ フの実際のデータと組み 合わせて、物理環境のイ ンタラクティブな3D ビューを作成します App toolkit エンドユーザーが運用を 監視および改善できるよ うに、Amazon Managed GrafanaやAWS Partners を使用してデジタルツイ ンを3D対応アプリケー ションに統合します
  6. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    IoT SiteWise AWS IoT SiteWise はローカルゲートウェイを使って⼯場からデータを収集し、 そのデータを構造化してラベルを付けると共に、リアルタイムの KPI と メトリクスを⽣成し、データに基づいた意思決定をサポートします アセットモデルで設備や プロセスのデータを構造化し、 メトリクスを計算 リアルタイムの時系列データ をダッシュボードで可視化 アラームを設定して 運⽤チームに通報 設備データを数分でAWSに 取り込む アセットモデルを使って プロセスデータをローカル で処理オンプレミスの ダッシュボードで リアルタイム可視化
  7. © 2022, Amazon Web Services, Inc. or its affiliates. 設備データのモデル化

    アセットモデルとアセットを作成して 設備をモデル化 アセットの階層と関連付けを定義して、 ⽣産施設をモデル化 アセットモデルのプロパティと式ベー スのメトリクスを定義 設備データと計算されたメトリクスを リアルタイムに保存 ASSET MODEL Property: Attribute tool_id : Property: mMasurement pressforce-ch1 : Property: Formula Avg Pressforce : f (pressforce-ch1) STAMPING PRESS ASSET Property: Attribute tool_id : S551438 Property: Measurement pressforce-ch1 : "[55253, 32, 56, 27 …]" Property: Formula Avg Pressforce : f (pressforce-ch1) STAMPING PRESS
  8. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. デモ 9
  9. © 2022, Amazon Web Services, Inc. or its affiliates. デモのアーキテクチャ

    AWS Cloud AWS IoT Core Client Amazon EventBridge AWS Lambda AWS IoT SiteWise AWS IoT TwinMaker Amazon Managed Service for Grafana ダミーデータ送信用 Amazon S3
  10. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. IaC(CDK)で AWS IoT TwinMakerを使った 環境を構築する際の ハマりどころ (ハマった所) 11
  11. © 2022, Amazon Web Services, Inc. or its affiliates. ハマったこと

    1. S3のバケットが複数作られる 2. S3のアセット用バケットにCMKを使おうとしたら、対応してな かった 3. AWS IoT TwinMakerのSceneの構造がわからない 4. CDKのConstructsでは AWS IoT SiteWIseのassetを参考にした、 AWS IoT TwinMakerのentityが簡単に作れない(と思った) 5. Grafanaのダッシュボードがどうしても手動となる 注意) 2022/11/16時点の話であり、今後変わる可能性があります
  12. © 2022, Amazon Web Services, Inc. or its affiliates. コンソールからWorkspaceを作る時はS3のバケットを1つだけ作って

    いるように見えて、実は2つ作っている 1. S3のバケットが複数作られる
  13. © 2022, Amazon Web Services, Inc. or its affiliates. 毎回Sceneに必要な情報

    をS3からDLしている 1. S3のバケットが複数作られる
  14. © 2022, Amazon Web Services, Inc. or its affiliates. 2.

    S3のアセット用バケットにCMK(Customer Master Key) を使おうとしたら、対応してなかった AMGからアクセスする際に指定するPolicyに必要な権限を付与して も対応していない。こちらで紹介されている権限が利用できるもの https://docs.aws.amazon.com/iot-twinmaker/latest/guide/dashboard-IAM-role.html#adding- more-permissions const buildingWorkspaceLogBucket = new Bucket(this, 'WorkspaceBucket', { bucketName: hogehoge-${region}-${accountId}`, encryption: BucketEncryption.S3_MANAGED, versioned: true, enforceSSL: true, blockPublicAccess: BlockPublicAccess.BLOCK_ALL, removalPolicy: RemovalPolicy.RETAIN, });
  15. © 2022, Amazon Web Services, Inc. or its affiliates. 3.

    AWS IoT TwinMakerのSceneの構造がわからない SceneにはまだオフィシャルなL2 constructsが無く、L1を使う必要あ り。 contentLocation にSceneの構造が書かれているJSONファイルが必要 https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_CreateScene.html Scene composerで手動で作成すると、随時S3のバケットに保存され るため、現場はコードで管理するならこのファイルを保存する const sampleScene = new iottwinmaker.CfnScene(this, 'SampleScene', { contentLocation: `s3://hogehoge/scene.json`, sceneId: ‘SampleScene’, workspaceId: sampleWorkspace.workspaceId, });
  16. © 2022, Amazon Web Services, Inc. or its affiliates. 3.

    AWS IoT TwinMakerのSceneの構造がわからない Grafanaで可視化する際 に、tagを選んだら情報 を表示させたいが、tag とentityの紐付けは手動 となる
  17. © 2022, Amazon Web Services, Inc. or its affiliates. 4.

    CDKのConstructsでは AWS IoT SiteWIseのassetを 参考にAWS IoT TwinMakerのentityが簡単に作れない(と思った) AWS IoT TwinMakerでentityを作る最低限の情報 だが、AWS IoT SiteWiseのassetをデータソースにした コンポーネントを作る書き⽅がわからず、試⾏錯誤 const building1Entity = new iottwinmaker.CfnEntity(this, 'Entity', { entityName: hoge’, workspaceId: sampleWorkspace.workspaceId, entityId: hoge_entity', });
  18. © 2022, Amazon Web Services, Inc. or its affiliates. 4.

    コンソールだとなにか複雑な動きをしている いっぱい設定しているように⾒える CLIで設定済みのデータを⾒ても⾊々設定 されている { "arn": "arn:aws:iottwinmaker:us-west-2:1111111:workspace/BuildingSample/entity/Building_En "components": { "BuildingComponent": { "componentName": "BuildingComponent", "componentTypeId": "com.amazon.iotsitewise.connector", "description": "Building Component", "properties": { "NumberOfPeople": { "definition": { "configuration": { "sitewisePropertyId": "126228ab-1ca9-448a-a8e8-d19f9a6ee6c4" }, "dataType": { "type": "DOUBLE" }, "isExternalId": false, "isFinal": false, "isImported": true, "isInherited": false, "isRequiredInEntity": false, "isStoredExternally": true, "isTimeSeries": true } }, このプロパティーってど うやって設定するのか?
  19. © 2022, Amazon Web Services, Inc. or its affiliates. 4.

    CDKを諦めて、Pythonのスクリプトを書いて AWS IoT SiteWiseの構造を取り込んでみた 1. ListAssetsでTOP_LEVELのassetを取得し、 その中から対象を探す 2. ListAssociatedAssets で⼦assetを取得 1. ⼦assetがあれば再帰的に取得 このようにとあるassetを親に持つツリー の構造を取得するには以下のような、処理 が必要
  20. © 2022, Amazon Web Services, Inc. or its affiliates. 4.

    色々と触っているうちに理解が進み、結局CDKで出来た const room101Entity = new iottwinmaker.CfnEntity(this, 'Room101Entity', { entityName: 'Room101’, workspaceId: buildingWorkspace.workspaceId, entityId: 'Room101_Entity’, parentEntityId: floor1Entity.entityId, components: { Room101Component: { componentTypeId: 'com.amazon.iotsitewise.connector’, description: 'Room101Entity Component’, properties: { sitewiseAssetId: { value: { stringValue: assetRoom101.attrAssetId }, }, sitewiseAssetModelId: { value: { stringValue: roomModel.attrAssetModelId }, }, }, }, }, }); room101Entity.addDependsOn(floor1Entity); Asset ModelとAssetを 指定すれば、propertiesは modelに合わせて勝手に 反映される
  21. © 2022, Amazon Web Services, Inc. or its affiliates. 5.

    Grafanaのダッシュボード Amazon Managed Grafana⽤のconstructがないので、コンソール から設定する必要がある。 ⼀度ダッシュボードを作成したら、エクスポートすると設定情報が jsonで取得することができるので、バックアップとして利⽤可能
  22. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. Q/A 23
  23. © 2022, Amazon Web Services, Inc. or its affiliates. Thank

    you! © 2022, Amazon Web Services, Inc. or its affiliates.