[AWS IoT TwinMaker] AWS IoT SiteWiseのアセットを自動で同期できるようになりました

2022.12.28

こんにちは、CX事業本部 IoT事業部の若槻です。

先日(12/8)のAWS IoT TwinMakerアップデートで、AWS IoT SiteWiseのassetをTwinMaker workspaceにentityとして自動同期できるようになりました。

これにより、SiteWise側でassetを作成した際に、TwinMaker側に逐一手動で対応するentityを作成する作業が不要となります。

やってみた

AWS IoT TwinMaker workspeceとAWS IoT SiteWise asset modelは、下記で作成済みのものを使用しました。

AWS IoT SiteWiseとのasset同期を有効化する

AWS IoT SiteWiseにはassetWindmill001が作成済みです。

AWS IoT TwinMaker Settings コンソールにアクセスし、[Model Sources]タブで[Connect workspace]をクリック。

AWS IoT SiteWiseと接続したいworkspaceを選択し、[Go to workspace]をクリック。

AWS IoT TwinMaker workspaceに接続するソースとしてAWS IoT SiteWiseを指定し、接続に使用するIAM Roleとして次のpermissonが付与されたroleを指定して、[Add Srouce]をクリック。

// trust relationships
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                 "Service": [
                    "iottwinmaker.amazonaws.com",
                    "iotsitewise.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

// permissions
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iottwinmaker:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotsitewise:Describe*",
                "iotsitewise:List*"
            ],
            "Resource": "*"
        }
    ]
}

これでWindfarm workspaceにAWS IoT SiteWiseをソースとするentity model sourceを追加できました。追加直後なので[Status]がCREATINGとなっています。

1分ほど待つとINITIALIZINGに変わりました。

さらに待つとentity model sourceのStatusがACTIVEとなりました。

entity一覧を見ると、SiteWiseに作成されていたassetが自動同期で作成されました。

entity model source作成後に、SiteWiseに2つ目のassetを追加で作成してみます。

すると2つ目のassetのentityも自動で作成されました。

逆にSiteWiseでassetを削除した場合はどうでしょう。

削除も問題なく同期されました。

注意点

IAM Roleの権限が不足している場合はエラーとなる

作成したentity model sourceのStatusがINITIALIZINGからなかなか変わらなかったため、詳細を見るとエラーとなっていました。

Status reason

{
  "code": "ERROR",
  "message": "An error occurred when creating componentType: User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/twinmaker-workspace-windfarm-XXXXXXXXXXXX-iad/AWSIoTTwinMaker is not authorized to perform: iottwinmaker:CreateComponentType on resource: arn:aws:iottwinmaker:us-east-1:XXXXXXXXXXXX:workspace/Windfarm because no identity-based policy allows the iottwinmaker:CreateComponentType action"
}

この時の原因はIAM Roleのpermissionで次の権限の記述が漏れていたためでした。

        {
            "Effect": "Allow",
            "Action": "iottwinmaker:*",
            "Resource": "*"
        },

AWS IoT TwinMaker Settings コンソールに戻り、[Model Sources]タブで[Disconnect workspace]をクリック。

[Disconnect]をクリック。

しばらく待つと[Connector status]がDISABLEDとなるので、permissionを修正したIAM Roleを使用してentity model sourceを再作成します。

同じ名前のEntityが作成済みの場合もエラーとなる

同じ名前のentityがworkspaceにすでに作成済みの場合も、entity model sourceの接続がエラーとなりました。

Status reason

{
  "code":"ERROR",
  "message":"An error occurred when creating entity: Entity with name Windmill001 already exists under entity $ROOT in workspace Windfarm."
}

workspaceから重複しているentityを削除します。

削除後にしばらく待つとentity model sourceのStatusがACTIVEとなりました。

また重複エラーとなっていたentityが自動同期で改めて作成されました。

すでに手動作成されたSiteWiseのassetがentityとして作成済みの場合は、entityを一度削除する必要があるようなので要注意ですね。

現状では1つのworkspaceにしかentity model sourceを追加できない

現状では1つのworkspaceにしかentity model sourceを追加できないようです。

しかしこれでは複数のworkspaceを管理している場合に困ってしまうので、今後のアップデートで複数追加できるように改善されるかと思います。

おわりに

AWS IoT TwinMakerで、AWS IoT SiteWiseのアセットを自動で同期できるようになったというアップデートでした。

SiteWiseで管理するassetに対応する産業設備などが頻繁に増減する場合などにメンテが楽になって便利ですね。

以上