Aws lambda DevOps:AWS Lambda.zip和Terraform

Aws lambda DevOps:AWS Lambda.zip和Terraform,aws-lambda,azure-devops,terraform,Aws Lambda,Azure Devops,Terraform,我已经编写了Terraform来在AWS中创建Lambda函数。 这包括指定压缩的python代码。 从命令行运行到我的技术箱,一切都很顺利。 terraform apply操作将我的zip移动到AWS中并用于创建lambda 代码的关键部分: resource "aws_lambda_function" "meta_lambda" { filename = "get_resources.zip" source_code_hash = fi

我已经编写了Terraform来在AWS中创建Lambda函数。 这包括指定压缩的python代码。 从命令行运行到我的技术箱,一切都很顺利。 terraform apply操作将我的zip移动到AWS中并用于创建lambda

代码的关键部分:

resource "aws_lambda_function" "meta_lambda" {
              filename = "get_resources.zip"
              source_code_hash = filebase64sha256("get_resources.zip")
              .....
现在,为了将其应用到其他环境中,我必须通过Azure DevOps推送我的Terraform。 但是,当我尝试在DevOps中构建时,我得到以下结果:

错误:资源中main.tf行140上的函数调用出错 “aws_lambda_函数”“meta_lambda”:140:源代码\u哈希= filebase64sha256(“get_resources.zip”)调用函数 “filebase64sha256”失败:get_resources.zip上不存在任何文件

我有一种感觉,我在这里遗漏了一个关键概念,因为我可以在repo中看到.zip-所以我不明白构建如何找不到它

如果有任何关于我做错了什么的提示/线索,欢迎提供


根据文档示例,在
源代码哈希
参数中,
filebase64sha256(“get\u resources.zip”)
需要用双引号括起来


您可以参考此文件了解详细信息。

伙计们,我恐怕我在这里可能有点不知所措-terraform&DevOps的新手
我和我们(更多)的技术人员谈过,他们已经解决了这个问题

我认为你失败的原因是因为踏上了柏油地形的台阶 需要使用不同的命令行,以便包含zip文件 进入人工制品。tar-cvpf terraform.tar.terraform.tf tfplan tar--recursion-cvpf terraform.tar--exclude='/.git'--exclude='.gitignore'

。。这对你来说意味着什么! 不管他们做了什么,都能成功

由于这是一笔悬赏,我还是要分配它,因为我很感谢你的投入!
如果这是一个新手错误,很抱歉。

您可以尝试使用terraform AWS lambda构建模块构建软件包。因为这对整个过程非常有用,休,谢谢你的提示。这似乎在最新的vsn中有所改变:警告:在main.tf行141上,资源“aws_lambda_function”“meta_lambda”:141:source_code_hash=“${filebase64sha256(“get_resources.zip”)}中不推荐使用仅插值表达式Terraform 0.11和更早版本要求通过插值语法提供所有非常量表达式,但现在不推荐使用这种模式。若要使此警告静音,请删除此表达式开头的“${sequence”和结尾的“}”序列,只保留内部表达式。同意ydaetskcoR,您可以列出目录以检查运行前是否包含zip文件。您确定Terraform运行前该文件已存在吗?你能先添加一个列出目录的步骤或运行类似于
tree
的操作吗?ydaetskcoR,你能发布一个答案吗?我会申请奖励(见我的答案),即使我通过其他方式找到了解决方案,我也感谢你的输入:)