【问题标题】:base64 encoded md5 hash in terraform?terraform中的base64编码的md5哈希?
【发布时间】:2020-02-14 23:40:26
【问题描述】:

有没有办法在 terraform 中进行 base64 编码的 md5 哈希?据我所知,terraform 只对原始字符串进行 md5 和 base64 编码。

用例是我在 terraform 中创建了一个谷歌云存储对象,但它说“detectmd5hash”属性每次都发生了变化,即使它没有发生变化。

resource "google_storage_bucket_object" "things" {
  name    = "my-things"
  bucket  = "my-google-cloud-storage-bucket"
  content = "${local.thing_two}\n${local.thing_one}"
}

我希望我可以这样做:

resource "google_storage_bucket_object" "things" {
  name    = "my-things"
  bucket  = "my-google-cloud-storage-bucket"
  detectmd5hash = base64encode(md5("${local.thing_two}\n${local.thing_one}"))
  content = "${local.thing_two}\n${local.thing_one}"
}

但这采用的是实际十六进制字符串的 base64 编码,而不是十六进制表示的字节——因此它与 google 存储的对象的实际 md5 不匹配(它以十六进制返回 md5)。

是否有任何解决方法或聪明的解决方案?

【问题讨论】:

    标签: google-cloud-storage terraform terraform-provider-gcp


    【解决方案1】:

    AWS S3 也有类似的问题,我们通过以下方式解决了这个问题:

    • 设置用于计算文件哈希的 gulp 管道

    • 将该哈希存储在 .txt 文件中(使用与原始文件相同的名称)

    • 同时上传文件和哈希 .txt 文件

    • 然后在.txt文件上使用base64encode进行版本控制

    这工作了一段时间,但最终我们选择使用 S3 内置的对象版本控制,因为它更容易。

    我没有在 Google 上使用过 terraform,所以我不确定这是否有帮助,但请随时向我提问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2016-12-11
      相关资源
      最近更新 更多