将预先存在的静态(弹性)IP 分配给 EC2 实例

pka*_*mol 8 amazon-web-services terraform terraform-provider-aws

假设我的 AWS 账户上已有弹性 IP。

由于超出此问题范围的原因,此 EIP 不是(也不能)通过 Terraform 进行管理。

我知道想要将此 EIP(例如11.22.33.44)分配给我通过 TF 创建的 EC2 实例

传统方法当然是通过 TF 创建 EIP 和 EC2 实例

resource "aws_eip" "my_instance_eip" {
  instance = "my_instance.id"
  vpc      = true
}

resource "aws_eip_association" "my_eip_association" {
  instance_id   = "my_instance.id"
  allocation_id = "aws_eip.my_instance_eip.id"
}

Run Code Online (Sandbox Code Playgroud)

然而,有没有办法让 EC2 通过 TF 知道它应该被分配为 EIP,11.22.33.44这在 TF 生命周期之外?

Mar*_*cin 6

您可以使用aws_eip数据源获取现有 EIP 的信息,然后在您的aws_eip_association

data "aws_eip" "my_instance_eip" {
  public_ip = "11.22.33.44"
}

resource "aws_eip_association" "my_eip_association" {
  instance_id   = aws_instance.my_instance.id
  allocation_id = data.aws_eip.my_instance_eip.id
}

Run Code Online (Sandbox Code Playgroud)