Я пытаюсь использовать простой скрипт get_metric_statistics, чтобы вернуть информацию об использовании CPUUtilization для экземпляра. Вот сценарий, который я хочу использовать:
import boto3
import datetime
cw= boto3.client("ec2",
aws_access_key_id=AWS.get("aws_access_key_id"),
aws_secret_access_key=AWS.get("aws_secret_access_key"),
region_name=AWS.get("region_name"))
cw1 = boto3.client("cloudwatch",
aws_access_key_id=AWS.get("aws_access_key_id"),
aws_secret_access_key=AWS.get("aws_secret_access_key"),
region_name=AWS.get("region_name")
)
response = cw.describe_instances()
InstanceId_Value = response.get("Reservations")[0].get("Instances")[0].get("InstanceId")
print(InstanceId_Value)
res = cw1.get_metric_statistics(
Period=300,
StartTime=datetime.datetime.utcnow() - datetime.timedelta(seconds=600),
EndTime=datetime.datetime.utcnow(),
MetricName='CPUUtilization',
Namespace='AWS/EC2',
Statistics=['Average'],
Dimensions=[{'Name': 'InstanceId', 'Value':InstanceId_Value}]
)
print(res)
Вот результат:
i-074d0f8828bbe8cf7
Traceback (most recent call last):
File "/Users/xxxxxxxxx/tests.py", line 273, in <module>
Dimensions=[{'Name': 'InstanceId', 'Value':InstanceId_Value}]
File "/Users/xxxxxxxxxx/venv/lib/python3.6/site-packages/botocore/client.py", line
276, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/Users/xxxxxxxx/venv/lib/python3.6/site-packages/botocore/client.py", line
586, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the
GetMetricStatistics operation: User: arn:aws-cn:iam::900300832618:user/prog is not
authorized to perform: cloudwatch:GetMetricStatistics
Ожидаемое значение
{
"Metrics": [
{
"Namespace": "AWS/EC2",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-074d0f8828bbe8cf7"
}
],
"MetricName": "CPUUtilization"
}
],
"NextToken": "xxx"
}
Любое руководство будет высоко ценится.