【发布时间】:2021-11-09 19:45:51
【问题描述】:
我有这种情况,我需要确定 aws lambda 是否存在,如果存在,请停止使用 terraform 创建它,因此我使用 count 进行条件渲染,如下所示:
resource "aws_lambda_function" "lambda_aurora_hibernation" {
count = var.is_lambda_exist == "exist" ? 0 : 1
filename = "lambda_function.zip"
function_name = "lambda-aurora-hibernation"
role = aws_iam_role.lambda_role.arn
handler = "lambda_function.lambda_handler"
source_code_hash = filebase64sha256("lambda_function.zip")
runtime = "python3.6"
}
resource "aws_lambda_permission" "lambda_aurora_hibernation_permission" {
count = length(aws_lambda_function.lambda_aurora_hibernation)
statement_id = "AllowExecutionFromCloudWatch"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.lambda_aurora_hibernation[count.index].function_name
principal = "events.amazonaws.com"
source_arn = aws_cloudwatch_event_rule.lambda_aurora_hibernation_event_rule.arn
depends_on=[aws_lambda_function.lambda_aurora_hibernation]
}
第一个terraform apply中变量is_lambda_exist的值为not_exists,因此count的值变为1,这是正确的。
在接下来的terraform apply 中,我将is_lambda_exist 的值更改为exist,然后count 的值变为0 这将导致删除资源
我这样做的原因是有人可以手动创建资源,因此如果该 lambda 已经以其他方式存在,则需要停止创建它
如何防止这种情况发生?有人可以帮帮我吗?
谢谢。
【问题讨论】:
标签: terraform terraform-provider-aws