2024/1/16でのJob削除方法
rootユーザーでログインしてCanceled状態のJobをforce選択してdeleteしてもPermissionがないと言われて画面から消えませんでした。 以前の方法でCouldShellを使ったり、Greengrassコアデバイス上からaws cliを使って削除を試みましたが、アカウントがWhitelistに登録されていないというエラーメッセージが返ってきました。 しかし、rootユーザーでログインして、forceでdeleteしたjobは翌日削除されていました。 2021/4の方法は当時awsの技術者に対応して貰った方法なので、実行後すぐ画面から消えていましたが、それから色々機能が増え複雑になって、現状ではもしかしたら、バグでJobはすぐ消えなくなっているのかもしれません。 または、これらのJobはThing Groupに対してDeployしているので、削除まで一定の時間がかかるのかもしれません。 それにしてもrootユーザーなのでPermission deniedは明らかにおかしいと思います。
IAMユーザーでJobを削除したり、Core Deviceのaws cliでJobを削除するには、iot:DeleteJobを付加したポリシーをIAMユーザーはThingにAttachしなければなりません。
![](https://ichiri.biz/tech/wp-content/uploads/2024/01/image-8-1024x794.png)
2021/4/2でのJob削除方法
CloudshellかCLIがデプロイされたローカル環境で新しくUpdateされたコマンドを実行したらgreengrass V2でThing GroupにデプロイされたJobを削除できるようになりました。 簡単なのは実行は無料のCloudshell。(April 2, 2021)
job-id取得
- IoT Coreのページに移動
- 右のメニューにあるJobsを選択
- DeleteしたいJobを選択(canceledの状態になっていないと削除できません。)
- job-id (Job ID)が表示される。
- 2024/1/16では、メニューも大きく変わり『Manage』の下の『Remote actions』の下に『Jobs』があります。
![](https://ichiri.biz/tech/wp-content/uploads/2021/04/image-5-1024x607.png)
namespace-id取得
- Cloudshellのページに行き、プロンプトが自動的に立ち上がるので、立ち上がるまで待つ。
- プロンプトが立ち上がったら、下の図の1行目の様に、aws iot describe-job –job-id xxxxxxxxxxxxxを入力。 xxxxxxxxxxxxxは先ほどのjob-idに置き換えてください。
- すると、下の図の一番下の赤線の様に、namespace-id(namespaceId)が現れます。(新機能、April 2, 2021時点でまだ英語のdocumentにも記載されていません。)
![](https://ichiri.biz/tech/wp-content/uploads/2021/04/image-1.png)
delete-jobでJob削除
Cloudshellでjob-idとnamespace-idを指定して、aws iot delete-job –job-id xxxxxxxx –namespace-id zzzzzzzzを実行。 xxxxxxxxとzzzzzzzzはそれぞれ上のステップで見つけた、job-idとnamespace-idで置き換えてください。
![](https://ichiri.biz/tech/wp-content/uploads/2021/04/image-3.png)
これで削除完了。
削除したJobの画面表示に反映のタイミング
削除をした直後は、削除を実行したJobがJob一覧表示の左上に移動し、『削除プロセス中』の様な表示になります。 (Job一覧はF5で更新しないと、削除等のアクションが更新されません。) 私の場合、完全に削除され、Job一覧から消えたのは、1分弱かかりました。
おまけ
Job一覧からアクションでdelete(削除)やforce delete(強制削除)が選択できますが、greengrassに属するjobはdeleteを選択出来るにも関わらずdeleteできない事が分かりました。 将来的には削除できるようになるとの事ですが、greengrassを使ってThing Groupにコンポーネントをデバッグの為、何度もデプロイすると思います。 そのデプロイの度にJobが生成されます。 そしてそのThing GroupにThingが10,000個など多くあると、10,000個全てに対してIoT Device Managementアクション料金が課金されます。 しかも残っている過去のcanceled状態のJobも全て更新され、IoTDeviceManagementのremote actionとしてカウントされるので、過去に200回デバッグの為デプロイしていたら、毎回200×10,000となり、200万回分のremote actionとなります。 デバッグ回数も多くなる可能性もあるし、デバイス数ももっと多い事もあるかもしれません。 なので、削除して管理上もすっきりさせたいですね。
因みに、本機能はawsのconsole(GUI画面)から出来るように現在実装中だそうです。 namespace-idはjobsのdetails(詳細)で将来見えるようになるようです。 deleteもconsoleで出来るようになるようです。 時期は不明です。
コメント