Terraform aws_flow_log 未添加 IAM 角色 ARN

Terraform aws_flow_log not adding IAM role ARN

每次 运行 terraform apply aws_flow_log 资源的每个实例都需要更改

# module.us-west-2.aws_flow_log.flow_log[1] must be replaced
-/+ resource "aws_flow_log" "flow_log" {
      ...
      + iam_role_arn             = "arn:aws:iam::xxx:role/vpc-flow-log-role" # forces replacement
      ...

当我访问 AWS 控制台中的 vpc 时,我发现 IAM 角色 ARN 不存在。

还有其他人遇到过这个问题吗?在这种情况下,日志目标是 s3 存储桶而不是 cloudwatch_log_group。所以,这是无关紧要的:https://github.com/hashicorp/terraform-provider-aws/pull/6377.

我解决了我的问题。如果 log_destination 设置为 s3 存储桶,则无需指定 iam_role_arn,您可以像这样从资源中删除参数:

resource aws_flow_log flow_log{
    log_destination = var.log_destination
    log_destination_type = var.log_destination_type
    traffic_type = var.traffic_type
    vpc_id = var.aws_vpc_id
    depends_on = [ var.log_destination ]
}

而不是

resource aws_flow_log flow_log{
    iam_role_arn = aws_iam_role.vpc_flow_log.arn
    log_destination = var.log_destination
    log_destination_type = var.log_destination_type
    traffic_type = var.traffic_type
    vpc_id = var.aws_vpc_id
    depends_on = [ var.log_destination ]
}

在这种情况下 var.log_destination_type 是“s3”。