如何将区域 var 传递到 vpc 模块内的 local-exec

问题描述

因此,当您在 AWS 中创建全局加速器时,虽然您没有明确指定创建安全组,但仍然会自动创建一个,因为它是全局加速器的依赖项。当我们运行 terraform destroy 时,安全组仍然存在。这是一个已知问题,HashiCorp 建议手动删除 GA。为了避免这种情况,我想过运行类似的东西:

resource "aws_vpc" "vpc" {
    provisioner "local-exec" {
      when    = destroy
      command = "aws ec2 delete-security-group --group-id $(aws ec2 describe-security-groups --filter Name=group-name,Values='GlobalAccelerator' Name=vpc-id,Values=${self.id} --region ${var.region} --output text | awk '{print $5}') --region ${var.region}"
    }
  cidr_block           = local.cidr_block
.
.
.
}

aws cli 命令有效。我已经测试过了。我不确定如何传递区域变量。 var.region 失败,因为它不是 self 参数。我也无法添加区域块如下: region = var.region 因为 region 不是受支持的参数。 如何传递区域 var 以运行 cli 命令?

谢谢

解决方法

我建议为全局加速器显式创建安全组并避免包装脚本的开销或尝试删除自动创建的安全组,除非有特定原因不这样做?这样 terraform 就会用它破坏安全组。