TerraformでALBのログをS3に指定したら権限エラー

TerraformでALBのログをS3に指定したら権限エラー

TerraformでALBのログをS3に指定したら権限エラーになったので対応等記録しておきます。

エラーメッセージ

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からのアクセスを許可しておく必要があります。

バケットポリシー参考

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-access-logs.html

arn:aws:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/*

このAWSLogsというところは固定の為、全部小文字や大文字に出来ません。今回全部小文字にした事によるエラーだったようです。

TerraformによるALB

https://www.terraform.io/docs/providers/aws/r/lb.html

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"
  }
}

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です