【问题标题】:Avoiding lambda invocation during terraform plan phase在 terraform 计划阶段避免 lambda 调用
【发布时间】:2021-01-19 12:14:55
【问题描述】:

我有一个 lambda,我想在 terraform 应用期间调用一次,因为它会更新数据库并且应该在应用阶段只触发一次。
我的问题是 terraform 在计划阶段也会调用它。
有没有办法只在应用阶段运行它?
示例:

data "aws_lambda_invocation" "run_lambda" {
  function_name = "test"

  input = <<JSON
  {}
  JSON
}

【问题讨论】:

  • 有趣的问题。我怀疑您不能限制此特定资源在计划时调用 lambda - 它被设置为数据源,因此 Terraform 将在计划阶段“读取”它。由于您正在使用此 lambda 写入数据,因此您将需要其他内容。这是一个我从未使用过但值得尝试的模块:registry.terraform.io/modules/crisboarna/lambda-invoke/aws/…

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


【解决方案1】:

请求者迟到但回答以供将来参考: 尝试在 aws_lamdbda_invocation 中使用 depends_on: [some_resource] 构造。让调用依赖于任何其他资源。如果没有依赖(我几乎不相信),请引入人工依赖,例如 time_sleep。让执行等待 1s 并使 lambda 依赖于它。 这样terraform plan就不会抱怨了。

【讨论】:

  • 我尝试了 'depends_on = [aws_lambda_function.name]' 和 'depends_on = [time_sleep.wait_30_seconds]',但仍然会导致额外的调用。有没有你没有列出的要求?诚然,我觉得这有点难以阅读。
猜你喜欢
  • 2021-10-16
  • 2019-03-13
  • 1970-01-01
  • 2018-11-10
  • 2021-10-24
  • 2014-02-20
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多