如何正确使用 CloudWatch boto3 API 从指标中检索数据?

How do I correctly use the CloudWatch boto3 API to retrieve data from metrics?

我正在使用 Python3 的 boto3 尝试使用此处记录的 get_metric_statistics 函数从 SQS 的指标中提取数据:

https://boto3.readthedocs.io/en/latest/reference/services/cloudwatch.html#CloudWatch.Client.get_metric_statistics

这是我尝试拉取它的代码:

import boto3
import sys
from datetime import datetime, timedelta

client = boto3.client('cloudwatch')

response = client.get_metric_statistics(
    Namespace='SQS',
    MetricName='NumberOfEmptyReceives',
    Dimensions=[
        {
            'Name' : 'QueueName',
            'Value' : 'AlertNotifications'
        }
    ],  
    StartTime=datetime.utcnow() - timedelta(seconds=600),
    EndTime=datetime.utcnow(),
    Period=60,
    Statistics=[
        'Sum'
    ]
)

print(response)
sys.exit(0)

我收到来自 API 的响应,HTTP 状态代码为 200,因此有效,但我没有收到任何数据点。我还仔细检查了我是否使用 boto3.setup_default_session().

调用了正确的配置文件

我还仔细检查了我的数据是否存在:https://i.imgur.com/3TS9wD4.png

有人发现我做错了什么吗?

也给这个东西一个单位参数。如果我没有在我的请求中包含一个单位,我有一些 cloudwatch 指标 return 什么都没有。

命名空间需要在前面加上 AWS/ 例如 'AWS/SQS'

参见:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-namespaces.html