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

Boto3: Empty Datapoint from AWS instance

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

据我所知,'Datapoints:[]' 数组不应为空。它应该 return 一些东西来获得 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)

对这里的问题有什么帮助吗?谢谢!

要使用百分位统计,您必须先启用详细监控。

Amazon EC2 Metrics and Dimensions

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

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

`[default]
region = ap-southeast-1

[profile nv]
region = us-east-1
[profile prod]
region = us-east-1
~                  `

nv 和 prod 是用户创建的配置文件名称。

  1. 输入名称而不是默认名称

    session = boto3.Session(profile_name='default')

  2. 在.aws/credentials.

  3. 中以同样的方式输入密钥和访问密钥

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