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.
私が持っています:
私はまだ私が欠けているものについて立ち往生していますか?
どんなガイダンスでも大歓迎です。
ベンに感謝します
これは機能します:
_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
パラメーターなど)にデータを入力できます。
ドキュメント とエラーメッセージを参照してください。
get_metric_statistics() only accepts keyword agruments
ドキュメントで定義されているように、名前付き引数を関数に渡す必要があります。
get_metric_statistics(**kwargs)