Есть ли способ получить статистику использования S3 (например, использованное пространство), используя aws-sdk (узел)? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить общий размер, который я использую для своей корзины S3 программно.

Я изучил методы AWS-SDK для взаимодействия с корзинами S3, но ни одна из них не позволяет нам выбирать пространствостатистика использования.Я не уверен, что API-функции cloudwatch могут быть использованы для достижения этой цели.

Редактировать: пробовал использовать направление Джона для перевода в узел SDK Я использую:

var params = {
    EndTime: new Date(), /* required */
    MetricName: 'BucketSizeBytes', /* required */
    Namespace: 'AWS/S3', /* required */
    Period: 3600, /* required */
    StartTime: '2019-06-07T00:00:00Z', /* required */
    Dimensions: [
        {
            Name: 'BucketName', /* required */
            Value: config.s3BucketName /* required */
        },
        {
            Name: 'StorageType',
            Value: 'StandardStorage '
        }
    ],
    Statistics: [
        'Average'
    ],
    Unit: 'Bytes'
};
cloudwatch.getMetricStatistics(params, function (err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else console.log(data);           // successful response
});

Но все, что я получаювзамен - пустой массив Datapoints каждый раз.Пытался изменить даты и период, но не повезло.

{ResponseMetadata: { RequestId: 'xxxx-xxxx-xxxx-xxxx-xxxx' },  Label: 'BucketSizeBytes',  Datapoints: []}

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете получить размер каждого сегмента из Amazon CloudWatch .

С Мониторинг показателей с помощью Amazon CloudWatch - Amazon S3 :

Метрика: BucketSizeBytes

Количество данных в байтах, хранящихся в сегменте. Это значение рассчитывается путем суммирования размера всех объектов в корзине (как текущих, так и непереходных объектов), включая размер всех частей для всех незавершенных многочастных загрузок в корзину.

Итак, просто получите показатель из Amazon CloudWatch, а не рассчитывайте его самостоятельно.

Ниже приведен эквивалент команды *1019* интерфейса командной строки AWS * 1018, которую вы можете перевести в предпочитаемый вами SDK:

aws cloudwatch get-metric-statistics 
--namespace AWS/S3 
--metric-name BucketSizeBytes 
--dimensions Name=BucketName,Value=my-bucket Name=StorageType,Value=StandardStorage 
--start-time 2019-06-05T00:00:00Z 
--end-time 2019-06-05T01:00:00Z 
--period 3600 
--statistics Average

Результат:

{
    "Label": "BucketSizeBytes",
    "Datapoints": [
        {
            "Timestamp": "2019-06-05T00:00:00Z",
            "Average": 17582395.0,
            "Unit": "Bytes"
        }
    ]
}

Обратите внимание, что есть три измерения, основанные на типе хранения. Выше только показывает StandardStorage.

Чтобы узнать, какие размеры доступны, используйте:

aws cloudwatch list-metrics --namespace AWS/S3
...