Python Boto3:来自AWS实例的空数据点

Python Boto3:来自AWS实例的空数据点,python,amazon-web-services,amazon-ec2,boto3,amazon-cloudwatch,Python,Amazon Web Services,Amazon Ec2,Boto3,Amazon Cloudwatch,我想写一个Python脚本来获取我的EC2 CPU利用率。使用get_metric_statistics()方法时,输出响应如下所示 据我所知,“Datapoints:[]”数组不应该为空。它应该返回一些东西以获得CPU负载%。我的代码是 import boto3 import sys import datetime client = boto3.client('cloudwatch') response = client.get_metric_statistics( Namespa

我想写一个Python脚本来获取我的EC2 CPU利用率。使用get_metric_statistics()方法时,输出响应如下所示

据我所知,“Datapoints:[]”数组不应该为空。它应该返回一些东西以获得CPU负载%。我的代码是

import boto3
import sys
import datetime


client = boto3.client('cloudwatch')
response = client.get_metric_statistics(
    Namespace='AWS/EC2',
    MetricName='CPUUtilization',
    Dimensions=[
        {
        'Name': 'InstanceId',
        'Value': 'i-***********'
        },
    ],
    StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
    EndTime=datetime.datetime.utcnow(),
    Period=120,
    Statistics=[
        'Average',
    ],
    Unit='Percent'
)

print(response)

这里有什么问题吗?谢谢

要使用百分位数统计信息,必须首先启用详细监控


默认情况下,它采用默认区域,即“ap-Southwest-1”(位于.aws/config中)。在.aws/credentials文件中,它自动获取配置api时使用的密钥和访问密钥如果它们冲突,则数据点返回空。

解决方案: 1.为每个区域创建新的配置文件。在.aws/config中配置区域。我的看起来像这样

`[default]
region = ap-southeast-1

[profile nv]
region = us-east-1
[profile prod]
region = us-east-1
~                  `
nv和prod是用户自定义的ProfileName

  • 输入名称而不是默认名称

    session=bot3.session(profile\u name='default')

  • 在.aws/credentials中以相同的方式输入密钥和访问密钥


  • 您可以使用
    aws configure--your_profile_name
    在配置和凭证文件中创建配置文件

    谢谢,但我没有启用它!