首页 > 解决方案 > Terraform 配置 LB 属性失败

问题描述

我在 StackOverflow上关注了这篇文章的第一个答案,但我收到了这个错误:

配置 LB 属性失败:InvalidConfigurationRequest: Access Denied for bucket: myproject-log。请查看 S3bucket 权限状态码:400

这是我的代码:

s3_bucket

data "aws_elb_service_account" "main" {}

resource "aws_s3_bucket" "bucket_log" {
  bucket = "${var.project}-log"
  acl    = "log-delivery-write"

policy = <<POLICY
{
  "Id": "Policy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::${var.project}-log/AWSLogs/*",
      "Principal": {
        "AWS": [
          "${data.aws_elb_service_account.main.arn}"
        ]
      }
    }
  ]
}
POLICY

}

负载均衡器

resource "aws_lb" "vm_stage" {
  name = "${var.project}-lb-stg"
  internal           = false
  load_balancer_type = "application"
  subnets         = [aws_subnet.subnet_1.id, aws_subnet.subnet_2.id, aws_subnet.subnet_3.id]
  security_groups = [aws_security_group.elb_project_stg.id]
  access_logs {
    bucket  = aws_s3_bucket.bucket_log.id
    prefix  = "lb-stg"
    enabled = true
  }
  tags = {
    Name = "${var.project}-lb-stg"
  }
}

标签: amazon-web-servicesterraformterraform-provider-aws

解决方案


根据这篇文章,我能够通过禁用 KMS 并使用 SSE-S3 进行存储桶加密来解决此问题。此外,AWS 文档中还列出了其他权限。


推荐阅读