メインコンテンツまでスキップ

AWS で CUR を有効化する

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

サポートされている形式

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

  • CSV
  • Parquet

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

過去 12 か月分のデータをリクエストするには:

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

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

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

バックフィルを検証する

履歴データのバックフィルの完了には時間がかかります。バケットを確認する前に 1~24 時間お待ちいただくことを推奨します。

  1. AWS S3 Console にサインインします。

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

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

注意

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

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

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 バケット名を指定します。

リソース

  • MyCURReportBucket

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

    • Type: AWS::S3::BucketPolicy
    • Description: billingreports サービスへのアクセスを許可するため、CUR レポートバケットにバケットポリシーをアタッチします。
    • Properties:
      • Bucket: 作成した S3 バケットを参照します。
      • PolicyDocument: バケットポリシーの権限を定義します。
  • 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 バケットを参照します。
      • S3Region: S3 バケットのリージョンを指定します。
      • 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 テンプレートにより、AWS Security Hub Findings がトリガーされる場合があります。たとえば、S3 バケットへのアクセスに Secure Socket Layer を要求すべき、S3 バケットに Lifecycle 設定が必要、などです。これらの検出事項は、次の対応で是正できます。

  • S3 バケットへのアクセスで Secure Sockets Layer(SSL)を必須化する。

  • ライフサイクルポリシーを構成する。