terraform:销毁期间的lambda调用

时间:2019-09-16 10:49:53

标签: aws-lambda terraform terraform-provider-aws

我在terraform构建的环境中调用了lambda:

$ sudo apt-get install sshpass
ansible server-group -m ping -k -u username
SSH password:

问题:该函数不仅在创建(“应用”)过程中被调用,而且在删除(“ destroy”)过程中也被调用。仅在创建期间如何调用它?我曾考虑过在lambda中检查环境变量(也许TF在这里添加了过程名称或类似名称),但我希望有更好的方法。

1 个答案:

答案 0 :(得分:2)

  • 在运行terraform命令时检查是否可以使用-var 'lambda_xxx=execute'选项,以检查是否需要执行lambda代码terraform docs
  • 使用在执行命令时通过命令行传递的变量lambda_xxx,您可以在terraform代码中检查是否要运行lambda代码。
  • 下面的代码仅在计数为1时创建waf
resource "aws_waf_rule" "wafrule" {
  depends_on  = ["aws_waf_ipset.ipset"]
  name        = "${var.environment}-WAFRule"
  metric_name = "${replace(var.environment, "-", "")}WAFRule"
  count = "${var.is_waf_enabled == "true" ? 1 : 0}"

  predicates {
    data_id = "${aws_waf_ipset.ipset.id}"
    negated = false
    type    = "IPMatch"
  }
}
  • variables.tf文件中声明的变量
variable "is_waf_enabled" {
  type = "string"
  default = "false"
  description = "String value to indicate if WAF/API KEY is turned on or off (true/any_value)"
}
  • 运行命令时,除true以外的任何其他值都将被视为false,因为我们只是在检查字符串true。
  • 类似地,您可以为您的lambda做到这一点。