1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

多階層フォルダ構成の AWS MediaStore のファイルを全部消す方法

Posted at

はじめに

アカウント削除の前にMediastoreのファイルを全削除する必要があり
AWS MediaStore のファイルを全部消す方法 を見つけてためしたところ、 A/B/C/media みたいな階層をもった構造だと削除できませんでした。ということでスクリプト書いたので共有します。

スクリプト

msdelete.py

#!/usr/bin/env python3

import boto3

ms = boto3.client('mediastore')
msd = boto3.client('mediastore-data')

def in_folder(path):
    print(path)
    items = msd.list_items(Path=path)
    for item in items['Items']:
        if item['Type'] == 'FOLDER' :
            in_folder(path+'/'+item['Name'] )
        elif item['Type'] == 'OBJECT' :
            print("delete object ", path+'/'+item['Name'])
            msd.delete_object(Path=path+'/'+item['Name'])
        else :
            print("Unknown", item) 


containers = ms.list_containers()

for container in containers['Containers']:
    msd = boto3.client('mediastore-data',endpoint_url=container['Endpoint'])
    in_folder('')

使いかた

以下環境変数を設定してください。

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_DEFAULT_REGION

またboto3をpip3でインストールしておいてください。

実行は

python3 msdelete.py

要改善点

  • 全部のコンテナ消します。特定のコンテナ消す場合はコード変更してもらえれば。
  • ページネーションに対応していないので、大量のファイルの場合は削除できないかもしれません。
  • 再帰つかってますがあまりにフォルダ構成が深いと死ぬかもしれません。

知見

  • 今回フォルダ消してないのですが、オブジェクトを消すとフォルダもきえました。S3とおなじような構成なのでしょうか。
  • boto3.clientの引数としてendpoint_urlを指定するってところに気づくまでに2時間無駄にしました。少し賢くなった。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?