закодированный в base64 хэш md5 в terraform? - PullRequest
0 голосов
/ 18 октября 2019

Есть ли способ сделать хэш md5 в кодировке base64 в terraform? Насколько я могу судить, terraform выполняет только кодирование md5 и base64 необработанных строк.

Вариант использования: у меня есть объект облачного хранилища google, который я создаю в terraform, но он говорит "Свойство detemd5hash "менялось каждый раз, даже если оно не изменилось.

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фактическая шестнадцатеричная строка, а не байты, которые представляет шестнадцатеричный код, поэтому он не соответствует фактическому md5 объекта, который хранит Google (он возвращает md5 в шестнадцатеричном виде). ​​

Существуют ли обходные пути или умные решения длячто?

1 Ответ

1 голос
/ 18 октября 2019

У нас была похожая проблема с AWS S3, которую мы обошли:

  • , установив gulp pipe, который вычисляет хеш файла

  • сохраняет этот хэш в файле .txt (используя то же имя, что и в исходном файле)

  • Загрузка файла и файла хеша .txt

  • Затем используйте base64encode в файле .txt для управления версиями

Это работало некоторое время, но в конце мы решили использовать встроенное управление версиями объекта S3, так какбыло намного проще.

Я не использовал terraform для Google, поэтому я не уверен, что это полезно, но не стесняйтесь спрашивать меня больше вещей.

...