Zenn
Closed1

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

suosuo

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-systemsNextMarker に対応してない→要対応
 ※https://docs.aws.amazon.com/ja_jp/efs/latest/ug/API_DescribeFileSystems.html
aws efs describe-mount-targetsで1つのマウントターゲットしか削除しない
 →全マウントターゲットを要削除
・マウントターゲットがない場合の処理を追加
・マウントターゲットの削除が完了したかの確認してない
 →削除が完了してから次の処理に進むように要改善

このスクラップは2024/05/03にクローズされました
ログインするとコメントできます