【fly.io】間違えて作成してしまったボリュームを削除する方法
本来fly volume create [ストレージ名] --size 1
と実行して1GBのボリュームを複数作成するべきだったが、sizeオプションをつけずにfly volume create [ストレージ名]
で無料枠を超える3GBのボリュームを2個生成してしまったのでその対応を残しておく。
- マシンがボリュームに接続されているか否かで対応が異なる
- マシンにまだ接続していないボリュームを削除する方法
- マシンに接続済みのボリュームを削除する方法
- 無料枠を超えても使用していなければ課金されないっぽい?
- 参考
マシンがボリュームに接続されているか否かで対応が異なる
まずは、削除したいボリュームがマシンに接続されていないか確認しましょう。 ボリュームがマシンに接続されているかいないかで、ボリュームを削除する方法が少し異なります。
それでは確認していきましょう。ターミナルにfly volumes list
というコマンドを打ちます。
下記のような情報が出てきます。
> fly volumes list ID STATE NAME SIZE REGION ZONE ENCRYPTED ATTACHED VM CREATED AT #詳細は記載できないため省略します
削除したいボリュームの「ATTACHED VM」カラムを確認します。もし、そこにマシンIDが入っていなければそのボリュームはマシンに接続されていません。ATTACHED VMにマシンIDが入っていれば、そのボリュームはマシンに接続されています。
接続されていない場合は「マシンにまだ接続していないボリュームを削除する方法」の手順を確認してください。 接続されている場合は「マシンに接続済みのボリュームを削除する方法」の手順に沿って作業を進めてください。
マシンにまだ接続していないボリュームを削除する方法
①削除したいボリュームIDを確認
fly volumes list
というコマンドを打ちます。
> fly volumes list ID STATE NAME SIZE REGION ZONE ENCRYPTED ATTACHED VM CREATED AT #一番左の「ID」欄を確認
削除したいボリュームの「ID」欄(一番先頭のカラム)を確認します。
②ボリュームを削除
上記で確認したボリュームIDを引数に指定してボリュームの削除コマンドを打ちます。その後、本当に消していいか聞かれるので「Yes」を入力します。
> fly volumes delete [上記で確認したボリュームID] ? Are you sure you want to destroy this volume? Yes Destroyed volume [ボリュームID] from [あなたのアプリ名]
もしここで、Error: failed destroying volume: This volume is attached to a machine(マシンID) and cannot be deleted.
というエラーが出た場合はそのボリュームはマシンに接続されています。マシンが接続されている状態ではボリュームを削除することはできません。先に、接続されているマシンの方を削除する必要があります。
マシンに接続済みのボリュームを削除する方法
マシンに接続されてしまったボリュームは削除できないので、マシンの方を削除してからボリュームを削除する手順を踏まないといけません。
①マシンを削除
1. 削除したいボリュームと接続されているマシンIDを確認
fly volumes list
コマンドで削除したいボリュームと接続されているマシンのIDを確認します。
> fly volumes list ID STATE NAME SIZE REGION ZONE ENCRYPTED ATTACHED VM CREATED AT #「ATTACHED VM」欄に記載されているマシンIDを確認
2. マシンが停止しているか確認
> fly status App # 省略 Machines PROCESS ID VERSION REGION STATE CHECKS LAST UPDATED # 「STATE」欄がstoppedになっているか確認
もしstoppedになっていなければ、1の手順で確認したマシンIDを引数に取って下記のコマンドを打ちましょう。
> fly machine stop [1で確認したマシンID]
3. マシンを削除
1の手順で確認したマシンIDを引数に取ってマシンの削除コマンドを打ちます。
> fly machine destroy [1で確認したマシンID] machine [マシンID] was found and is currently in stopped state, attempting to destroy... [マシンID] has been destroyed
これでマシンの削除が完了しました。 ちなみに、マシンを削除したらそれに接続されているボリュームも一緒に削除されるというわけではありません。 ボリュームの削除は別で作業する必要があります。
②ボリュームを削除
それでは、本命のボリュームを削除する作業に入ります。
1. ボリュームIDを確認
この状態でボリュームを確認してみましょう。「ATTACHED VM」が空欄になっているはずです。
> fly volumes list ID STATE NAME SIZE REGION ZONE ENCRYPTED ATTACHED VM CREATED AT # 削除したマシンが消え、「ATTACHED VM」が空欄になっているはず
空欄になっていればボリュームとマシンの接続が解除されています。
ここで、削除したいボリュームのIDをコピペしておきましょう。
ボリュームIDはfly volumes list
で確認できる一番左側にあるやつです。
2. ボリュームを削除
1の手順で確認したボリュームIDを引数にとってfly volumes delete
コマンドを実行しましょう。
> fly volumes delete [1の手順で確認したボリュームID] ? Are you sure you want to destroy this volume? Yes Destroyed volume [ボリュームID] from [あなたのアプリ名]
これでボリュームが削除されました。おつかれさまでした!
無料枠を超えても使用していなければ課金されないっぽい?
私の場合、3GBのボリュームを2個作成してしまい持っていた2台のVM両方とも接続されてしまうという状態になりました。無料枠は3GBまでなので焦った焦った...。急いでVMは2台とも削除、ボリュームも2個全て削除し、マシンもボリュームも何もない状態にしました。幸い、課金はされませんでした。使った分だけ課金されるみたいなことが公式に書いてあったので、大丈夫だったのかもです。