Him*_*oel 3 amazon-web-services terraform
我在 terraform 中遇到一个问题,我想阅读通过 AWS Web 控制台创建的某些现有资源 (r1) 的详细信息。我正在通过 terraform 在新资源 (r2) 上创建这些细节。
问题是它试图破坏和重新创建不需要的资源,因为它会失败。当我执行 terraform apply 时,我如何设法不破坏和重新创建 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"
}
Run Code Online (Sandbox Code Playgroud)
首先我导入该资源
terraform import aws_lb.r1 {my_arn}
Run Code Online (Sandbox Code Playgroud)
接下来我应用地形
terraform apply
Run Code Online (Sandbox Code Playgroud)
错误
aws_lb.r1: Error deleting LB: ResourceInUse: Load balancer 'my_arn' cannot be deleted because it is currently associated with another service
Run Code Online (Sandbox Code Playgroud)
该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"
}
Run Code Online (Sandbox Code Playgroud)
lifecycle
您可以在resource "aws_lb" "r1"
(请参阅: https: //www.terraform.io/docs/configuration/resources.html#lifecycle )中添加配置块,以告诉 Terraform 忽略资源中的更改。
我想这样的事情应该有效:
resource "aws_lb" "r1"{
lifecycle {
ignore_changes = ["*"]
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4843 次 |
最近记录: |