有没有一种方法可以使用 terraform 在 aws 中的现有应用程序负载均衡器上添加访问日志

问题描述 投票:0回答:2

我使用 k8 的 helm 图表创建了 ALB。现在我想使用 terraform 在其之上启用访问日志。我正在尝试使用数据源,但它似乎不起作用,而且我在计划时遇到错误。

data "aws_lb" "ecs_public_alb" {
  name = "my-load-balancer-name"
}

resource "aws_lb" "example" {
  arn                = data.aws_lb.existing_lb.arn
  load_balancer_type = "application"

  access_logs {
    bucket  = "example-bucket"
    prefix  = "lb-access-logs"
    enabled = true
  }

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

我得到的错误是

Can't configure a value for "arn": its value will be decided automatically based on the result of applying this configuration.

不确定这里出了什么问题

amazon-web-services terraform aws-application-load-balancer
2个回答
0
投票

你必须先 import 你的 alb 到 TF,然后你才能使用 TF 修改它。你现在用

resource "aws_lb" "example"
做的是尝试创建新的白蛋白,而不是使用现有的白蛋白。


0
投票

您的错误的近端原因是

arn
是一个只读属性,您不能写入它。
arn
将在资源创建后由 AWS 设置。

真正的问题是你需要决定用什么来管理负载均衡器,Helm 还是 Terraform。您不能同时使用两种方法,先使用 Helm 创建负载均衡器,然后使用 Terraform 对其进行修改。如果您尝试更新或协调 Helm 图表,它将删除日志记录配置。

这是我会做的:

  • 移除 Helm 版本并销毁负载均衡器
  • 使用日志配置在 Terraform 中创建一个新的负载均衡器

如果你绝对不能重新创建负载均衡器,那么想办法阻止 Helm 将来管理它。

Source:我曾尝试让Kubernetes和Terraform分担资源的管理职责,但惨败。最好有明确的界限,只有一个系统管理资源。

© www.soinside.com 2019 - 2024. All rights reserved.