首页 > 解决方案 > Terraform 读取现有资源的详细信息

问题描述

我在 terraform 中遇到了一个问题,我想阅读通过 AWS Web 控制台创建的一些现有资源 (r1) 的详细信息。我在通过 terraform 创建新资源 (r2) 时使用这些细节。

问题是它试图破坏并重新创建不需要的资源,因为它将失败。当我应用 terraform 时,如何设法不破坏和重新创建 r1。

这是我的做法:

主文件

resource "aws_lb" "r1"{

}

...

resource "aws_api_gateway_integration" "r2" {

  type                    = "HTTP"
  uri                     = "${aws_lb.r1.dns_name}}/o/v1/multi/get/m/content"
}

首先我导入该资源

 terraform import aws_lb.r1 {my_arn}

接下来我应用 terraform

terraform apply

错误

 aws_lb.r1: Error deleting LB: ResourceInUse: Load balancer 'my_arn' cannot be deleted because it is currently associated with another service

标签: amazon-web-servicesterraform

解决方案


import语句用于控制 Terraform 设置中的现有资源

如果您的唯一目的是获取有关现有资源的信息(在 Terraform 控件之外),则数据源专为满足此需求而设计:

data "aws_lb" "r1" {
    name = "lb_foo"
    arn = "some_specific_arn" #you can use any selector you wish to query the correct LB
}

resource "aws_api_gateway_integration" "r2" {
    type = "HTTP"
    uri = "${data.aws_lb.r1.dns_name}/o/v1/multi/get/m/content"
}

推荐阅读