Контролировать стоимость корзины S3 с помощью nodejs - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь создавать корзины S3 по требованию и отслеживать их стоимость.Как всем известно, API Amazon замечательный, поэтому я застрял в какой-то момент.

Вот что я делаю в несколько шагов

Я создаю Bucket

s3.createBucket({
  Bucket: bucket,
  ACL: 'public-read',
}).promise();

И мой первый вопрос: Как (полностью) включить облачные часы на этом ведре?

Мой второй вопрос: Кто-нибудь знает, как полностьювычислить стоимость на основе показателей из CloudWatch?

Затем мне нужно получить некоторые данные из cloudwatch, например еженедельно, чтобы оценить стоимость.

const date = new Date();
const StartTime = new Date(date.getFullYear(), date.getMonth(), 1);
const EndTime = new Date(date.getFullYear(), date.getMonth() + 1, 0);
const Period = Math.floor((EndTime.getTime() - StartTime.getTime()) / 1000);
cloudwatch
  .getMetricData({
    StartTime,
    EndTime,
    MetricDataQueries: [
      {
        Id: 'size',
        MetricStat: {
          Metric: {
            Dimensions: [
              {
                Name: 'StorageType',
                Value: 'StandardStorage',
              },
              {
                Name: 'BucketName',
                Value: 'my-bucket',
              },
            ],
            MetricName: 'BucketSizeBytes',
            Namespace: 'AWS/S3'
          },
          Period,
          Stat: 'Average',
          Unit: 'Bytes'
        },
        ReturnData: true,
      },
      {
        Id: 'count',
        MetricStat: {
          Metric: {
            Dimensions: [
              {
                Name: 'StorageType',
                Value: 'AllStorageTypes',
              },
              {
                Name: 'BucketName',
                Value: 'my-bucket',
              },
            ],
            MetricName: 'NumberOfObjects',
            Namespace: 'AWS/S3'
          },
          Period,
          Stat: 'Average',
          Unit: 'Count',
        },
        ReturnData: true,
      },
      {
        Id: 'downloaded',
        MetricStat: {
          Metric: {
            Dimensions: [
              {
                Name: 'FilterId',
                Value: 'EntireBucket',
              },
              {
                Name: 'BucketName',
                Value: 'my-bucket',
              },
            ],
            MetricName: 'BytesDownloaded',
            Namespace: 'AWS/S3'
          },
          Period,
          Stat: 'Average',
          Unit: 'Bytes'
        },
        ReturnData: true,
      },
    ],
  }, handleResponse);

Что возвращает менячто-то вроде этого

{
  "ResponseMetadata": {
    "RequestId": "588f3c78-bc39-11e8-a704-cbccb1b4e355"
  },
  "MetricDataResults": [
    {
      "Id": "size",
      "Label": "StandardStorage BucketSizeBytes",
      "Timestamps": [
        "2018-08-31T22:00:00.000Z"
      ],
      "Values": [
        1030
      ],
      "StatusCode": "Complete",
      "Messages": []
    },
    {
      "Id": "count",
      "Label": "AllStorageTypes NumberOfObjects",
      "Timestamps": [
        "2018-08-31T22:00:00.000Z"
      ],
      "Values": [
        3
      ],
      "StatusCode": "Complete",
      "Messages": []
    },
    {
      "Id": "downloaded",
      "Label": "EntireBucket BytesDownloaded",
      "Timestamps": [
        "2018-08-31T22:00:00.000Z"
      ],
      "Values": [
        1342
      ],
      "StatusCode": "Complete",
      "Messages": []
    }
  ]
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...