调用CloudWatch get-metric-data报错:已传MetricDataQueries仍提示必填
问题原因及解决方案
错误根源
你在CLI命令里同时使用了两种冲突的参数传递方式:
- 命令行中写了
--metric-data-queries但未提供任何取值,AWS CLI会判定该参数缺失必要内容 - 同时又通过
--cli-input-json传入包含MetricDataQueries的JSON文件,两种方式传递同一参数会导致CLI解析混乱,最终触发"MetricDataQueries参数必填"的错误
另外,你命令行和JSON里的时间格式2023-06-13T00:00:0000不符合ISO 8601标准,正确格式应为2023-06-13T00:00:00Z(带时区)或2023-06-13T00:00:00,这个问题虽不是当前报错的直接原因,但后续可能引发其他验证错误,建议一并修正。
解决办法
方法一:统一用JSON文件传递所有参数(推荐)
移除命令行中重复的--metric-data-queries、--start-time、--end-time参数,仅保留--cli-input-json和--region:
aws cloudwatch get-metric-data --cli-input-json file://metric-data-query.json --region us-east-2
同时修正JSON文件里的时间格式,并补充MetricStat缺失的必填参数:
{ "MetricDataQueries": [ { "Id": "myRequest", "MetricStat": { "Metric": { "Namespace": "AWS/Lambda", "MetricName": "Errors", "Dimensions": [ { "FunctionName": "my-func-name-here" } ] }, "Period": 300, "Stat": "Sum" }, "Label": "myRequestLabel", "ReturnData": true } ], "StartTime": "2023-06-13T00:00:00Z", "EndTime": "2023-06-13T23:59:59Z" }
方法二:混合传参(不推荐)
若一定要在命令行传递部分参数,需移除JSON里的重复参数,并给--metric-data-queries正确赋值:
aws cloudwatch get-metric-data --metric-data-queries '[{"Id": "myRequest", "MetricStat": {"Metric": {"Namespace": "AWS/Lambda", "MetricName": "Errors", "Dimensions": [{"FunctionName": "my-func-name-here"}]}, "Period": 300, "Stat": "Sum"}, "Label": "myRequestLabel", "ReturnData": true}]' --start-time 2023-06-13T00:00:00Z --end-time 2023-06-13T23:59:59Z --region us-east-2
内容的提问来源于stack exchange,提问作者martin
相关产品推荐
相关产品推荐

