TerraformでALBのログをS3に指定したら権限エラーになったので対応等記録しておきます。
エラーメッセージ
1 2 |
Error: Failure configuring LB attributes: InvalidConfigurationRequest: Access Denied for bucket: hoge-xxx-log. Please check S3bucket permission status code: 400, request id: xxx |
対応
S3の権限は他と比べると特殊な点があります。
アカウントがS3にアクセスするポリシーは、他のリソース同様でIAMに設定しますが、S3にはバケット毎のバケットポリシーがあります。
このバケットポリシーにALBからのアクセスを許可しておく必要があります。
バケットポリシー参考
1 |
arn:aws:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/* |
このAWSLogsというところは固定の為、全部小文字や大文字に出来ません。今回全部小文字にした事によるエラーだったようです。
TerraformによるALB
https://www.terraform.io/docs/providers/aws/r/lb.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
resource "aws_lb" "test" { name = "test-lb-tf" internal = false load_balancer_type = "application" security_groups = ["${aws_security_group.lb_sg.id}"] subnets = ["${aws_subnet.public.*.id}"] enable_deletion_protection = true access_logs { bucket = "${aws_s3_bucket.lb_logs.bucket}" prefix = "test-lb" enabled = true } tags = { Environment = "production" } } |