如何在terraform中使用git存储库作为AWS Lambda源?

时间:2018-07-20 06:35:29

标签: git aws-lambda terraform

我正在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模块重新用于此类用途?

1 个答案:

答案 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)。