前提・実現したいこと
aws cliを用いて、Cloud WatchからAWSの請求額を取得したいと考えております。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/billing-metricscollected.html
上記AWSのドキュメントを読むと、名前空間は「AWS/Billing」、メトリクスは「EstimatedCharges」となっております。
他のサイトも参考に以下のようなコマンドを実行してみました。
実行したコマンド
aws cloudwatch get-metric-statistics \ --region us-east-1 \ --namespace "AWS/Billing" \ --metric-name "EstimatedCharges" \ --start-time "2018-02-19T00:00:00Z" \ --end-time "2018-02-19T23:59:59Z" \ --period 60 \ --statistics Maximum \ --dimensions Name=Currency,Value=USD
発生している問題・エラーメッセージ
結果としては以下のように返ってきて、実際の値は取得できませんでした。
{ "Datapoints": [], "Label": "EstimatedCharges" }
試したこと
仮にend-timeを1日後ろにずらし(2018-02-20T23:59:59Z)実行したところ、今度は次のエラーが発生しました。
このコマンドでデータポイントの数が多すぎるため、1,440以内に収めろという意味と理解しております。
$ aws cloudwatch get-metric-statistics \ > --region us-east-1 \ > --namespace "AWS/Billing" \ > --metric-name "EstimatedCharges" \ > --start-time "2018-02-19T00:00:00Z" \ > --end-time "2018-02-20T23:59:59Z" \ > --period 60 \ > --statistics Maximum \ > --dimensions Name=Currency,Value=USD An error occurred (InvalidParameterCombination) when calling the GetMetricStatistics operation: You have requested up to 2,879 datapoints, which exceeds the limit of 1,440. You may reduce the datapoints requested by increasing Period, or decreasing the time range.
また、利用できるメトリクスの一覧を表示させようとしても結果は何も返ってきませんでした。
$ aws cloudwatch list-metrics --namespace "AWS/Billing" { "Metrics": [] }
環境等
このコマンドはEC2のAmazon Linux1で実行しています。
AWSアクセスキーならびにシークレットアクセスキーを利用せず、IAMロールをこのEC2に割り当てて利用しています(aws configureでの初期設定時、AWS Access Key IDとAWS Secret Access Keyは空欄のまま次に進ませました)。
AWSがプリセットで用意しているCloudWatchReadOnlyAccessというポリシーを、作成したIAMロールにアタッチし、そのIAMロールをコマンドを実行しているEC2インスタンスに割り当てています。
ここで作成したIAMロールには、このCloudWatchReadOnlyAccessポリシー以外はアタッチしていません。
CloudWatchReadOnlyAccessの内容をJSONで表示させると、以下のようなものになります。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "logs:Get*", "logs:List*", "logs:Describe*", "logs:TestMetricFilter", "sns:Get*", "sns:List*" ], "Effect": "Allow", "Resource": "*" } ] }
なにか設定が足りないのかと思っております。どういった設定が必要でしょうか。
また可能であれば、AWSのこのドキュメントを見ると解決するというところも分かれば教えていただきたいと思っております。
いつも質問ばかりで申し訳ないのですが、なにとぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/26 00:47 編集
2018/02/27 09:02
2018/02/28 02:08