(используя aws -sdk) Как найти общий размер папки, хранящейся в amazon s3 - PullRequest
1 голос
/ 04 марта 2020

Я хотел узнать общий размер папки, хранящейся в S3, используя AWS -SDK .

Примечание: -

Я не хочу использовать какую-либо команду или консоль AWS, чтобы найти размер моей папки. Я хотел сделать это с помощью aws -sdk и я упомянул об этом выше, поэтому, пожалуйста, не помечайте это как дубликат.

до сих пор, что я нашел в inte rnet, чтобы перечислить все объекты папки и итерацию, бросить его, и я сделай это и все работает нормально. Вот мой код: -

import AWS from 'aws-sdk';

AWS.config.region = "BUCKET_REGION";
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId: "COGNITO_ID",
});
let bucketName = "BUCKET_NAME"
let bucket = new AWS.S3({
                params: {
                    Bucket: bucketName
                }
             });

 bucket.listObjects({Prefix:"FOLDER_NAME",Bucket:"BUCKET_NAME"}, function (err, data) {
        if (err) {
           console.log(err)                        
        } else {
           console.log(data)
           //data returns the array throw which I iterate and find the total size of the object
        }
  });

, но проблема в том, что в моей папке содержится так много объектов, что затрудняется итерация каждого из элементов в списке , Требуется много времени, чтобы просто рассчитать размер папки.

, поэтому мне нужен лучший способ рассчитать размер папки, и все, что я нашел, это команда

aws s3 ls s3: // myBucket / level1 / level2 / - рекурсивный awk 'BEGIN {FS = ""} / Total Size / {print $ 3}'

Есть ли какой-нибудь способ, которым я могу сделать вышеупомянутый процесс, бросить мой aws -sdk .

любая помощь приветствуется. заранее спасибо

1 Ответ

0 голосов
/ 05 марта 2020

Похоже, ваша ситуация такова:

  • Вы хотите знать размер корзины Amazon S3 на регулярной основе
  • Корзина содержит большое количество объектов, которые занимает слишком много времени

Вместо перечисления объектов и расчета размеров я бы порекомендовал два варианта:

Amazon S3 Inventory

Amazon S3 Inventory может предоставить ежедневный CSV-файл с подробной информацией обо всех объектах в корзине. Затем вы можете взять эти данные и вычислить общее количество.

Метрики корзины Amazon CloudWatch

В Amazon CloudWatch есть несколько метрик, связанных с корзинами Amazon S3:

  • BucketSizeBytes
  • NumberOfObjects

Я не уверен, как часто обновляются эти метрики (они не мгновенные), но BucketSizeBytes похоже, что быть идеальным для вас.

Если все остальное не помогло ...

Если два вышеуказанных варианта не соответствуют вашим потребностям (например, вам нужно знать метрики) now "), оставшаяся опция будет поддерживать вашу собственную базу данных объектов . База данных должна будет обновляться всякий раз, когда объект добавляется или удаляется из корзины (что можно сделать с помощью событий Amazon S3 для запуска функции AWS Lambda). Затем вы можете обратиться к своей собственной базе данных, чтобы получить информацию достаточно быстро.

...