Я написал модуль terraform для создания Lambda, и у меня возникли проблемы с выяснением того, как вычислить source_code_hash для PRE-файла ZIP. Это будет в конвейере, поэтому ZIP-файл будет создаваться каждый раз и, возможно, будет другим, прежде чем я достигну шага terraform.
Я создаю ZIP-файл с помощью gulp (это приложение NodeJS) и предполагаю, что он предварительно-встроенный в директории build / myLambda.zip
По сути, я хочу это сделать. Имя файла является переменной terraform, и я хочу, чтобы вычисление source_code_hash ссылалось на этот файл.
module my_lambda {
filename = "${var.my_zip_file}"
}
Соответствующие части модуля:
resource "aws_lambda_function" "lambda" {
filename = "${var.filename}"
source_code_hash = "${filebase64sha256(file("${var.filename}"))}"
}
Однако, когда я запускаю план terraformЯ получаю эту ошибку:
Error: Error in function call
on modules\lambda\main.tf line 16, in resource "aws_lambda_function" "lambda":
16: source_code_hash = "${filebase64sha256(file("${var.filename}"))}"
|----------------
| var.filename is "build/myLambda.zip"
Call to function "file" failed: contents of
build/myLambda.zip are not valid UTF-8;
use the filebase64 function to obtain the Base64 encoded contents or the other
file functions (e.g. filemd5, filesha256) to obtain file hashing results
instead.