0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

こちらの記事は、CUDOS構築記 Vol.1: CUDOSの概要と構築方法の検討の続きです。
前回は、CUDOSの概要と構築方法の検討について紹介しました。今回は、Step1:CUR集約先の作成についてコードを交えながら解説します。

本記事の構成

  • 前回のおさらい
  • 構築範囲の確認
  • 構築手順

前回のおさらい

  • CUDSの構築ステップは3つ
    • Step1: CURの集約先を作成する
    • Step2: CURの出力と集約先へのレプリケーション設定をする
    • Step3: CURの出力と集約先へのレプリケーション設定をする
  • 構築先アカウント
    • Step1,3:ダッシュボードを設置するアカウント
    • Step2: 可視化対象アカウントすべて
  • CUDOSの構築方針
    • Step1,2はTerraformで構築
    • Step3はCLI(cid-cmd tool)で構築

構築範囲の確認

構築範囲

赤枠で囲ってある範囲が、本記事で構築する対象です。
CURの集約先を作り、レプリケーションに必要なポリシーを設定します。

構築に必要な情報

  • ダッシュボードを設置するAWSアカウントID
  • すべての可視化対象AWSアカウントID

構築作業

前提

  • Terraformのplan/applyがローカルPCで実行できる
  • TerraformのRemote Backendが準備されている
  • AWS CLIのインストールと認証が行える
  • リポジトリが作成されており、ローカルにCloneされている
  • ディレクトリ構成
ディレクトリ構成
(リポジトリルート)
└── cid_dashboard

事前準備

作業ディレクトリを用意して、カレントディレクトリを移動します。

mkdir cur_setup_destination
cd cur_setup_destination

Terraformの初期化

Terraformの設定ファイルを作成します。

touch backend.tf
touch provider.tf
backend.tf
# 適宜バケット名、キー名、リージョン、プロファイル名を変更してください
terraform {
  backend "s3" {
    bucket  = "tfstate-cost-dashboard"
    key     = "terraform.state.cudos.cur-setup-destination"
    region  = "ap-northeast-1"
    profile = "data-collection-account"
  }
}
provider.tf
# 適宜versionを変更してください
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.73.0"
    }
  }
}

# 適宜profileを変更してください
# ただし、regionに関してはus-east-1を指定してください
# 理由は後述します
provider "aws" {
  region  = "us-east-1"
  profile = "data-collection-account"
}

provider "aws" {
  alias   = "useast1"
  region  = "us-east-1"
  profile = "data-collection-account"
}

Terraformの初期化を行います。

terraform init

補足: リージョンの指定について

集約先アカウントのCURをCUDOSに連携する場合、リージョンはus-east-1を指定してください。us-east-1以外でCUR関連のリソースの作成が行えないためです。
集約先アカウントのCURをCUDOSに連携する必要がない場合は、他のリージョンを指定しても問題ありません。ただし、リージョン間のデータ転送料を避けるため、後続のリソースを含めてリージョンは統一することをお勧めします。

リソースの作成

公式から提供されているTerraformモジュールのラッパーを作成します。

touch main.tf
touch outputs.tf
main.tf
module "cur_destination" {

  # 適宜バージョンを変更してください
  # see: https://github.com/aws-samples/aws-cudos-framework-deployment/tree/main/terraform-modules/cur-setup-destination
  source = "github.com/aws-samples/aws-cudos-framework-deployment//terraform-modules/cur-setup-destination?ref=0.3.13"

  # 集約アカウント以外で、CUDOSに連携したいアカウントIDを指定してください
  source_account_ids = [
    "000000000000",
    "111111111111",
    "222222222222"
  ]

  # 集約アカウントをCUDOSに連携する場合はtrue、連携しない場合はfalseを指定してください
  create_cur                        = true
  enable_split_cost_allocation_data = true

  providers = {
    aws.useast1 = aws.useast1
  }
}

outputs.tf
# 後続のステップで使用するため、バケットARNを出力します
output "destination_bucket_arn" {
  value = module.cur_destination.cur_bucket_arn
}

Terraformのplan/applyを実行します。

terraform plan
terraform apply

AWSコンソールでリソースが作成されていることを確認します。CURに関しては反映まで24時間ほどかかるので、時間をおいて確認してください。


以上で、この記事は終了です。
次回の記事では、Step2:CURの出力と集約先へのレプリケーション設定について解説します。
※ 現在、執筆中です。

それでは、次回の記事でお会いしましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?