Greengrass(V1)のOTAアップデートを実施する
はじめに
今回はGreengrassのOTAアップデートを実施しました。
手順は以下を参考にしています。
参考:AWS IoT Greengrass Core ソフトウェアの OTA 更新
なお、デバイスは以前GreengrassをインストールしたJetson nanoを利用しています。
参考:Greengrass(V1)をクイックスタートでインストールしてみる
1 IAMの設定
OTAアップデートを実施するロールを作成します。
このロールには、アップデート用のソフトウェアをS3から取得するためのポリシーもアタッチします。
1-1 IAMロールの作成
1.IAMのマネジメントコンソールで左のメニューから ロール をクリック
2.「ロールの作成」をクリック
3.「AWSサービス」内のIoT > IoT を選択して「次のステップ:アクセス権限」をクリック
4.次の画面はそのままで「次のステップ:タグ」をクリック
5.次の画面もそのままで「次のステップ:確認」をクリック
6.ロール名に任意の名前を入力して「ロールの作成」をクリック
1-2 IAMポリシーのアタッチ
1.IAMのマネジメントコンソールで左のメニューから ロール をクリック
2.先ほど作成したロールをクリック
3.「ポリシーをアタッチします」をクリック
4.「GreengrassOTAUpdateArtifactAccess」をチェックして「ポリシーのアタッチ」をクリック
5.ポリシーがアタッチされていることを確認する
1-3 備考:信頼ポリシーについて
AWSの公式ドキュメントには以下の記載があります。
ロールにアタッチされた信頼ポリシーは、sts:AssumeRole アクションを許可し、iot.amazonaws.com をプリンシパルとして定義する必要があります。
出典:Requirements > OTA更新のIAMアクセス許可
今回作成したポリシーについては、作成した段階で公式ドキュメントに記載のポリシーが存在したため、追加の作業はしていません。
作成したIAMロールの 信頼関係タブ > 「信頼関係の編集」をクリック で確認できます。
クリックすると以下の通り信頼ポリシーの編集画面に遷移する
※なお、信頼ポリシーの確認については以下の記事が参考になりました。
ポリシーを追加しようとしてエラーが出てしまい、同じくハマりかけました…
参考:lambda@edgeを使おうとしたらroleにハマった
1-4 備考:実行ユーザのポリシーについて
AWSの公式ドキュメントには以下の記載があります。
さらに、OTA 更新を開始するユーザーには、greengrass:CreateSoftwareUpdateJob および iot:CreateJob を使用するアクセス許可と、iam:PassRole を使用して署名者ロールのアクセス許可を渡すアクセス許可が必要です。
出典:Requirements > OTA更新のIAMアクセス許可
今回の以降の手順を実施するにあたっては上記操作は実施せずに完遂しています。
私が利用していたIAMユーザが「AdministratorAccess」ポリシーをアタッチされたグループに所属していることに起因するかと思いますので、そうでない場合は公式ドキュメントの通りの権限付与が必要になるかと思います。
2 OTAアップデートを実施する
GreengrassのOTAアップデートは以下2種類があるので、どちらも実施しました。
- Greengrass Core ソフトウェア
- Greengrass Core OTA エージェントを更新する
2-1 OTAエージェントの起動
更新対象のエッジデバイスでOTAエージェントを先に実行します。
なお、OTAエージェントが複数起動していると競合してエラーになることがあるようです。
競合の原因となる可能性があるため、コア上で OTA 更新エージェント の複数のインスタンスを起動しないでください。
出典:OTA 更新の作成
1.更新対象のデバイス(今回はJetson nano)で以下のコマンドを実施
cd /greengrass/ota/ota_agent
sudo ./ggc-ota
2.エージェントが1つのみ起動していることを確認する
ps aux | grep -E "greengrass.*ota"
root 1647 0.0 0.1 79080 4476 ? Ssl 17:52 0:00 /greengrass/ota/ota_agent_v1.0.0_0/ggc-ota -p 2534
root 14225 0.0 0.0 6696 2280 pts/2 S+ 18:00 0:00 grep --color=auto -E greengrass.ota
2-2 OTAエージェントのアップデート
1.IoT Coreのマネジメントコンソールで左のメニューから 管理 > ジョブ の順にクリック
2.「ジョブを作成する」をクリック
3.「Core更新ジョブの作成」をクリック
4.以下の通り設定して「作成」をクリック
※クリックと同時にジョブが実行されるので注意
- 更新するデバイスの選択:※任意のモノ・モノのグループ(複数選択可)
- S3URL署名者ロール:※作成したIAMロール
- エージェントのログレベルを更新する:※任意のログレベル
- アーキテクチャタイプ:ubuntu/aarch64 ※対象のデバイスのアーキテクチャにあわせる
- 更新するコンポーネント:Greengrass Core OTAエージェントを更新する
5.一覧に作成したジョブが表示されるのでクリック
6.進行状況と成否を確認する
2-3 Greengrass Coreのアップデート
先ほどの「2-2 OTAエージェントのアップデート」と同様の手順です。
1.IoT Coreのマネジメントコンソールで左のメニューから 管理 > ジョブ の順にクリック
2.「作成」をクリック
3.「Core更新ジョブの作成」をクリック
4.以下の通り設定して「作成」をクリック
※クリックと同時にジョブが実行されるので注意
- 更新するデバイスの選択:※任意のモノ・モノのグループ(複数選択可)
- S3URL署名者ロール:※作成したIAMロール
- エージェントのログレベルを更新する:※任意のログレベル
- アーキテクチャタイプ:ubuntu/aarch64 ※対象のデバイスのアーキテクチャにあわせる
- 更新するコンポーネント:Greengrass Coreソフトウェア
5.一覧に作成したジョブが表示されるのでクリック
6.進行状況と成否を確認する
※詳細 をクリックすることで実行内容の詳細を確認することができる
3 備忘録
3-1 アップデートされたことの確認
更新対象のデバイスでプロセスを確認するとバージョン箇所の数字が+1されていることが分かります。
#Greengrass Coreの確認(***/packages/1.11.0_x となっている)
ps aux | grep -E "greengrass.*daemon"
root 28748 0.1 0.5 1083884 22420 ? Sl 18:08 0:00 /greengrass/ggc/packages/1.11.0_1/bin/daemon -core-dir /greengrass/ggc/packages/1.11.0_2 -greengrassdPid 28743
root 29048 0.0 0.0 6696 620 pts/2 S+ 18:13 0:00 grep --color=auto -E greengrass.*daemon
#OTAエージェントの確認(***/ota_agent_1.0.0_x となっている)
ps aux | grep -E "greengrass.*ota"
root 1647 0.0 0.1 79080 4476 ? Ssl 17:52 0:00 /greengrass/ota/ota_agent_v1.0.0_1/ggc-ota -p 2534
root 14225 0.0 0.0 6696 2280 pts/2 S+ 18:00 0:00 grep --color=auto -E greengrass.ota
3-2 アップデート中のLambdaの挙動
OTAアップデートに際してはGreengrass Coreはシャットダウンされ、Core上で実行されているLambdaも終了されます。
その他、アップデートに際しての注意事項は公式ドキュメントを確認した方がいいでしょう。
参考:Considerations
3-3 アップデート後の不具合と解消
今回、「Greengrass Coreソフトウェア」アップデート後にLambdaが実行できなくなりました。
また、デプロイも以下の通り失敗しました。
なお、以下の通りGreengrass Coreを再起動することでLambda、デプロイともに正常に実行できるようになりました。
#greengrassの終了
sudo /greengrass/ggc/core/greengrassd stop
#greengrassの起動
sudo /greengrass/ggc/core/greengrassd start
4 おわりに
マネジメントコンソールから簡単にOTAアップデートを実施することが出来ました。
グループ化してまとめて実行できるのは便利だと思います。
ただ、「3-3 アップデート後の不具合と解消」のようにGreengrassの再起動が必要になるのは手間でした。
解消法があれば教えていただけるとありがたいです。
Author And Source
この問題について(Greengrass(V1)のOTAアップデートを実施する), 我々は、より多くの情報をここで見つけました https://qiita.com/kt-yt/items/b4ceaca58757c5bab225著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .