While attempting to enable access logs for an Application Load Balancer (ALB) in AWS, I encountered a permissions error due to insufficient S3 bucket permissions. The error highlighted the need for proper bucket policy settings, which I had initially overlooked.
│ Error: modifying ELBv2 Load Balancer (arn:aws:elasticloadbalancing:ap-northeast-1:************:loadbalancer/app/alb-prod/fbbd3f2304ff9285) attributes: InvalidConfigurationRequest: Access Denied for bucket: logs-prod. Please check S3 bucket permission
Upon reviewing the official documentation, I realized that I had missed configuring the bucket policy.
Official AWS Documentation on Enabling Access Logging
Here's how I resolved the error using Terraform, which might be helpful if you encounter a similar issue.
S3 Bucket Setup
I used the bucket name logs-prod
and the prefix alb/alb-prod
. The number 582318560864
represents the AWS account ID for ELB in the Tokyo region. Replace <account-id>
with your own AWS account ID.
resource "aws_s3_bucket" "logs_prod" {
bucket = "logs-prod"
tags = {
Environment = "prod"
}
}
resource "aws_s3_bucket_policy" "logs_prod_policy" {
bucket = aws_s3_bucket.logs_prod.id
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::582318560864:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::logs-prod/alb/alb-prod/AWSLogs/<account-id>/*"
}
]
}
POLICY
}
ALB Configuration
I added an access_logs
block to the ALB setup to enable logging, specify the bucket name, and set the prefix.
resource "aws_lb" "alb_prod" {
name = "alb-prod"
internal = false
load balancer_type = "application"
security_groups = [var.security_group_elb_sg_id]
subnets = [var.subnet_public_1a_id, var.subnet_public_1c_id]
enable_deletion_protection = true
preserve_host_header = true
access_logs {
enabled = true
bucket = "logs-prod"
prefix = "alb/alb-prod"
}
tags = {
Environment = "prod"
}
}
By applying these settings, I ensured correct and secure logging from the ALB to the specified S3 bucket.
Top comments (0)