“Access Denied for bucket: Please check S3bucket permission” Load Balancer 로그 설정 에러 해결

Load Balancer에서 액세스 로그를 설정할 때 나타나는 "Access Denied for bucket: Please check S3bucket permission" 에러를 해결하는 방법에 대해 정리해 봤습니다.
2022.01.29

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Load Balancer에서 액세스 로그를 설정할 때 나타나는 "Access Denied for bucket: Please check S3bucket permission" 에러를 해결하는 방법에 대해 정리해 봤습니다.

Load Balancer에서 액세스 로그를 설정

Load Balancer 속성 카테고리에서「속성 편집」버튼을 클릭합니다.

액세스 로그를 체크하고 현재 S3 버킷의 위치를 적고 저장합니다.

하지만 다음과 같이 "Access Denied for bucket: Please check S3bucket permission" 퍼미션 에러가 나타납니다.

에러 해결 방안

S3 버킷이 없는 경우

생성해둔 S3 버킷이 없는 경우「내 대신 이 위치를 생성」을 체크하고 저장을 누르면 액세스 권한을 가진 S3가 자동으로 생성 됩니다.

S3 서비스로 들어가서 확인해 보면, S3 버킷이 생성되어 있고, Load Balancer 로그 파일이 생성된 것을 확인할 수 있습니다.

기존 S3 버킷을 사용할 경우

S3에서 버킷 정책을 편집합니다.

{
    "Version": "2012-10-17",
    "Id": "AWSConsole-AccessLogs-Policy",
    "Statement": [
        {
            "Sid": "AWSConsoleStmt",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ALBAccountId:root"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::YourBucketName/AWSLogs/YourAWSAccountID/*"
        },
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::YourBucketName/AWSLogs/YourAWSAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::YourBucketName"
        }
    ]
}
  • YourBucketName에는 액세스 로그를 저장할 버킷 이름을 입력
  • YourAWSAccountID 현재 AWS Account ID(숫자)를 입력
  • ALBAccountId에는 아래 표에 맞춰서 입력

한국의 경우 600734575887을 입력하면 됩니다.

마지막으로 Load Balancer에서 로그 액세스를 설정하고, Load Balancer DNS 주소로 접속한 다음, S3를 확인해 보면 성공적으로 로그가 찍히는 것을 볼 수 있습니다.

참고