こちらの記事は、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
# 適宜バケット名、キー名、リージョン、プロファイル名を変更してください
terraform {
backend "s3" {
bucket = "tfstate-cost-dashboard"
key = "terraform.state.cudos.cur-setup-destination"
region = "ap-northeast-1"
profile = "data-collection-account"
}
}
# 適宜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
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
}
}
# 後続のステップで使用するため、バケットARNを出力します
output "destination_bucket_arn" {
value = module.cur_destination.cur_bucket_arn
}
Terraformのplan/applyを実行します。
terraform plan
terraform apply
AWSコンソールでリソースが作成されていることを確認します。CURに関しては反映まで24時間ほどかかるので、時間をおいて確認してください。
以上で、この記事は終了です。
次回の記事では、Step2:CURの出力と集約先へのレプリケーション設定について解説します。
※ 現在、執筆中です。
それでは、次回の記事でお会いしましょう。