🍣

aws_ce_cost_categoryで複数ディメンションを設定する

2022/12/05に公開

TL;DR

locals {
  project_tag_key = "Project"
  env_tag_key = "Env"
}

resource "aws_ce_cost_category" "project" {
  name         = var.app_name
  rule_version = "CostCategoryExpression.v1"
  rule {
    value = "production"
    type = "REGULAR"
    rule {
      and {
        tags {
          key = local.env_tag_key
          match_options = ["EQUALS"]
          values = ["production"]
        }
      }
      and {
        tags {
          key = local.project_tag_key
          match_options = ["EQUALS"]
          values = [var.app_name]
        }
      }
    }
  }
}

補足

ruleが複数出てきたり、比較演算子の場所が意外とわかりにくいところにあったりで困ったので備忘録として残す。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ce_cost_category#example-usage

https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html

1つのルールに複数のディメンションを作りたい時は、比較演算子でオブジェクトを作ってあげてその中で、tagsなど好きな条件を決めれば良い。

terraformのドキュメントだとtype(Optional)となっていたが、入れないとエラーが出たのでREGULARとして設定した。

Discussion