質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

683閲覧

aws cliにてCloud Watchから請求額を取得したい

GotHokLin

総合スコア34

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/02/22 11:02

前提・実現したいこと

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のこのドキュメントを見ると解決するというところも分かれば教えていただきたいと思っております。
いつも質問ばかりで申し訳ないのですが、なにとぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

AccessDenied ではないので、権限はあると思います。
実際に、その時間のデータがないのではないでしょうか?

aws cloudwatch list-metrics --namespace "AWS/Billing"

--region us-east-1 を付けてもメトリクス一覧は表示されないでしょうか?

投稿2018/02/23 05:23

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GotHokLin

2018/02/26 00:47 編集

TaichiYanagiyaさん、コメントありがとうございます。週末、この環境にアクセスできない状況で確認が遅くなってしまいました。 このコマンドを実行しているEC2のアカウント内では1月末よりずっと数台のEC2やRDS、ELBを稼働させている状況ですので、指定した期間、2018/02/19から2018/02/20までで課金情報のデータがないという状況ではないはずです。 頂いたコメントを見てはっとしましたが、--region us-east-1をつけても状況は変わりませんでした。 $ aws cloudwatch list-metrics --namespace "AWS/Billing" --region us-east-1 { "Metrics": [] } 他になにが考えられるか、もしお分かりになればお教えいただけたらと思います。 以上、よろしくお願いいたします。
TaichiYanagiya

2018/02/27 09:02

請求アラートが作成されていないのではないでしょうか。
GotHokLin

2018/02/28 02:08

TaichiYanagiyaさん、コメントありがとうございます。 おっしゃられていた通り、「請求アラート」の設定がオンになっておりませんでした。 請求情報とコスト管理ダッシュボード → 設定 → 「請求アラートを受け取る」の項目にチェックが入っていなかったため、チェックを入れ「設定の保存」を押下、その後、シェルから $ aws cloudwatch list-metrics --namespace "AWS/Billing" --region us-east-1 と打つことによってメトリクス一覧が表示されました。 しかし、本質問の冒頭で実行したコマンドそのままや--start-time、--end-timeをいろいろ変更して実行おりますが、やはり結果は同じものでした。 TaichiYanagiyaさんのコメントで一歩進んだ気がしております。もう少し努力してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問