Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS节点SDK云监视返回零数据点_Node.js_Amazon Web Services_Aws Sdk_Amazon Cloudwatch - Fatal编程技术网

Node.js AWS节点SDK云监视返回零数据点

Node.js AWS节点SDK云监视返回零数据点,node.js,amazon-web-services,aws-sdk,amazon-cloudwatch,Node.js,Amazon Web Services,Aws Sdk,Amazon Cloudwatch,我正试图通过Cloud WatchgetMetricStatistics获取S3存储桶的大小(BucketSizeBytes) 我觉得我已经完成了所有设置,但是SDK没有返回任何数据点: { ResponseMetadata: { RequestId: 'ad520gfd4-7764-11e7-8084-2718255a18ba' }, Label: 'BucketSizeBytes', Datapoints: [] } 我已设置一个节点应用程序,该应用程序运行以下代码: const

我正试图通过Cloud Watch
getMetricStatistics
获取S3存储桶的大小(BucketSizeBytes)

我觉得我已经完成了所有设置,但是SDK没有返回任何数据点:

{ ResponseMetadata: { RequestId: 'ad520gfd4-7764-11e7-8084-2718255a18ba' },
  Label: 'BucketSizeBytes',
  Datapoints: [] }
我已设置一个节点应用程序,该应用程序运行以下代码:

const AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
const cloudwatch = new AWS.CloudWatch();

var startTime = new Date(2017, 07, 15);
var endTime = new Date(2017, 08, 01);

var params = {
  EndTime: endTime,
  MetricName: 'BucketSizeBytes',
  Namespace: 'AWS/S3',
  Period: 3600,
  StartTime: startTime,
  Dimensions: [
    {
      Name: 'StorageType',
      Value: 'StandardStorage'
    }
  ],
  Statistics: [
    'Average'
  ],
  Unit: 'Bytes'
};

cloudwatch.getMetricStatistics(params, function(err, data){

    if(err) {
        console.log(err, err.stack);
    } else {
        console.log(data);
    }

});
我在配置文件中仔细检查了我的区域,该文件设置为Frankfurt(eu-central-1),为了确保这一点,我甚至尝试在同一个文件中连接到S3,该文件按预期列出了我的存储桶:

var S3 = new AWS.S3();

S3.listBuckets(function(err, data) {
  if (err) { console.log("Error:", err); }
  else {
    for (var index in data.Buckets) {
       var bucket = data.Buckets[index];
       console.log("Bucket: ", bucket.Name, ' : ', bucket.CreationDate);
    }
  }
});

我还尝试在AWS cloud watch界面中设置完全相同的startDate和endDate,以确保它有数据。是的。所以我不明白为什么我得不到任何数据点?我能做些什么来修复它呢?

结果问题出在我的日期变量上。我仍然习惯于Javascript日期是基于0的这一奇怪事实,所以我实际上是在尝试将来从一个日期范围获取数据(令人尴尬)。将日期变量替换为以下变量:

var startTime = new Date(2017, 06, 19); // 2017-07-18T22:00:00.000Z
var endTime = new Date(2017, 07, 02); // 2017-08-01T22:00:00.000Z

非常感谢你给我的小费。必须将其输入aws cli,这迫使我键入日期值,并且我得到了预期的结果

在这种情况下,我通常会发现转向aws cli并从一个简单的请求开始,该请求返回的结果远远超过我想要的结果,然后找出如何一次添加一个参数以获得较少的结果,直到得到我想要的结果。一旦您从CLI中找到了所需的内容,就可以很容易地将其转换为任何其他SDK,因为它们最终都与相同的后端服务API进行通信。试一试?这帮我找到了问题所在。非常感谢。嗨,我只是想知道
时段:3600
设置是否适合你?我用AWS JS SDK和CLI尝试了相同的配置,它只在白天返回数据。