3 amazon-web-services aws-lambda terraform
我正在尝试使用 Terraform 创建一个 AWS lambda 函数,如下所示:
\nresource "aws_lambda_function" "dev" {\n role = aws_iam_role.dev.arn\n handler = var.handler\n runtime = var.runtime\n filename = "lambda.zip"\n function_name = var.function_name\n source_code_hash = filebase64sha256(file("lambda.zip"))\n}\nRun Code Online (Sandbox Code Playgroud)\n但它会抛出一个错误:
\nCall to function "file" failed: contents of lambda.zip are not valid UTF-8; use the filebase64 function to obtain the Base64 encoded contents or the other file\n\xe2\x94\x82 functions (e.g. filemd5, filesha256) to obtain file hashing results instead.\nRun Code Online (Sandbox Code Playgroud)\n我也尝试过"${base64sha256(file("lambda.zip"))}",但仍然遇到同样的错误。
Terraform 中以 开头的所有函数都file接受文件路径,而不是内容。
这里有两个问题:
您正在用来file读取二进制文件 - 它只接受 UTF-8 文本
file当它已经被处理时您正在使用filebase64sha256(file前缀是它接受文件路径的提示)
该文档强调了两个方面:
这类似于 base64sha256(file(filename)),但由于file 仅接受 UTF-8 文本,因此不能用于为二进制文件创建哈希值。
删除对它的调用file(...),它应该可以工作:
resource "aws_lambda_function" "dev" {
role = aws_iam_role.dev.arn
handler = var.handler
runtime = var.runtime
filename = "lambda.zip"
function_name = var.function_name
source_code_hash = filebase64sha256("lambda.zip")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2569 次 |
| 最近记录: |