メインコンテンツへスキップ

AWS で CUR を有効化する

DoiT でのオンボーディングを開始する前に、AWS アカウントで Cost and Usage Reports(CUR)を有効化することを推奨します。これにより、AWS 利用データの包括的なコピーを取得できます。CUR を有効化すること自体には料金はかかりませんが、請求データを Amazon S3 bucket に保存する際には、標準的な Amazon S3 料金が発生します。

2026 年 6 月以降、DoiT プラットフォームは新しい AWS アカウントのオンボーディング時にデフォルトで CUR 2.0 を使用します。レガシー CUR エクスポート も引き続きサポートされていますが、推奨はされません。

対応フォーマット

以下の CUR ファイル形式に対応しています。

  • CSV

  • Parquet

CUR を作成しバックフィルをリクエストする

過去 12 か月分のデータをリクエストするには、次の手順を実行してください。

  1. 管理者権限および請求権限を持つ IAM ユーザー、または組織のマネジメントアカウント(組織の支払者アカウント)のルートユーザーとして、AWS Billing and Cost Management コンソール にサインインします。

  2. 次のハイパーリンクをクリックして、AWS CloudFormation スタックをデプロイします。 DoiT-CUR-Backfill-Stack

  3. スタックと bucket の名前をスタックの入力として指定します。これにより、必要なすべてのリソースが作成され、バックフィルがリクエストされます。

バックフィルを確認する

履歴データのバックフィルが完了するまでには時間がかかります。bucket を確認する前に、1〜24 時間程度お待ちいただくことをおすすめします。

  1. AWS S3 コンソール にサインインします。

  2. レポートを受信するために作成した bucket を選択します。

AWS はレポートを REPORT-PREFIX/REPORT-NAME フォルダーに保存します。レポートは billing/aws-usage-report フォルダーの下にあるはずです。

注意

AWS は同じレポート日付範囲内のすべてのレポートを、同一の billing/aws-usage-report/YYYYMMDD-YYYYMMDD フォルダー内に配信します。詳細については、Amazon S3 の構成と名前付け規則 を参照してください。

コストデータの遅延 も参照してください。

DoiT-CUR-Backfill-Stack YAML テンプレート

この CloudFormation YAML テンプレートは、AWS Cost and Usage Report(CUR)を管理・自動化し、コスト配分タグのバックフィルプロセスを開始するための AWS リソースを作成します。

パラメータ

  • BucketName
    • Type: STRING
    • Description: AWS Cost and Usage Report を保存する Amazon S3 bucket の名前を指定します。

リソース

  • MyCURReportBucket

    • Type: AWS::S3::Bucket
    • Description: AWS Cost and Usage Report を保存する Amazon S3 bucket を作成します。
    • Properties:
      • BucketName: S3 bucket の名前を指定します。
      • AccessControl: bucket のアクセスコントロールを BucketOwnerFullControl に設定します。
      • VersioningConfiguration: bucket のバージョニングを設定します(現在は一時停止)。
  • CURReportBucketPolicy

    • Type: AWS::S3::BucketPolicy
    • Description: billingreports サービスからのアクセスを許可するために、CUR レポート bucket に bucket ポリシーをアタッチします。
    • Properties:
      • Bucket: 作成した S3 bucket を参照します。
      • PolicyDocument: bucket ポリシーの権限を定義します。
  • CURReport

    • Type: AWS::CUR::ReportDefinition
    • Description: AWS Cost and Usage Report の設定を定義します。
    • Depends on: CURReportBucketPolicy
    • Properties:
      • ReportName: CUR レポートの名前を指定します。
      • TimeUnit: レポートの時間単位を HOURLY に設定します。
      • Format: レポート形式をテキストまたは CSV に設定します。
      • Compression: レポートに GZIP 圧縮を指定します。
      • AdditionalSchemaElements: レポートにリソース使用状況の詳細を含めます。
      • S3Bucket: レポートを保存する S3 bucket を参照します。
      • S3Region: S3 bucket のリージョンを指定します。
      • S3Prefix: レポートファイルのプレフィックスを定義します。
      • RefreshClosedReports: クローズ済みレポートの更新を有効にします。
      • ReportVersioning: 新しいレポートバージョンを作成するよう指定します。
  • CostAllocationTagBackfillFunction

    • Type: AWS::Lambda::Function
    • Description: コスト配分タグのバックフィルプロセスを開始するための Lambda 関数です。
    • Depends on: CURReport
    • Properties:
      • Handler: Lambda 関数のエントリポイントを指定します。
      • Role: Lambda 関数用の IAM ロールを指定します。
      • Code: Lambda 関数のコードを含み、必要な依存関係(boto3)をインストールします。
      • Runtime: ランタイム環境を Python 3.8 に設定します。
  • LambdaExecutionRole

    • Type: AWS::IAM::Role
    • Description: Lambda 関数用の IAM ロールです。
    • Properties:
      • AssumeRolePolicyDocument: ロールの信頼ポリシーを指定します。
      • Policies: Lambda 実行ロールの権限を定義します。
  • BackfillCustomResource

    • Type: Custom::CostAllocationTagBackfill
    • Description: コスト配分タグのバックフィルプロセスをトリガーするためのカスタムリソースです。
    • Properties:
      • ServiceToken: バックフィルプロセスを実行する Lambda 関数を参照します。

出力

  • BackfillStatus
    • Description: コスト配分タグのバックフィルプロセスのステータスです。
    • Value: カスタムリソースからのレスポンスを参照します。

次のステップ

この CloudFormation YAML テンプレートにより、たとえば「S3 buckets はリクエストに Secure Socket Layer を要求すべき」「S3 buckets は Lifecycle 設定を持つべき」といった AWS Security Hub の検出結果がトリガーされる場合があります。これらの検出結果は、次の対応により修正できます。

  • S3 bucket へのアクセスに対して Secure Sockets Layer(SSL)を必須にする。

  • ライフサイクルポリシーを設定する。