[AWS IoT TwinMaker] AWS IoT SiteWise connector を削除しようとすると、ステータス “SYNC DELETING ERROR” となり削除できない場合の対処
こんにちは、CX事業本部 Delivery部の若槻です。
以前に下記エントリで、AWS IoT TwinMaker の AWS IoT SiteWise asset sync を構成してみました。
今回は、その時構成した AWS IoT SiteWise connector を削除しようとすると、エラーとなり削除できなくなったので対処した話です。
事象
TwinMaker のコンソールから connector を Disconnect workspace により削除しようとすると、ステータス SYNC DELETING ERROR
となり削除できない事象に遭遇しました。
調査、解決
コネクターを連携しているワークスペースの Source を見ると、こちらでもエラーステータスが示されています。Source を開いてみます。
すると詳細なエラーを確認することができました。
ワークスペースのサービスロール twinmaker-workspace-windfarm-XXXXXXXXXXXX-iad
で syncJob の削除に必要な権限が不足しているとのことです。
An error occurred when cleaning up entity for deleting syncJob: not authorized to perform sts:AssumeRole. Please update trust policy to trust TwinMaker service for arn:aws:iam::XXXXXXXXXXXX:role/service-role/twinmaker-workspace-windfarm-XXXXXXXXXXXX-iad. Please see role example in https://docs.aws.amazon.com/iot-twinmaker/latest/guide/tm-sw-asset-sync-use.html.
必要な権限は下記で確認できます。
// 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": "*" } ] }
しかし該当のサービスロールの権限を確認しようとしたところ、そもそもロール自体が存在していませんでした。何らかの拍子に削除してしまっていたようです。
必要な権限を付与したロールを作成します。
再度削除を試みます。
するとまた同じエラーで削除に失敗しました。
ここでエラーメッセージを再度確認すると、権限が不足しているサービスロールのパスは /service-role/
であると示されていることに気が付きました。
下記を参考にサービスロールを作成し直します。
aws iam create-role \ --role-name twinmaker-workspace-windfarm-XXXXXXXXXXXX-iad \ --path /service-role/ \ --assume-role-policy-document file://trust.json
作成できました。/service-role/
が ARN には付いて、ロール名には付かなり形式となるんですね。
再度削除を試みます。
すると今度は別のエラーが発生しました。
An error occurred when cleaning up entity for deleting syncJob: User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/twinmaker-workspace-windfarm-XXXXXXXXXXXX-iad/AWSIoTTwinMaker is not authorized to perform: iottwinmaker:GetEntity on resource: arn:aws:iottwinmaker:us-east-1:XXXXXXXXXXXX:workspace/Windfarm/entity/0681a274-30d2-4a08-9a78-79227272b88c because no identity-based policy allows the iottwinmaker:GetEntity action. Please see role example in https://docs.aws.amazon.com/iot-twinmaker/latest/guide/tm-sw-asset-sync-use.html.
すでに存在しないエンティティ 0681a274-30d2-4a08-9a78-79227272b88c
を削除しようとしてエラーとなっているようです。このエンティティは syncJob により作成されたエンティティでしたが、SiteWise 側で削除済みであるため、なぜまた削除しようとしているのかは不明です。
とここで、先程作成したサービスロールにこちらで示されている権限ポリシーをアタッチできていませんでした。
ロールにポリシーをアタッチします。
すると今度こそ削除することができました。
おわりに
AWS IoT SiteWise connector を削除しようとすると、エラーとなり削除できなくなったので対処した話でした。
適切な IAM ロールおよびポリシーが付与されていないという、とても初歩的な見落としによりハマってしまいました。Lambda 関数などと同様にサービスロールの概念が IoT TwinMaker にもあるという意識が抜け落ちていました。本件の解決のため AWS への問い合わせまで行ってしまったため、反省しきりです。
以上