2017-04-26 426 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) 
相關問題