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.3: CURの出力と集約先へのレプリケーション設定をするの続きです。
前回で無事ダッシュボードの作成が完了しました。今回は番外編としてダッシュボードに表示されるアカウントの名称を変更する方法を紹介します。

アカウントの名称を変更とは

CUDOSを構築した場合、デフォルトではアカウントIDが表示されます。

2025-02-07-11-18-42.png

アカウント数が少ない場合は問題になりませんが、アカウント数が増えるとアカウントIDだけではどのアカウントか分かりにくくなります。
そのため、アカウントIDの代わりにアカウント名を表示するように変更します。

アカウント名を表示する方法

公式ドキュメントには3つの方法が記載されています。

  1. AWS Organizationsのアカウントマッピングを活用する
  2. AWS Cost Categoryを利用してアカウント名を追加する
  3. アカウントマップマッピングデータを用意する

今回は3の方法について解説します。

おおまかな手順

  1. アカウントIDとアカウント名のマッピングデータの作成
  2. マッピングデータをS3にアップロード
  3. Athenaにマッピングtableを作成
  4. Athenaのマッピング用Viewを更新
  5. QuickSightの設定変更
  6. IAMRolePolicyの修正
  7. SummaryViewを更新

アカウントIDとアカウント名のマッピングデータの作成

公式ドキュメント内にテンプレートのダウンロードリンクがあるので、テンプレートをダウンロードします。
2025-02-07-11-35-21.png

テンプレート
account_id,account_name,business_unit,team,cost_center
1.23457E+11,Master,CloudOps,core,1234
1.23457E+11,Prod,App,Demo,5678

account_id,account_name以外は任意のColumnになるので今回は削除します。
account_nameにそれぞれのアカウント名を記載します。

マッピングデータ
account_id,account_name
1111111111,【開発G1】DevAccount
2222222222,【開発G1】StagingAccount
3333333333,【開発G1】ProdAccount
4444444444,【開発G2】認証基盤
5555555555,【開発G2】サブシステムA

マッピングデータをS3にアップロード

手動でアップロードしてもいいですが、運用が楽になるようにterraformで管理します。

resource "aws_s3_bucket" "account_mapping" {
  bucket = "cudos-account-map"
}

// ... 省略 ...
// aws_s3_bucket_ownership_controls
// aws_s3_bucket_public_access_block
// etc

resource "aws_s3_object" "setting_file" {

  key          = "account-map/account_map.csv"
  bucket       = aws_s3_bucket.account_mapping.bucket
  source       = "./account_map.csv"
  content_type = "text/csv"
  etag         = filemd5("./account_map.csv")
}
terraform apply

Athenaにマッピングtableを作成

Athenaでマッピングデータを参照するためのtableを作成します。

CREATE EXTERNAL TABLE `account_mapping`(
  `account_id` string,
  `account_name` string,
)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://cudos-account-map/account-map/'
TBLPROPERTIES (
  'has_encrypted_data'='false',
  'skip.header.line.count'='1'
)

Athenaのマッピング用Viewを更新

マッピング用Viewを更新して、アカウント名を表示できるようにします。

CREATE OR REPLACE VIEW account_map AS
SELECT DISTINCT
a.line_item_usage_account_id "account_id"
, b.account_name
FROM
  ((
  SELECT DISTINCT
   line_item_usage_account_id
  FROM
   customer_cur_data.cur
) a
LEFT JOIN (
  SELECT DISTINCT
    "lpad"("account_id", 12, '0') "account_id"
    , account_name
  FROM
    customer_cur_data.account_mapping
) b ON (b.account_id = a.line_item_usage_account_id))

QuickSightの設定変更

マッピングデータを保持しているs3へのアクセス権限を追加します。

  • QuickSightの管理コンソールから、セキュリティとアクセス許可 へアクセス
  • アカウントマッピングを保持しているS3バケットにアクセス権限を追加

IAMRolePolicyの修正

次のIAMRoleに対して、S3バケットへのアクセス権限を追加します。

  • Role: CidCmdQuickSightDataSourceRole
    • s3:ListBucket
    • s3:GetObject
    • s3:GetObjectVersion
        {
            "Sid": "AllowListBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                ...省略...
                "arn:aws:s3:::cudos-account-map" // 追加
            ]
        },
        {
            "Sid": "AllowReadBucket",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                ...省略...
                "arn:aws:s3:::cudos-account-map/*" // 追加
            ]
        }

SummaryViewを更新

QuickSightでSummaryViewを更新します。1分から2分程度で更新されます。

  • 2025-02-07-12-27-04.png
  • 2025-02-07-12-27-47.png
  • 2025-02-07-12-28-18.png

結果確認

更新が終わったら、ダッシュボードにアクセスしてアカウント名が表示されるようになっていれば成功です。

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?