首页 > 解决方案 > AWS Boto3 - client.get_metric_statistics 中的数据点显示在一个文件上,但不显示在另一个文件上

问题描述

我有一个记录 Cloudwatch 指标的函数client.get_metric_statistics,当我执行它时,数据点不显示,但我将指标函数自己提取到另一个文件,执行时它显示数据点没有问题。

唯一不同的是,我有一个 InstanceId 在显示正常的那个上,我有一个 AMIID,正如您在我的主脚本上看到的那样,它必须是自动化的,所以我不确定是否允许使用 AMIID,但我不明白为什么它不应该或问题是什么,所以我正在寻找一些反馈。

import sys
import boto3
import time
ec2 = boto3.resource('ec2')
s3_resource = boto3.resource('s3', region_name='eu-west-1')
s3 = boto3.resource('s3')


instance = ec2.create_instances(
    ImageId='ami-02ifd1b532b22l6h3',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.nano',
    KeyName = 'key1.pem',
    SecurityGroupIds=[sg.group_id],
    UserData = user_data,
)
from datetime import datetime, timedelta

time.sleep(300)
client = boto3.client("cloudwatch")
response = client.get_metric_statistics(
    Namespace="AWS/EC2",
    MetricName="CPUUtilization",
    Dimensions=[{"Name": "AMIID", "Value": "ami-13add1h575a25e4d6"}],
    StartTime=datetime.utcnow() - timedelta(seconds=200),
    EndTime=datetime.utcnow(),
    Period=300,
    Statistics=["Average"],
    Unit="Percent",
)
print(response)

for cpu in response["Datapoints"]:
    print(cpu)
s3.Bucket(name='buket2')
ec2.SecurityGroup(id='sg-06b84927ae5rd3ad1')
{'Label': 'CPUUtilization', 'Datapoints': [], 'ResponseMetadata': {'RequestId': '', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '', 'content-type': 'text/xml', 'content-length': '357', 'date': 'Sun, 18 Jul 2021 00:26:57 GMT'}, 'RetryAttempts': 0}}
sg-06b84927ae5rd3ad1

标签: amazon-web-servicesamazon-ec2boto3amazon-cloudwatch

解决方案


Amazon EC2 指标维度

ImageId:此维度过滤您为运行此 Amazon EC2 Amazon 系统映像 (AMI) 的所有实例请求的数据。可用于启用详细监控的实例。

您似乎正在使用AMIID而不是ImageId.

您始终可以使用以下方式查看可用尺寸:

aws cloudwatch list-metrics --namespace 'AWS/EC2'

推荐阅读