SiteWise Edge ゲートウェイのデータ処理パックのアップデートと失敗時の対処方法

2024.06.06

今回、利用中の SiteWise Edge ゲートウェイのパッケージをアップデートする機会がありました。成功した場合と失敗した場合があったので、それぞれご紹介したいと思います。

SiteWise データ収集パックの種類

SiteWise の「パック」には以下の 2 種類があります。このうち今回は「データ収集パック」を更新してみました。

パック名 該当する Greengrass コンポーネント
データ収集パック - aws.iot.SiteWiseEdgeCollectorOpcua
- aws.iot.SiteWiseEdgePublisher
データ処理パック aws.iot.SiteWiseEdgeProcessor

SiteWise 側からアップデートする方法

更新前のゲートウェイのパックに更新できるアップデートがあると、ゲートウェイの「Updates」タブに更新の数が表示されます。
この画像では「2」と表示されており、下記 2 つがアップデート可能だと分かります。

  • OPC-UA collector 2.4.0
  • Publisher 3.0.0

00-update-available-packages

プルダウンから現在デプロイされているバージョンと、更新可能なバージョンがリストされるのでバージョンを指定します。

03-select-deploy-version

最初に OPC-UA collector から更新します。(決まった順番はありません)
Version 2.4.0 を選択しました。

04-deploy-new-version-for-collector

Deploy をクリックすると再度確認されるので、そのまま Deploy をクリックして処理を進めます。

05-deploy-ack

Greengrass デバイスのログ(greengrass.log)でも、Version 2.4.0 をデプロイ出来ていることが分かります。

06-greengrass-log-deploy-queue

07-deployed-2-4-0

OPC-UA collector 2.4.0 をインストールしたので、Update の数が「2→1」となり、利用可能なパックも Publisher の表示のみに変わっています。

08-deployed-new-version

SiteWise Edge ゲートウェイの「パック」は AWS IoT Greengrass のコンポーネントとして提供されています。そのため、Greengrass のマネージメントコンソールからインストールしたパックを確認できます。

下記の画面は、Greengrass のコアデバイスの詳細画面です。Deployments からデプロイ済みのコンポーネント一覧を開きます。

09-deployment-greengrass-component

直近のデプロイの詳細画面を開くと、aws,iot.SiteWiseEdgeCollectorOpcua というコンポーネントが表示されています。Version は先程更新した 2.4.0 になっていますね。

10-sw-collector-component-version-2-4-0

パックのアップデートが失敗する場合

先ほどと同じ手順で、Publisher もアップデート使用したところ、何度実行してもアップデートが失敗してしまう現象に遭遇しました。

マネジメントコンソール上では、失敗したことは分かっても解決方法は分かりません。
試しに低いバージョンにダウングレードを試してもダウングレードもできず、SiteWise サービス側からはどうすることもできなくなってしまいました…

下記に SiteWise Edge ゲートウェイのトラブルシューティングが公開されていますが、ヒントになりそうなものは見当たりませんでした。

SIteWise のパックは Greengrass コンポーネントなので、デバイス上で Greengrass のコンポーネントログを確認すると以下のようなメッセージが記録されていました。(抜粋)

GreengrassRepositoryDownloader: Artifact appears to exist on disk, but the digest on disk does not match the digest in the recipe. Will attempt to download it again..

GreengrassRepositoryDownloader: download-artifact. task failed and will be retried.

ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.

今回の作業では、手動で直接デバイス上のコンポーネントに変更を加えるようなことはしておらず、SiteWise ゲートウェイのインストールも AWS 側で自動生成されたインストーラーを使ったので、上記のメッセージに心当たりがありません。

下記に Greengrass コンポーネントのデプロイエラーの詳細が紹介されていますが、こちらに該当するものも特にありませんでした。

近い意味のエラーでは ARTIFACT_CHECKSUM_MISMATCH が似ていますが、対象のコンポーネントは AWS 側が管理するもので、ユーザー側ではコンポーネントに対して何らかの変更を加えることはできません。

可能性として考えられる原因を推測するならば、可能性の一つとして SiteWIse 側から呼び出すコンポーネントの指定が最新のものをポイントしておらず、Greengrass の機構でデプロイしようとして失敗しているのかも知れません。
(最終的になんとかできた結果からの推測に過ぎませんが…)

Greengrass コンポーネントの再デプロイで対処する

先程、SiteWise Edge ゲートウェイのパックは Greengrass コンポーネントとして提供されると紹介しました。そこで今回は SiteWise 側からではなく Greengrass コンポーネントの再デプロイで対応することにしました。

再デプロイするコンポーネントは aws.iot.SiteWiseEdgePublisher です。Greengrass 側から該当コンポーネントを削除して、再度デプロイし直します。

コンポーネントの削除方法は下記のエントリを御覧ください。
削除方法はコンポーネントのデプロイとほぼ同じです。デプロイ作業において既存コンポーネントの一覧からチェックを外すことで削除される仕組みになっています。

Greengrass コンポーネントの削除が完了すると、SiteWise ゲートウェイの画面は下記のように変わります。
(下記の画面ショットでは、コレクターも削除してしまったので両方とも「インストールされていません」と表示されています)

100-delete-component-from-greengrass-component

この状態で、先ほど削除した以下のコンポーネントを再度デプロイします。デプロイ方法は他のコンポーネントのデプロイ方法と変わりません。

  • aws.iot.SiteWiseEdgePublisher

ログ(greengrass.log)にデプロイが成功したメッセージが確認できれば OK です。

11-publisher-3-0-0-queue

12-succeeded-deployment-publisher

Greengrass デバイスのデプロイ済みコンポーネント一覧の画面で、aws.iot.SiteWiseEdgePublisher の バージョンが 3.0.0 に変わりました。

14-deployment-new-version-publisher-3-0-0

SiteWise 側のコンソール画面からも Update 可能な表示がなくなりました。

15-no-updates

注意点

コンポーネントの再デプロイを行っている間は、データ取り込みができません。本番稼働している際は計画的に実施してください。

最後に

今回紹介したアップデート失敗時の対処方法は、あくまでも対応の一例です。
アップデートに失敗する要因は他にも様々なケースがあるので、先に紹介したドキュメントなども参考にケースに応じた対応を検討してみてください。

以上です。