メインコンテンツにスキップ
aws

AWS Cost Explorerで"Data is not available"エラーが出た

タグ: 🏷 aws ,cost-explorer ,go

1. 背景

AWS Cost Explorerを利用してコストデータを取得しようとした際に、DataUnavailableException というエラーに遭遇しました。

Lambdaで利用料を取得しようとしたら、このエラーが出たのです。

2. エラーメッセージの解析

まず、問題となっているエラーメッセージです。

LambdaがCloudWatchLogsに吐き出したログです。

{
  "errorMessage": "failed to get cost data: operation error Cost Explorer: GetCostAndUsage, https response error StatusCode: 400, RequestID: 6d9d6316-eaf1-4a71-b8ae-4e86f6e1913f, DataUnavailableException: Data is not available. Please try to adjust the time period. If just enabled Cost Explorer, data might not be ingested yet",
  "errorType": "wrapError"
}

上記のメッセージで以下のことがわかります。

  • API操作: Cost Explorer: GetCostAndUsage
  • HTTPステータスコード: 400 (Bad Request)
  • 例外タイプ: DataUnavailableException
  • 詳細メッセージ: “Data is not available. Please try to adjust the time period. If just enabled Cost Explorer, data might not be ingested yet”
    • 意味:データが利用できません。期間を調整してみてください。Cost Explorerを有効化したばかりの場合、データがまだ取り込まれていない可能性があります。

3. 主な原因

このエラーが発生する主な原因は、次の3つが考えられます。

  1. Cost Explorerが有効化されていない: そもそもCost Explorerが有効になっていなければ、データを取得することはできません。
  2. データがまだ利用できない: Cost Explorerを有効化してから、AWSがデータを収集・処理して利用可能になるまでには、最大で24時間かかることがあります。
  3. データ取得期間の指定に問題がある: データが存在しない期間を指定してリクエストを送信している可能性があります。

4. 解決策

具体的な解決策です。調べたので、記録します。

4.1. Cost Explorerの有効化を確認する

最初に確認すべきは、Cost Explorerが有効になっているかどうかです。

  1. AWSマネジメントコンソールにサインインします。
  2. 「Billing & Cost Management」ダッシュボードに移動します。
  3. 左側のナビゲーションペインから「Cost Explorer」を選択します。
  4. もし有効化されていない場合は、「Enable Cost Explorer」というボタンが表示されるので、クリックして有効化します。

4.2. データの取り込みを待つ

Cost Explorerを有効化した直後は、データの準備が完了するまで最大24時間待つ必要があります。少し時間をおいてから、再度データ取得を試みてください。

4.3. データ取得期間を調整する

Go言語のコードで期間を指定している場合、その範囲が適切か確認しましょう。 例えば、以下のようなコードで当月の初日から現在までを取得しようとすると、まだデータが存在しない可能性があります。

5. 対応

待ちました。

AWSアカウントを作ったばかりで、コストが発生していませんでした。なので、2日ほど待ちました。

6. まとめ

DataUnavailableExceptionエラーは、多くの場合、Cost Explorerの初期設定やデータ準備期間に起因する一時的な問題です。まずはAWSコンソールでCost Explorerの状態を確認し、必要であれば有効化して24時間待機してみてください。それでも問題が解決しない場合は、APIリクエストで指定している時間範囲を見直しが必要です。