LoginSignup
2
4

More than 5 years have passed since last update.

JavaScriptでAmazon S3のディレクトリを空にするスクリプトを書いた(1000アイテムまで)

Posted at

厳密にはディレクトリではないのですが、この書き方のほうがイメージ伝わるだろうということで便宜上「ディレクトリ」と称します。

バケット内に/BUCKET_NAME/DIR_NAME/index.htmlみたいな形でファイルを設置すること、よくありますよね。

少ないファイルであれば都度スクリプトや管理画面から指定して消せばいいのですが、StaticPressや絡新婦などのような別のプログラムからガンガンファイルを送ってこられるパターンだとどちらもかなりしんどいところがあります。

ということでJSでDIR_NAMEディレクトリの中身ををまるごと削除するスクリプトです。

var aws = require('aws-sdk');
aws.config.update({
    region:'us-east-1'
});
var s3 = new aws.S3({apiVersion: '2006-03-01'});

var bucket = 'YOUR_BUCKET_NAME';
var prefix = 'DIR_NAME';

var params = {
  Bucket: bucket,
  Prefix: prefix
};
s3.listObjectsV2(params).promise().then(
    function(data){
        console.log(data.Contents.length)
        var deleteList = []
        for (var i = 0; i < data.Contents.length; i++) {
            var deleteSite = {
                Key: data.Contents[i].Key
            }
            deleteList.push(deleteSite)
        }
        var params = {
          Bucket: bucket,
          Delete: {
            Objects: deleteList
          }
        };
        return s3.deleteObjects(params).promise()
    }
).then(
    function(data){
        console.log(data);
    }
).catch(
    function(err){
        console.log(err);
    }
)

利用上の注意

ListObjectsV2で一度に取れるファイル数が1000件までです。
ですので1001件目以降については、もう一度このスクリプトを実行してもらわないと削除できないのでご注意ください。

そのうち1001件以降のファイルについても、まとめて消していけるスクリプトも紹介します。

2
4
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
2
4