我正在Terraform内配置AWS Lambda-最初,我在Terraform目录中拥有JS文件,该文件是lambda函数的全部内容:
data "archive_file" "auth_requests" {
type = "zip"
source_file = "${path.module}/auth_requests/index.js"
output_path = "${path.module}/auth_requests.zip"
}
resource "aws_lambda_function" "auth_requests" {
function_name = "auth_requests"
filename = "${data.archive_file.auth_requests.output_path}"
role = "${aws_iam_role.auth_requests.arn}"
handler = "index.handler"
source_code_hash = "${data.archive_file.auth_requests.output_base64sha256}"
runtime = "nodejs8.10"
}
但是,很明显,Lambda函数应该具有自己的git存储库,而不是位于我们更广泛的Terraform存储库中。有没有一种方法可以使用Terraform从git repo中获取文件(然后带入生成的归档文件中)?
我可以定义lambda的GitHub存储库as a resource,但是接下来要克隆/更新它的下一步是什么,以便archive_file
可以引用它?还是可以将Terraform模块重新用于此类用途?
答案 0 :(得分:1)
假设您使用Github存储库来存储JS函数,则可以使用cams
通过Github Content API下载回购的zip:
curl
您可以使用curl -L -o <output zip filename> https://<github repo url>/zipball/master
提供商而不是External
提供商在Terraform中实现此目标:
Archive
缺点是您现在具有外部依赖项(curl)。