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

AWS で CUR を有効化する

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

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

対応フォーマット

以下の CUR ファイルタイプをサポートしています。

  • CSV

  • Parquet

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

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

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

  2. us-east-1 で、以下の AWS CloudFormation スタックをデプロイします。

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

バックフィルを確認する

履歴データのバックフィルが完了するまでには時間がかかります。bucket を確認する前に、1~24 時間程度待つことを推奨します。

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

  2. レポートの受け取り用に作成した bucket を選択します。

AWS は、レポートプレフィックスおよびレポート名の配下にレポートを保存します。

  • CUR 2.0: エクスポートは CUR2/aws-usage-report フォルダ配下にあります。データファイルは CUR2/aws-usage-report/data/BILLING_PERIOD=YYYY-MM のようなパスに配信されます。詳細は、Understanding export delivery を参照してください。

  • 従来の CUR: レポートは billing/aws-usage-report フォルダ配下にあります。AWS は、同一のレポート日付範囲内のすべてのレポートを、billing/aws-usage-report/YYYYMMDD-YYYYMMDD フォルダに配信します。詳細は、Amazon S3 organization and naming conventions を参照してください。

Cost data latency も参照してください。

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

この CloudFormation YAML テンプレートは、BCM Data Export (CUR 2.0) を管理・自動化し、コストアロケーションタグのバックフィル処理を開始するための AWS リソースを作成します。

Parameters

  • BucketName
    • Type: STRING
    • Description: CUR 2.0 エクスポートを保存する Amazon S3 bucket の名前を指定します。

Resources

  • MyCURReportBucket

    • Type: AWS::S3::Bucket
    • Description: CUR 2.0 エクスポートを保存するための Amazon S3 bucket を作成します。
    • Properties:
      • BucketName: S3 bucket の名前を指定します。
      • OwnershipControls: オブジェクト所有権を BucketOwnerEnforced に設定します。
      • VersioningConfiguration: bucket のバージョニングを設定します (現在は一時停止)。
  • CURReportBucketPolicy

    • Type: AWS::S3::BucketPolicy
    • Description: BCM Data Exports サービスがエクスポートファイルを書き込めるように、bucket ポリシーをアタッチします。
    • Properties:
      • Bucket: 作成した S3 bucket を参照します。
      • PolicyDocument: bucket ポリシーの権限を定義します。
  • BCMDataExport

    • Type: AWS::BCMDataExports::Export
    • Description: CUR 2.0 データエクスポートの設定を定義します。
    • Depends on: CURReportBucketPolicy
    • Properties:
      • Name: エクスポート名 (aws-usage-report) を指定します。
      • DataQuery: CUR 2.0 のカラムを選択し、リソース ID、キャパシティ予約データ、IAM プリンシパルデータを含む時間単位 (hourly) の粒度を設定します。
      • DestinationConfigurations: Parquet 出力を CUR2 プレフィックス配下の S3 bucket に書き込み、更新されたレポートで上書きします。
      • RefreshCadence: リフレッシュ頻度を同期 (synchronous) に設定します。
  • CostAllocationTagBackfillFunction

    • Type: AWS::Lambda::Function
    • Description: コストアロケーションタグのバックフィル処理を開始するための Lambda 関数です。
    • Depends on: BCMDataExport
    • Properties:
      • Handler: Lambda 関数のエントリポイントを指定します。
      • Role: Lambda 関数用の IAM ロールを指定します。
      • Code: Lambda 関数のコードを含みます。
      • Runtime: ランタイム環境を Python 3.12 に設定します。
  • LambdaExecutionRole

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

    • Type: Custom::CostAllocationTagBackfill
    • Description: コストアロケーションタグのバックフィル処理をトリガーするカスタムリソースです。
    • Properties:
      • ServiceToken: バックフィル処理を実行する Lambda 関数を参照します。

Outputs

  • ExportArn

    • Description: BCM Data Export の ARN です。
    • Value: 作成したエクスポートを参照します。
  • BackfillRequestResponse

    • Description: コストアロケーションタグのバックフィル処理のステータスです。
    • Value: カスタムリソースからのレスポンスを参照します。

DoiT-CUR-Backfill-Stack YAML テンプレート (レガシー)

この CloudFormation YAML テンプレートは、従来の Cost and Usage Report を管理・自動化し、コストアロケーションタグのバックフィル処理を開始するための AWS リソースを作成します。特別な理由で従来の CUR が必要な場合を除き、CUR 2.0 スタックの利用を推奨します。

Parameters

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

Resources

  • 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 関数のコードを含みます。
      • Runtime: ランタイム環境を Python 3.12 に設定します。
  • LambdaExecutionRole

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

    • Type: Custom::CostAllocationTagBackfill
    • Description: コストアロケーションタグのバックフィル処理をトリガーするカスタムリソースです。
    • Properties:
      • ServiceToken: バックフィル処理を実行する Lambda 関数を参照します。

Outputs

  • BackfillRequestResponse
    • Description: コストアロケーションタグのバックフィル処理のステータスです。
    • Value: カスタムリソースからのレスポンスを参照します。

次のステップ

これらの CloudFormation YAML テンプレートは、AWS Security Hub の検出結果をトリガーする場合があります。例えば、S3 bucket へのリクエストで Secure Socket Layer の使用を必須にすべき、または S3 bucket に Lifecycle 設定が必要である、といった内容です。これらの検出結果は、次の対応によって是正できます。

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

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