调用CloudWatch get-metric-statistics获取S3桶每日增量返回空数组
S3 CloudWatch容量查询返回空数组排查方案
- 时间范围配置不合理
S3的BucketSizeBytes指标为每日推送一次,数据生成延迟最高可达24小时,你设置的结束时间为2021-10-31T00:00:00Z,会导致10月下旬还没来得及推送的指标无法被查询到,建议将结束时间延后1~2天,比如改为2021-11-02T00:00:00Z。 - 维度参数不匹配
你当前StorageType设为了StandardStorage,仅会查询标准存储类的容量,如果你的存储桶内有S3智能分层、低频访问、归档等其他存储类的对象,需要对应修改该参数的值;如果要查询全存储类的总容量,需要多次调用命令分别查询不同StorageType的结果再求和。 - 桶和区域不匹配
确认my-bucket存储桶的实际所属区域为eu-west-1,如果区域和桶名不对应,CloudWatch会直接返回空数组不会抛出异常。 - 权限不足
执行CLI命令的身份需要同时具备cloudwatch:GetMetricStatistics和s3:GetBucketMetricsConfiguration权限,权限不足时部分场景下不会返回权限报错,仅会返回空结果。 - 查询语句过滤问题
可以先移除命令中的--query 'Datapoints[*].[Timestamp, Maximum]'参数执行,确认原始返回结果是否有数据,避免query语法错误过滤了有效数据。 - 存储桶无对应数据
如果查询时间段内该存储桶的标准存储类没有任何对象,也会返回空数组,可以登录S3控制台直接查看桶的容量验证。
修正后的参考命令
aws cloudwatch get-metric-statistics \ --metric-name BucketSizeBytes --namespace AWS/S3 \ --start-time 2021-10-01T00:00:00Z --end-time 2021-11-02T00:00:00Z \ --statistics Maximum --unit Bytes --region eu-west-1 \ --dimensions Name=BucketName,Value=my-bucket Name=StorageType,Value=StandardStorage \ --period 86400
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

