web-dev-qa-db-ja.com

Python:Boto3:get_metric_statistics()はキーワード引数のみを受け入れます

PythonでBoto3を使い始めたばかりなので、これは間違いなく新しいです。

単純な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などで同様の問題をグーグルで検索して理解しよう

私はまだ私が欠けているものについて立ち往生していますか?

どんなガイダンスでも大歓迎です。

ベンに感謝します

5
user7925487

これは機能します:

_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コマンドラインインターフェイス(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パラメーターなど)にデータを入力できます。

5
John Rotenstein

ドキュメント とエラーメッセージを参照してください。

get_metric_statistics() only accepts keyword agruments

ドキュメントで定義されているように、名前付き引数を関数に渡す必要があります。

get_metric_statistics(**kwargs)
4
mickzer