Closed1
AWS EFSを削除するPythonスクリプト

Nameタグの値が削除対象のEFSを削除するスクリプトの未完成版
import subprocess
import json
import time
import argparse
helpStr = ''
helpStr += ''
parser = argparse.ArgumentParser(description=helpStr)
parser.add_argument('-n', '--name', required=True)
args = parser.parse_args()
tgtName = args.name
def execmd(cmd):
print("command : {}".format(str(cmd)) )
return subprocess.Popen(cmd, stdout=subprocess.PIPE,shell=True).communicate()[0]
cmd = ("aws efs describe-file-systems")
res = execmd(cmd)
json_res = json.loads(res)
ele = json_res["FileSystems"][0]
eName = ele["Name"]
eFId = ele["FileSystemId"]
cmd = ("aws efs describe-mount-targets --file-system-id {}".format(eFId) )
res = execmd(cmd)
json_res=json.loads(res)
ele = json_res["MountTargets"][0]
mtId = ele["MountTargetId"]
print("EFS Name = {0}\nEFS ID = {1}\nEFS MountId = {2}".format( eName, eFId, mtId ))
if tgtName == eName :
print("Delete MountTargetId")
cmd = ("aws efs delete-mount-target --mount-target-id {}".format( mtId ) )
execmd(cmd)
print("Wait 60sec")
time.sleep(60)
print("Delete EFS")
cmd = ("aws efs delete-file-system --file-system-id {0}".format( eFId ) )
execmd(cmd)
else:
print("not delete")
print("DONE")
スクリプトの実行例
例① 削除対象(fuga)がなかった場合
$ python exe2.py --name fuga
command : aws efs describe-file-systems
command : aws efs describe-mount-targets --file-system-id fs-061fa2bcae73e152e
EFS Name = piyo1
EFS ID = fs-061XXXXXXXXXX
EFS MountId = fsmt-060XXXXXXXXXX
not delete
DONE
例②削除対象(piyo1)があった場合
$ python exe2.py --name piyo1
command : aws efs describe-file-systems
command : aws efs describe-mount-targets --file-system-id fs-061fa2bcae73e152e
EFS Name = piyo1
EFS ID = fs-061XXXXXXXXXX
EFS MountId = fsmt-060XXXXXXXXXX
Delete MountTargetId
command : aws efs delete-mount-target --mount-target-id fsmt-060XXXXXXXXXX
Wait 60sec
Delete EFS
command : aws efs delete-file-system --file-system-id fs-061XXXXXXXXXX
DONE
<未完成スクリプトの残作業>
・aws efs describe-file-systems
で取得した1つ目の情報しか処理していない
→現存する全てのEFSを処理対象にすべき
・aws efs describe-file-systems
の NextMarker
に対応してない→要対応
※https://docs.aws.amazon.com/ja_jp/efs/latest/ug/API_DescribeFileSystems.html
・aws efs describe-mount-targets
で1つのマウントターゲットしか削除しない
→全マウントターゲットを要削除
・マウントターゲットがない場合の処理を追加
・マウントターゲットの削除が完了したかの確認してない
→削除が完了してから次の処理に進むように要改善
このスクラップは2024/05/03にクローズされました
ログインするとコメントできます