Terraform无法删除lambda ENI的安全组



我有一个terraform脚本,它在VPC中创建了一个lambda函数。因为lambda被部署到VPC,所以它创建了一个ENI并将其与我的安全组相关联。然而,当我更改该安全组(destroy(时,由于使用中的ENI超时,它失败了。

我认为正在发生的事情是Terraform意识到ENI依赖于安全组,但没有意识到lambda函数依赖于ENI,因此在尝试删除ENI之前没有尝试删除lambda函数。

所需的结果是能够更改安全组的名称和描述,而无需手动删除lambda函数和ENI。

我尝试过创建各种">dependens_on",还为lambda函数设置了一个生命周期,以便在更改安全组时销毁,但都不起作用。我使用的是Terraform的1.3.3版本和AWS提供商的4.37.0版本。

错误:使用安全组(sg-01ba40a4b03c5dd2(删除ENI:发生2个错误:

等待Lambda ENI(ENI-02cd7771540d50f8e(可用于分离:等待状态变为"可用"时超时(最后状态:"正在使用",超时:45m0s(

等待Lambda ENI(ENI-030c34234a51be116(可用分离:等待状态变为"可用"时超时(最后状态:"正在使用",超时:45m0s(

# ----------------------------------------------------------------------
# Security group
# ----------------------------------------------------------------------
resource "aws_security_group" "public" {
name        = "test-sg"
vpc_id      = var.vpc_id
description = "Security group for the lambda functions." # I cant modify this
}

# ----------------------------------------------------------------------
# Lambda Function
# ----------------------------------------------------------------------
resource "aws_lambda_function" "lambda_function" {
function_name    = var.name
handler          = var.handler
description      = var.description
runtime          = var.runtime
package_type     = "Zip"
filename         = var.file_path
source_code_hash = filebase64sha256(var.file_path)
role             = aws_iam_role.lambda_execution_role.arn
timeout          = 30
memory_size      = var.memory_size
vpc_config {
subnet_ids         = var.subnet_ids
security_group_ids = [aws_security_group.public.id]
}
}

谢谢。

在我们遇到类似问题后,有一个发现对我们的组织有所帮助,那就是旧的Lambda版本可能引用了您想要删除的安全组(以及相应的ENI(。

为了解决这个问题,我们必须删除任何引用安全组值的Lambda版本,然后才能删除安全组。

我也遇到过这种情况。正如你所知,这是非常令人沮丧的。

我的解决方法(无论如何都不理想(是使用aws控制台编辑每个eni,以更改分配的安全组(添加任何随机安全组并删除有问题的安全组(。当执行下一个terraform应用程序时,可以替换安全组,更新eni/nic,并重置所有内容。

相关内容

  • 没有找到相关文章

最新更新