Я пытаюсь развернуть некоторый код terraform в среде AWS, для которой у меня есть настройка доступа администратора. Цель этого кода — отправить журналы из балансировщика нагрузки приложения в корзину S3. Код может создать ведро без проблем, но когда дело доходит до его части, я получаю следующую ошибку:
У меня возникли проблемы, как обойти эту ошибку. Ниже приведен мой код для создания балансировщика нагрузки, корзины S3, а также политика, которую я реализовал для ведения журнала. Любые советы будут полезны. Заранее спасибо.
Ведро S3
data "aws_elb_service_account" "javahome" {}
resource "aws_s3_bucket" "alb_access_logs" {
bucket = var.alb_s3_logs
acl = "private"
region = var.region
tags = {
Name = "jalb-access-logs"
Environment = terraform.workspace
}
policy = templatefile("${path.module}/scripts/iam/alb-s3-access-logs.json", {
bucket_name = var.alb_s3_logs
prefix = var.prefix
policy_arn = data.aws_elb_service_account.javahome.arn
}
)
}
Балансировщик нагрузки приложений
resource "aws_lb" "javahome" {
name = var.alb_name
internal = false
load_balancer_type = var.lb_type
security_groups = [aws_security_group.elb_sg.id]
subnets = local.pub_sub_ids
access_logs {
bucket = aws_s3_bucket.alb_access_logs.bucket
prefix = var.prefix
enabled = true
}
tags = {
Environment = terraform.workspace
}
}
Политика
{
"Version": "2012-10-17",
"Id": "javahome-alb-pilicy",
"Statement": [
{
"Sid": "root-access",
"Effect": "Allow",
"Principal": {
"AWS": "${policy_arn}"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::${bucket_name}/${prefix}/AWSLogs/*"
},
{
"Sid": "log-delivery",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::${bucket_name}/${prefix}/AWSLogs/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "log-delivery-access-check",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::${bucket_name}"
}
]
}