Terraform - 创建 NAT 网关时出错:InvalidElasticIpID.Malformed

Posted

技术标签:

【中文标题】Terraform - 创建 NAT 网关时出错:InvalidElasticIpID.Malformed【英文标题】:Terraform - Error creating NAT Gateway: InvalidElasticIpID.Malformed 【发布时间】:2022-01-18 10:29:19 【问题描述】:

我想使用 Terraform 创建一个具有固定公共 IP 地址的 ***,我可以将其分配给我们的 Lambda 函数。

我找到了这篇博文和执行此操作的代码:

博文:https://jaffarshaik.medium.com/implementing-vpc-architecture-using-terraform-3de6c42d7646 Github:https://github.com/Jaffarterraform786/vpc

但是,当我运行脚本时,我得到了这个错误:

│ Error: Error creating NAT Gateway: InvalidElasticIpID.Malformed: The elastic-ip ID 'aws_eip.ip.id' is malformed
│       status code: 400, request id: 96b26796-931d-4470-85b5-5c46c39889a9
│ 
│   with aws_nat_gateway.natgateway,
│   on natgateway.tf line 1, in resource "aws_nat_gateway" "natgateway":
│    1: resource "aws_nat_gateway" "natgateway" 

这是natgateway.tf文件的内容:

resource "aws_nat_gateway" "natgateway" 
  allocation_id = "aws_eip.ip.id"
  subnet_id     = "aws_subnet.publicsubnet.id"
  tags = 
    name = "prod nategatway"
  
  depends_on = [aws_eip.eip]

我尝试过的事情:

在没有创建其他 VPC 的干净区域上运行脚本 - 仍然无法正常工作 在 Github 上提出了一个问题:https://github.com/Jaffarterraform786/vpc/issues/2 运行 Terraform 检查器以查看是否有任何错误,但未发现任何错误。

我需要更改脚本中的任何线索或内容?

【问题讨论】:

你实际运行的 TF 代码是什么? @Marcin 我在github.com/Jaffarterraform786/vpc运行代码 【参考方案1】:

natgateway.tf 中有错误的字符串。更正的版本是:

resource "aws_nat_gateway" "natgateway" 
  allocation_id = aws_eip.eip.id
  subnet_id     = aws_subnet.publicsubnet.id
  tags = 
    name = "prod nategatway"
  
  depends_on = [aws_eip.eip]

请注意,我不检查 VPC 或其其他资源的有效性。我只是解决您报告的错误。

【讨论】:

嗨@Marcin,如果可以的话,我想补充一点。我查看了 repo,使用depends_on 上的Internet Gateway 资源比使用EIP 更好。 Internet Gateway 可能由于多种原因而失败,但 EIP 很容易创建,并且可以为 Nat Gateway terraform 资源提供“误报”。

以上是关于Terraform - 创建 NAT 网关时出错:InvalidElasticIpID.Malformed的主要内容,如果未能解决你的问题,请参考以下文章

使用 Terraform 创建 AWS-OPSWORK-STACK 时出错

使用 terraform 创建 lambda 函数时出错获取验证错误

使用 Terraform 创建 AWS MySQL RDS 实例时出错

在 azure 中使用 terraform 为应用服务创建自动缩放规则时出错

配置 Terraform AWS 提供程序时出错 - Linux

Terraform AWS 中转网关和 *** 静态路由