【问题标题】:Got an error after associating EIP to my NAT Gateway in Terraform with modules在 Terraform 中使用模块将 EIP 关联到我的 NAT 网关后出现错误
【发布时间】:2021-04-18 16:50:10
【问题描述】:

我正在尝试使用带有模块的 Terraform 在 AWS 中创建基础设施。所以我得到了 2 个模块,一个用于我的 Nat 网关,一个用于 EIP 创建和关联。在我的主文件中,为了将 EIP 关联到 NAT 网关,我使用了 NAT GW 和 EIP 的 2 个输出属性,即 NAT 的 ID 和 EIP ID,如下所示:

module "eip_assoc" {
  source = "../Modules/eip_assoc"
  nat_gw_qa = module.NAT_GW.aws_nat_gateway_id_output
  nat_gw_association = module.EIP.eip_one_id_output
}

基础设施的其余部分一切正常,当我应用主文件时,它会在 AWS 中创建资源并将 EIP 与 NAT GW 关联,但在控制台结束时会显示如下错误:

“Error: Error associating EIP: InvalidNetworkInterfaceId.Malformed: Invalid id: "nat-0c15axxxxxxxxxx" (expecting "eni-...")"

好吧,它说我需要来自 NAT GW 的 eni-... 输出而不是 Allocation_id,我将输出更改为返回 NAT GW 的 ENI ID 的 network_interface_id,但之后我得到了另一个不同的错误:

错误:关联 EIP 时出错:AuthFailure:您无权访问指定资源。

在这种情况下,与以前一样,它在 AWS 中创建基础设施,并将 EIP 与 NAT GW 关联起来完全没有问题,但在 Terraform 文档中查找该错误消息后,它显示“不要使用 network_interface 将 EIP 关联到 aws_lb 或 aws_nat_gateway 资源。而是使用这些资源中可用的 allocation_id 来允许 AWS 管理关联,否则您将看到 AuthFailure 错误。"

因此,如果我使用分配 ID,它会显示预期 ENI ID 的错误,如果使用 ENI ID,它会显示 AuthFailure 错误,在这两种情况下都会部署整个资源,但会收到这些错误消息。

【问题讨论】:

  • 我认为 NAT GW 没有 ENI。您只需要创建 EIP,然后将其指向 NatGW 中的 allocation_id,如下所示:allocation_id = element(aws_eip.eip_ngw.*.id, count.index)

标签: amazon-web-services terraform amazon-vpc terraform-provider-aws


【解决方案1】:

我从这个 sn-p 中看到了什么

    module "eip_assoc" {
    source = "../Modules/eip_assoc"
    nat_gw_qa = module.NAT_GW.aws_nat_gateway_id_output
    nat_gw_association = module.EIP.eip_one_id_output
    }

在我的主文件中,为了将 EIP 关联到 NAT 网关,我使用了 NAT GW 和 EIP 的 2 个输出属性,即 NAT 的 ID 和 EIP ID

问题在于顺序,您必须已经有一个 EIP 或创建一个新的 EIP 并创建 NAT 网关,或者换句话说,您不能创建 EIP 并创建 NAT 网关,然后将 EIP 与 NAT 网关关联。

这正是我们无法在创建 NAT 网关后交换 EIP 的原因。

引用documentation

创建弹性 IP 地址后,您无法取消其与 NAT 网关的关联。要为您的 NAT 网关使用不同的弹性 IP 地址,您必须使用所需地址创建一个新的 NAT 网关,更新您的路由表,然后在不再需要时删除现有的 NAT 网关。

引用documentation

要为您当前用于 NAT 实例的 NAT 网关使用相同的弹性 IP 地址,您还必须首先取消弹性 IP 地址与您的 NAT 实例的关联,然后在创建网关时将其与您的 NAT 网关关联。

指定要在其中创建 NAT 网关的子网,并选择与 NAT 网关关联的弹性 IP 地址的分配 ID。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2021-03-17
    • 2021-01-19
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多