tech.guitarrapc.cóm

Technical updates

TertraformでStorage LensをFree metricsで展開する

S3のStorage LensはFree metricsだけでも割と便利なので、Terraformで展開したくなるのですがやったことなかったのでメモです。 うっかり展開するとすぐにAdvanced metricsが有効になるので罠っぽさありました。

Storage LensをFree metricsで展開する

aws_s3control_storage_lens_configurationを使って、account_levelbucket_levelを両方空にするとFree metricsになります。1

resource "aws_s3control_storage_lens_configuration" "main" {
  config_id = "default"

  storage_lens_configuration {
    enabled = true

    # 無指定だとFree metricsになる
    account_level {
      bucket_level {
      }
    }

    data_export {
      cloud_watch_metrics {
        enabled = false
      }
    }
  }
}

image

失敗例

以下のようにaccount_levelbucket_levelを指定するとAdvanced metricsになります。全部falseでもAdvanced metricsになるの罠すぎる。

resource "aws_s3control_storage_lens_configuration" "main" {
  config_id = var.storage_lens_name

  storage_lens_configuration {
    enabled = true

    # 全部falseでもAdvanced metricsになる
    account_level {
      activity_metrics { enabled = false }
      advanced_cost_optimization_metrics { enabled = false }
      advanced_data_protection_metrics { enabled = false }
      detailed_status_code_metrics { enabled = false }

      bucket_level {
        activity_metrics { enabled = false }
        advanced_cost_optimization_metrics { enabled = false }
        advanced_data_protection_metrics { enabled = false }
        detailed_status_code_metrics { enabled = false }
      }
    }

    data_export {
      cloud_watch_metrics {
        enabled = false
      }
    }
  }
}

差分は以下の通りです。

  ~ resource "aws_s3control_storage_lens_configuration" "main" {
        id         = "123456789012:default"
        tags       = {}
        # (4 unchanged attributes hidden)
      ~ storage_lens_configuration {
            # (1 unchanged attribute hidden)
          ~ account_level {
              + activity_metrics {
                  + enabled = false
                }
              + advanced_cost_optimization_metrics {
                  + enabled = false
                }
              + advanced_data_protection_metrics {
                  + enabled = false
                }
              ~ bucket_level {
                  + activity_metrics {
                      + enabled = false
                    }
                  + advanced_cost_optimization_metrics {
                      + enabled = false
                    }
                  + advanced_data_protection_metrics {
                      + enabled = false
                    }
                  + detailed_status_code_metrics {
                      + enabled = false
                    }
                }
              + detailed_status_code_metrics {
                  + enabled = false
                }
            }
            # (1 unchanged block hidden)
        }
    }

Advancedになるの悲しい。

image

まとめ

もともとはGlacierの利用分ってStorage Lensで見られたかな?というのが始まりだったのですが、そういえばStorage Lensではみれないのでした。残念。


  1. 以前ならawsccのawscc_s3_storage_lensが使えそうでしたが、awsプロバイダーで対応したので