2017-04-26 419 views
0

刚刚开始在Python中使用Boto3,因此绝对是新的。Python:Boto3:get_metric_statistics()只接受关键字参数

我想使用一个简单的get_metric_statistics脚本来返回关于CPUUtilization实例的信息。这是我期待使用的脚本:

import boto3 
import datetime 

cw = boto3.client('cloudwatch') 

cw.get_metric_statistics(  
     300, 
     datetime.datetime.utcnow() - datetime.timedelta(seconds=600), 
     datetime.datetime.utcnow(), 
     'CPUUtilization', 
     'AWS/EC2', 
     'Average', 
     {'InstanceId':'i-11111111111'}, 
     ) 

,但我不断收到以下消息:

Traceback (most recent call last): 
    File "C:..../CloudWatch_GetMetricStatistics.py", line 13, in <module> 
    {'InstanceId':'i-0c996c11414476c7c'}, 
    File "C:\Program Files\Python27\lib\site-packages\botocore\client.py", line 251, in _api_call 
    "%s() only accepts keyword arguments." % py_operation_name) 
TypeError: get_metric_statistics() only accepts keyword arguments. 

我:

  1. 看了看Boto3和我的文档相信我已经正确书写/包含了所有内容
  2. 在.aws文件夹中设置正确的区域/输出格式/安全证书
  3. 与put_metric_statistics Google搜索类似的问题,等等,试图弄明白

我仍然坚持为我缺少什么吗?

任何指导将不胜感激。

非常感谢 本

回答

2

此作品:

import boto3 
import datetime 

cw = boto3.client('cloudwatch') 

cw.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':'i-abcd1234'}] 
     ) 

要找到正确的价值观,我用的是AWS Command-Line Interface (CLI)

aws cloudwatch list-metrics --namespace AWS/EC2 --metric-name CPUUtilization --max-items 1 

它返回的信息,如:

{ 
    "Metrics": [ 
     { 
      "Namespace": "AWS/EC2", 
      "Dimensions": [ 
       { 
        "Name": "InstanceId", 
        "Value": "i-abcd1234" 
       } 
      ], 
      "MetricName": "CPUUtilization" 
     } 
    ], 
    "NextToken": "xxx" 
} 

然后,您可以使用这些值来填充get_metric_statistics() requet(如Dimensions参数)。

+0

啊辉煌谢谢你!我经历了几次语法迭代(包括添加KV对的名称部分),但显然这不太正确。非常感谢 - 这个问题现在已经消失了。 – user7925487

+1

太棒了!如果这个或任何答案已解决您的问题,请点击复选标记考虑[接受它](http://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –

0

参考documentation,你的错误消息:

get_metric_statistics() only accepts keyword agruments 

命名的参数必须传递到如在文档中定义的函数:

get_metric_statistics(**kwargs) 
相关问题