AWS IoT Greengrassの「デプロイ」が削除できるようになってました
AWS IoT Greengrass のデプロイとは?
今回は小ネタです。AWS IoT Greengrass は 2 つのバージョンがサービスとして提供されていて、現在主流なのは「Greengrass V2」と呼ばれるバージョンです。
Greengrass V2 ではデバイス上で動くアプリケーションを「コンポーネント」という単位でビルドしデバイスにデプロイします。この「デプロイ」には、デプロイ対象のデバイスやコンポーネントのバージョン、デプロイ済みのコンポーネントのリストなどの各種情報が管理されます。
そのため、継続的に同じデバイスまたはデバイスグループに対して、コンポーネントを更新したり設定を変更する際は、同じ「デプロイ」を使って作業を行います。
これまでのデプロイ
ここからが本題ですが、以前は「デプロイ」は新規に作成できても 削除することができませんでした。
(以前といっても Greengrass を利用し始めた 3 年ほど前なのですが…)
すでにデバイス自体が撤去され使わなくなった「デプロイ」があっても、消す手段が提供されておらず不要なものが残り続けてしまう状況でした。
このように利用していない数年前の「デプロイ」も残り続けていました…
以前からリビジョンは削除できましたが、リビジョンをすべて削除しても「デプロイ」自体は削除できませんでした。
re:Post にも同様の質問があるので、確かに以前は「デプロイ」を削除できませんでした。
私も Greengrass V2 を使い始めた当時に「デプロイは削除できない」と認識しており、その後も削除を試みることがありませんでした。
しかし現在は DeleteDeployment
という API で削除できるようになっています。
これは非常に嬉しい機能です。
AWS CLI からデプロイを削除する
API があるので AWS CLI にも同機能のコマンド(delete-deployment
)があります。
デプロイを削除するには、対象の「デプロイ ID」を指定する必要があります。
「デプロイ ID」はマネジメントコンソールでは確認できないので、AWS CLI で確認します。
マネジメントコンソール上では、デプロイ時のジョブ ID が掲載されていますが、これはデプロイ ID ではありません。
次のコマンドは特定のデプロイに対するデプロイ ID を抽出します。[YOUR_DEPLOYMENT_NAME]
に ID を確認したいデプロイ名を指定して実行します。
$ aws greengrassv2 list-deployments \
--query "deployments[?deploymentName=='[YOUR_DEPLOYMENT_NAME]'].deploymentId" \
--output text
出力は次のようになります。
878ed9fa-xxxx-xxxx-xxxx-xxxxxxxxxxxx
この デプロイ ID を delete-deployment
コマンドの引数に指定します。
aws greengrassv2 delete-deployment \
--deployment-id 878ed9fa-xxxx-xxxx-xxxx-xxxxxxxxxxxx
コマンドを実行すると 複数のリビジョンもまとめて削除されます。
マネジメントコンソールから削除する
マネジメントコンソール上ではデプロイ自体を直接削除できないので、削除したいコンポーネントのリビジョンをすべて削除すればデプロイを削除できます。
注意点として、リビジョンを削除するときは「デプロイをキャンセル」する必要があります。
あとはひたすらリビジョンを一つずつ削除します。
リビジョンが大量にあると手作業でやるのは現実的ではないので、AWS CLI を使う方が楽ですね。
デプロイを削除する際の注意点
デプロイを削除すると削除したデプロイの内容を確認できません。(当然ですが…)
日々の運用でデプロイ内容を JSON などに出力してバックアップしていない限り、もし作業ミスで削除してしまうと元の構成でデプロイを復元できません。
(どのコンポーネントをデプロイしたか、どのバージョンのものをデプロイしたか、などを覚えていれば復元できる可能性はありますが…)
安全に運用するなら、該当デプロイのターゲットデバイスがすべて利用されていない(初期化されても問題ない)状態のものだけを削除するのが望ましいでしょう。
最後に
ずっと使ってないデプロイが残り続けるのが気になっていたので、削除できるようになっていたのは嬉しい発見でした。
同じ悩みを持たれている方がいらっしゃれば、ぜひ試してみてください。
以上です。
IoT 導入支援 / 相談会の紹介
クラスメソッドでは、AWS を中心とした IoT 導入においてエッジからクラウドまでトータルでサポートしています。
このようなお困りごとがあれば、お気軽にお問い合わせください。
- ローカルでデータ収集と可視化はできたが、クラウドで可視化する適切な構成が分からない
- 集めたデータを使って故障予知などに使いたい
- 工場設備からデータ収集してクラウドに送る方法が分からない
- スマートファクトリー化を検討しているが何から着手していいか分からない
- デバイスで動くアプリケーションの開発を AWS で効率化したい
- エッジデバイスのセキュリティが心配だ
- その他、お困り事があれば何でもご相談ください