java.nio.file.AccessDeniedException

Volc·2025년 2월 3일
0

Error

목록 보기
68/71

Error

  • databricks에서 s3 bucket에 csv 형태로 저장하려니 다음과 같은 에러가 발생하였다.

  • 실행 코드

    login_history = spark.read.table("t_login_history").filter((first_date <= col('login_dtm')) & (col('login_dtm') < dt))
    login_history.coalesce(1).write.mode('overwrite').option('header', 'true').csv(temp_path)
  • 발생 Error

    java.nio.file.AccessDeniedException

원인

  • bucket 정책을 제대로 설정을 하지 않아 발생한 error이다.

해결

  • bucket에 접근 할 수 있는 IAM 사용자 권한 설정만 하면 되는 줄 알았는데 bucket 정책도 설정하여 상호작용으로 둘 다 설정해야하는 것이었다.

  • bucket 정책 설정

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "GEO_MI permissions",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::9xxxxxxxxx8:role/iam-role"
              },
              "Action": [
                  "s3:GetBucketLocation",
                  "s3:ListBucket",
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject",
                  "s3:PutObjectAcl"
              ],
              "Resource": [
                  "arn:aws:s3:::bucket-name",
                  "arn:aws:s3:::bucket-name/*"
              ]
          },
          {
              "Sid": "AllowSSLRequestsOnly",
              "Effect": "Deny",
              "Principal": "*",
              "Action": "s3:*",
              "Resource": [
                  "arn:aws:s3:::bucket-name",
                  "arn:aws:s3:::bucket-name/*"
              ],
              "Condition": {
                  "Bool": {
                      "aws:SecureTransport": "false"
                  }
              }
          }
      ]
    }

    아래 AllowSSLRequestsOnly 설정은 보안 설정으로 SSL을 사용하지 않는 요청은 거절하는 설정이다.

profile
미래를 생각하는 개발자

0개의 댓글

관련 채용 정보